Exemplo n.º 1
0
 def showPet(self):
     self.nameLabel = DirectLabel(parent=self,
                                  pos=(0, 0, 1.35),
                                  relief=None,
                                  text=self.petName[self.curPet],
                                  text_fg=Vec4(0.45, 0, 0.61, 1),
                                  text_pos=(0, 0),
                                  text_scale=0.08,
                                  text_shadow=(1, 1, 1, 1))
     self.petModel = Pet.Pet(forGui=1)
     self.petModel.setDNA(self.petDNA[self.curPet])
     self.petModel.fitAndCenterHead(0.57, forGui=1)
     self.petModel.reparentTo(self.petView)
     self.petModel.setH(130)
     self.petModel.enterNeutralHappy()
     self.descLabel = DirectLabel(
         parent=self,
         pos=(-0.4, 0, 0.72),
         relief=None,
         scale=0.05,
         text=self.petDesc[self.curPet],
         text_align=TextNode.ALeft,
         text_wordwrap=TTLocalizer.PGUIwordwrap,
         text_scale=TTLocalizer.PGUIdescLabel)
     if self.petCost[self.curPet] > base.localAvatar.getTotalMoney():
         self.okButton['state'] = DGG.DISABLED
     else:
         self.okButton['state'] = DGG.NORMAL
     return
Exemplo n.º 2
0
 def showDialog(avatar):
     avatar.announceGenerate()
     avatar.postGenerateMessage()
     model = loader.loadModel('phase_4/models/gui/ReturnPet')
     modelPos = (0, 0, -0.3)
     modelScale = (0.055, 0.055, 0.055)
     base.r = self
     DirectFrame.__init__(self, relief=None, state='normal', geom=model, geom_scale=modelScale, frameSize=(-1,
                                                                                                           1,
                                                                                                           -1,
                                                                                                           1), pos=modelPos, text=TTLocalizer.PetshopReturnConfirm % avatar.getName(), text_wordwrap=12, text_scale=TTLocalizer.PGUIreturnConfirm, text_pos=(0,
                                                                                                                                                                                                                                                             0.45), text_fg=text2Color)
     self.initialiseoptions(PetshopGUI.ReturnPetDlg)
     okImageList = (model.find('**/CheckButtonUp'), model.find('**/CheckButtonDown'), model.find('**/CheckRollover'))
     cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelRollover'))
     cancelIcon = model.find('**/CancelIcon')
     checkIcon = model.find('**/CheckIcon')
     self.cancelButton = DirectButton(parent=self, relief=None, image=cancelImageList, geom=cancelIcon, scale=modelScale, text=('', TTLocalizer.PetshopGoBack), text_pos=(-5.8,
                                                                                                                                                                          4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [0]))
     self.okButton = DirectButton(parent=self, relief=None, image=okImageList, geom=checkIcon, scale=modelScale, text=('', TTLocalizer.PetshopReturn), text_pos=(5.8,
                                                                                                                                                                 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [1]))
     self.petView = self.attachNewNode('petView')
     self.petView.setPos(-0.15, 0, 0.8)
     self.petModel = Pet.Pet(forGui=1)
     self.petModel.setDNA(avatar.getDNA())
     self.petModel.fitAndCenterHead(0.395, forGui=1)
     self.petModel.reparentTo(self.petView)
     self.petModel.setH(130)
     self.petModel.enterNeutralSad()
     model.removeNode()
     self.initialized = True
     return
Exemplo n.º 3
0
 def __fillPetInfo(self, avatar):
     self.notify.debug('__fillPetInfo(): doId=%s' % avatar.doId)
     self.petView = self.frame.attachNewNode('petView')
     self.petView.setPos(0, 0, 5.4)
     if hasattr(avatar, 'announceGenerate'):
         avatar.announceGenerate()
     self.petModel = Pet.Pet(forGui=1)
     self.petModel.setDNA(avatar.getDNA())
     self.petModel.fitAndCenterHead(3.575, forGui=1)
     self.petModel.reparentTo(self.petView)
     self.petModel.setScale(0.6)
     self.petModel.enterNeutralHappy()
     self.petModel.startBlink()
     self.nameLabel = DirectLabel(parent=self.frame,
                                  pos=(0, 0, 5.2),
                                  relief=None,
                                  text=avatar.getName(),
                                  text_font=avatar.getFont(),
                                  text_fg=Vec4(0, 0, 0, 1),
                                  text_pos=(0, 0),
                                  text_scale=0.4,
                                  text_wordwrap=7.5,
                                  text_shadow=(1, 1, 1, 1))
     self.stateLabel = DirectLabel(
         parent=self.frame,
         pos=TTLocalizer.PAPstateLabelPos,
         relief=None,
         text='',
         text_font=avatar.getFont(),
         text_fg=Vec4(0, 0, 0, 1),
         text_scale=TTLocalizer.PAPstateLabel,
         text_wordwrap=TTLocalizer.PAPstateLabelWordwrap,
         text_shadow=(1, 1, 1, 1))
     self.__refreshPetInfo(avatar)
Exemplo n.º 4
0
 def __init__(self, doneEvent, petSeed, petNameIndex):
     zoneId = ZoneUtil.getCanonicalSafeZoneId(base.localAvatar.getZoneId())
     name, dna, traitSeed = PetUtil.getPetInfoFromSeed(petSeed, zoneId)
     name = PetNameGenerator.PetNameGenerator().getName(petNameIndex)
     cost = PetUtil.getPetCostFromSeed(petSeed, zoneId)
     model = loader.loadModel('phase_4/models/gui/AdoptPet')
     modelPos = (0, 0, -0.3)
     modelScale = 0.055
     DirectFrame.__init__(self, relief=None, state='normal', geom=model, geom_color=ToontownGlobals.GlobalDialogColor, geom_scale=modelScale, frameSize=(-1, 1, -1, 1), pos=modelPos, text=TTLocalizer.PetshopAdoptConfirm % (name, cost), text_wordwrap=12, text_scale=0.05, text_pos=(0, 0.55), text_fg=text0Color)
     self.initialiseoptions(PetshopGUI.AdoptPetDlg)
     self.petView = self.attachNewNode('petView')
     self.petView.setPos(-0.13, 0, 0.8)
     self.petModel = Pet.Pet(forGui=1)
     self.petModel.setDNA(dna)
     self.petModel.fitAndCenterHead(0.395, forGui=1)
     self.petModel.reparentTo(self.petView)
     self.petModel.setH(130)
     self.petModel.enterNeutralHappy()
     self.moneyDisplay = DirectLabel(parent=self, relief=None, text=str(base.localAvatar.getTotalMoney()), text_scale=0.075, text_fg=(0.95, 0.95, 0, 1), text_shadow=(0, 0, 0, 1), text_pos=(0.225, 0.33), text_font=ToontownGlobals.getSignFont())
     self.accept(localAvatar.uniqueName('moneyChange'), self.__moneyChange)
     self.accept(localAvatar.uniqueName('bankMoneyChange'), self.__moneyChange)
     okImageList = (model.find('**/CheckButtonUp'), model.find('**/CheckButtonDown'), model.find('**/CheckButtonRollover'))
     cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelRollover'))
     cancelIcon = model.find('**/CancelIcon')
     checkIcon = model.find('**/CheckIcon')
     self.cancelButton = DirectButton(parent=self, relief=None, image=cancelImageList, geom=cancelIcon, scale=modelScale, text=('', TTLocalizer.PetshopGoBack), text_pos=(-5.8, 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [0]))
     self.okButton = DirectButton(parent=self, relief=None, image=okImageList, geom=checkIcon, scale=modelScale, text=('', TTLocalizer.PetshopAdopt), text_pos=(5.8, 4.4), text_scale=0.7, pressEffect=False, command=lambda : messenger.send(doneEvent, [1]))
     model.removeNode()
     return
 def __fillPetInfo(self, avatar):
     self.notify.debug('__fillPetInfo(): doId=%s' % avatar.doId)
     if self.nameLabel == None:
         self.petView = self.frame.attachNewNode('petView')
         self.petView.setPos(0, 0, 5.4)
         self.petModel = Pet.Pet(forGui=1)
         self.petModel.setDNA(avatar.getDNA())
         self.petModel.fitAndCenterHead(3.575, forGui=1)
         self.petModel.reparentTo(self.petView)
         self.petModel.enterNeutralHappy()
         self.petModel.startBlink()
         self.nameLabel = DirectLabel(parent=self.frame,
                                      pos=(0, 0, 5.2),
                                      relief=None,
                                      text=avatar.getName(),
                                      text_font=avatar.getFont(),
                                      text_fg=Vec4(0, 0, 0, 1),
                                      text_pos=(0, 0),
                                      text_scale=0.4,
                                      text_wordwrap=7.5,
                                      text_shadow=(1, 1, 1, 1))
         self.stateLabel = DirectLabel(parent=self.frame,
                                       pos=(0.7, 0, 3.5),
                                       relief=None,
                                       text='',
                                       text_font=avatar.getFont(),
                                       text_fg=Vec4(0, 0, 0, 1),
                                       text_scale=0.4,
                                       text_wordwrap=7.5,
                                       text_shadow=(1, 1, 1, 1))
     self.__refreshPetInfo(avatar)
     return
 def load(self):
     SafeZoneLoader.load(self)
     self.flippy = NPCToons.createLocalNPC(2001)
     self.flippy.reparentTo(render)
     self.flippy.setPickable(0)
     self.flippy.setPos(188, -260, 11.187)
     self.flippy.setH(108.411)
     self.flippy.initializeBodyCollisions('toon')
     self.flippy.addActive()
     self.flippy.startBlink()
     # Just keeping things relevant to 2.5.2, keeping away from TTR and TTO phrases...
     self.flippyBlatherSequence = Sequence(Wait(10), Func(self.flippy.setChatAbsolute, 'Hello and welcome Toons, far and wide!', CFSpeech | CFTimeout), Func(self.flippy.play, 'wave'), Func(self.flippy.loop, 'neutral'), Wait(12), Func(self.flippy.setChatAbsolute, "It's been a great time at Toontown, with you helping us stop the Cogs from ruining the experience with their destructive bugs, and we're glad you could join us!", CFSpeech | CFTimeout), Wait(10), Func(self.flippy.setChatAbsolute, "Oh, don't mind the little guy back there. That's my new-found lovable yet mysterious pet, Fluffy. That's what he calls himself.", CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, "He came out of nowhere...", CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute,  "Just when I thought Toontown couldn't be any sillier! He's a real rascal, but he already has the Cog-fighting down to a science!", CFSpeech | CFTimeout), Wait(12), Func(self.flippy.setChatAbsolute, 'Doctor Surlee says he\'s some sort of creature called a "Doodle". Funny name, right?', CFSpeech | CFTimeout), Wait(16), Func(self.flippy.setChatAbsolute, "He also says Fluffy might have some friends and we may learn more about them soon.", CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, 'Anyway, what are you waiting for?', CFSpeech | CFTimeout), Wait(8), Func(self.flippy.setChatAbsolute, 'Grab some pies and go for a spin. ToonFest is in full swing!', CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute, 'Buddy over there has made a few mistakes at the office so I have asked him to manage the balloon ride.', CFSpeech | CFTimeout), Wait(13), Func(self.flippy.setChatAbsolute, 'Hop in the balloon with Buddy and have a ride.', CFSpeech | CFTimeout))
     self.flippyBlatherSequence.loop()
     self.fluffy = Pet.Pet()
     self.fluffy.addActive()
     self.flippy.startBlink()
     self.fluffy.setDNA(PetDNA.getRandomPetDNA())
     self.fluffy.setName('Fluffy')
     self.fluffy.setPickable(0)
     self.fluffy.reparentTo(render)
     self.fluffy.setPos(191, -263, 11.382)
     self.fluffy.setH(829)
     self.fluffy.enterNeutralHappy()
     self.fluffy.initializeBodyCollisions('pet')
     try:
         self.towerGeom = self.geom.find('**/toonfest_tower_DNARoot')
         self.base1 = self.towerGeom.find('**/base1')
         self.base2 = self.towerGeom.find('**/base2')
         self.base3 = self.towerGeom.find('**/base3')
     except:
         self.notify.warning('Something messed up loading the tower bases!')
Exemplo n.º 7
0
def createDoodle(name,
                 head,
                 ears,
                 nose,
                 tail,
                 body,
                 color,
                 colorScale,
                 eyes,
                 gender,
                 x=0,
                 y=0,
                 z=0,
                 h=0,
                 p=0,
                 r=0,
                 parent=render,
                 coll=True):
    doodle = Pet.Pet()
    doodle.setDNA(
        [head, ears, nose, tail, body, color, colorScale, eyes, gender])
    doodle.setName(name)
    doodle.setPickable(0)
    doodle.reparentTo(parent)
    doodle.setPosHpr(x, y, z, h, p, r)
    doodle.enterNeutralHappy()
    if coll:
        doodle.initializeBodyCollisions('pet')
    return doodle
 def getPicture(self, avatar):
     from toontown.pets import PetDNA, Pet
     pet = Pet.Pet(forGui=1)
     dna = PetDNA.getRandomPetDNA()
     pet.setDNA(dna)
     pet.setH(180)
     model, ival = self.makeFrameModel(pet, 0)
     pet.setScale(2.0)
     pet.setP(-40)
     track = PetTricks.getTrickIval(pet, self.trickId)
     name = 'petTrick-item-%s' % self.sequenceNumber
     CatalogPetTrickItem.sequenceNumber += 1
     if track is not None:
         track = Sequence(
             Sequence(track),
             ActorInterval(
                 pet,
                 'neutral',
                 duration=2),
             name=name)
     else:
         pet.animFSM.request('neutral')
         track = Sequence(Wait(4), name=name)
     self.petPicture = pet
     self.hasPicture = True
     return model, track
Exemplo n.º 9
0
def __healJuggle(heal):
    """ __healJuggle(heal)
    """
    petProxyId = heal['petId']
    pet = Pet.Pet()
    gender = 0
    if base.cr.doId2do.has_key(petProxyId):
        petProxy = base.cr.doId2do[petProxyId]
        if (petProxy == None):
            return
        pet.setDNA(petProxy.style)
        pet.setName(petProxy.petName)
        gender = petProxy.gender
    else:
        pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1])
        pet.setName('Smiley')
    targets = heal['target']
    ineffective = heal['sidestep']
    level = heal['level']

    # Make a 'sandwich' around the track specific interval
    track = Sequence(__teleportIn(heal, pet))

    # Do the trick (or not)
    if ineffective:
        trickTrack = Parallel(Wait(1.0),
                              Func(pet.loop, 'neutralSad'),
                              Func(pet.showMood, 'confusion')
                              ) 
    else:
        trickTrack = PetTricks.getTrickIval(pet, level)
    track.append(trickTrack)
    
    delay = 4.0
    first = 1
    targetTrack = Sequence()
    for target in targets:
        targetToon = target['toon']
        hp = target['hp']
        callerToonId = heal['toonId']
        reactIval = Func(__healToon, targetToon, hp, gender, callerToonId, ineffective)
        if (first == 1):
            #targetTrack.append(Wait(delay))
            first = 0

        targetTrack.append(reactIval)

    mtrack = Parallel(Wait(2.0),
                      targetTrack)
    track.append(mtrack)
    track.append(Sequence(Func(pet.clearMood)))
    track.append(__teleportOut(heal, pet))
    for target in targets:
        targetToon = target['toon']
        track.append(Func(targetToon.clearChat))
    track.append(Func(pet.delete))
    return track
Exemplo n.º 10
0
        def __init__(self, doneEvent, petSeed, gender):
            zoneId = ZoneUtil.getCanonicalSafeZoneId(base.localAvatar.getZoneId())
            name, dna, traitSeed = PetUtil.getPetInfoFromSeed(petSeed, zoneId)
            self.gui = loader.loadModel('phase_4/models/gui/PetNamePanel')
            self.guiScale = 0.09
            DirectFrame.__init__(self, relief=None, geom=self.gui, geom_scale=self.guiScale, state='normal', frameSize=(-1,
                                                                                                                        1,
                                                                                                                        -1,
                                                                                                                        1))
            self.initialiseoptions(PetshopGUI.NamePicker)
            self.petView = self.attachNewNode('petView')
            self.petView.setPos(-0.21, 0, -0.04)
            self.petModel = Pet.Pet(forGui=1)
            self.petModel.setDNA(dna)
            self.petModel.fitAndCenterHead(0.435, forGui=1)
            self.petModel.reparentTo(self.petView)
            self.petModel.setH(225)
            self.petModel.enterNeutralHappy()
            self.ng = PetNameGenerator.PetNameGenerator()
            if gender == 1:
                self.allNames = self.ng.boyFirsts
            else:
                self.allNames = self.ng.girlFirsts
            self.allNames += self.ng.neutralFirsts
            self.allNames.sort()
            self.checkNames()
            self.letters = []
            for name in self.allNames:
                if name[0:TTLocalizer.PGUIcharLength] not in self.letters:
                    self.letters.append(name[0:TTLocalizer.PGUIcharLength])

            self.curLetter = self.letters[0]
            self.curNames = []
            self.curName = ''
            self.alphabetList = self.makeScrollList(self.gui, (-0.012, 0, -0.075), (1,
                                                                                    0.8,
                                                                                    0.8,
                                                                                    1), self.letters, self.makeLabel, [TextNode.ACenter, 'alphabet'], 6)
            self.nameList = None
            self.rebuildNameList()
            self.randomButton = DirectButton(parent=self, relief=None, image=(self.gui.find('**/RandomUpButton'), self.gui.find('**/RandomDownButton'), self.gui.find('**/RandomRolloverButton')), scale=self.guiScale, text=TTLocalizer.RandomButton, text_pos=(-0.8,
                                                                                                                                                                                                                                                                 -5.7), text_scale=0.8, text_fg=text2Color, pressEffect=False, command=self.randomName)
            self.nameResult = DirectLabel(parent=self, relief=None, scale=self.guiScale, text='', text_align=TextNode.ACenter, text_pos=(-1.85,
                                                                                                                                         2.6), text_fg=text0Color, text_scale=0.6, text_wordwrap=8)
            self.submitButton = DirectButton(parent=self, relief=None, image=(self.gui.find('**/SubmitUpButton'), self.gui.find('**/SubmitDownButton'), self.gui.find('**/SubmitRolloverButton')), scale=self.guiScale, text=TTLocalizer.PetshopAdopt, text_pos=(3.3,
                                                                                                                                                                                                                                                                 -5.7), text_scale=TTLocalizer.PGUIsubmitButton, text_fg=text0Color, pressEffect=False, command=lambda : messenger.send(doneEvent, [self.ng.returnUniqueID(self.curName)]))
            model = loader.loadModel('phase_4/models/gui/PetShopInterface')
            modelScale = 0.1
            cancelImageList = (model.find('**/CancelButtonUp'), model.find('**/CancelButtonDown'), model.find('**/CancelButtonRollover'))
            cancelIcon = model.find('**/CancelIcon')
            self.cancelButton = DirectButton(parent=self, relief=None, pos=(-0.04,
                                                                            0, -0.47), image=cancelImageList, geom=cancelIcon, scale=modelScale, pressEffect=False, command=lambda : messenger.send(doneEvent, [-1]))
            self.randomName()
            return
Exemplo n.º 11
0
def __doPetSOS(heal):
    petProxyId = heal['petId']
    pet = Pet.Pet()
    gender = 0
    if petProxyId in base.cr.doId2do:
        petProxy = base.cr.doId2do[petProxyId]
        if petProxy == None:
            return
        pet.setDNA(petProxy.style)
        pet.setName(petProxy.petName)
        gender = petProxy.gender
    else:
        pet.setDNA([-1, 0, 0, -1, 2, 0, 4, 0, 1])
        pet.setName(TTLocalizer.DefaultDoodleName)
    targets = heal['target']
    ineffective = heal['sidestep']
    level = heal['level']
    track = Sequence(__teleportIn(heal, pet))
    if ineffective:
        trickTrack = Parallel(Wait(1.0), Func(pet.loop, 'neutralSad'),
                              Func(pet.showMood, 'confusion'))
    else:
        trickTrack = PetTricks.getTrickIval(pet, level)
    track.append(trickTrack)
    delay = 4.0
    first = 1
    targetTrack = Sequence()
    for target in targets:
        targetToon = target['toon']
        hp = target['hp']
        callerToonId = heal['toonId']
        reactIval = Func(__healToon, targetToon, hp, gender, callerToonId,
                         ineffective)
        if first == 1:
            first = 0
        targetTrack.append(reactIval)

    mtrack = Parallel(Wait(2.0), targetTrack)
    track.append(mtrack)
    track.append(Sequence(Func(pet.clearMood)))
    track.append(__teleportOut(heal, pet))
    for target in targets:
        targetToon = target['toon']
        track.append(Func(targetToon.clearChat))

    track.append(Func(pet.delete))
    return track
Exemplo n.º 12
0
    def getPicture(self, avatar):
        # Returns a (DirectWidget, Interval) pair to draw and animate a
        # little representation of the item, or (None, None) if the
        # item has no representation.  This method is only called on
        # the client.

        # Don't import this at the top of the file, since this code
        # must run on the AI.
        from toontown.pets import PetDNA, Pet

        pet = Pet.Pet(forGui = 1)

        # We use the avatar's own pet if he/she has a pet (and we know
        # its DNA), otherwise use a random pet.
        dna = avatar.petDNA
        if dna == None:
            dna = PetDNA.getRandomPetDNA()
        pet.setDNA(dna)
        
        pet.setH(180)
        model, ival = self.makeFrameModel(pet, 0)
        pet.setScale(2.0)
        pet.setP(-40)

        # Discard the ival from makeFrameModel, since we don't want to
        # spin.

        track = PetTricks.getTrickIval(pet, self.trickId)
        name = "petTrick-item-%s" % (self.sequenceNumber)
        CatalogPetTrickItem.sequenceNumber += 1
        if track != None:
            track = Sequence(Sequence(track),
                             ActorInterval(pet, 'neutral', duration = 2),
                             name = name)
        else:
            pet.animFSM.request('neutral')
            track = Sequence(Wait(4),
                             name = name)
        self.petPicture = pet

        assert (not self.hasPicture)
        self.hasPicture=True
        
        return (model, track)
Exemplo n.º 13
0
    def __fillPetInfo(self, avatar):
        self.notify.debug("__fillPetInfo(): doId=%s" % avatar.doId)
        #add the view of the pet
        if self.nameLabel == None:
            self.petView = self.frame.attachNewNode('petView')
            self.petView.setPos(0, 0, 5.4)
            self.petModel = Pet.Pet(forGui = 1)
            self.petModel.setDNA(avatar.getDNA())
            self.petModel.fitAndCenterHead(3.575, forGui = 1)
            self.petModel.reparentTo(self.petView)
            self.petModel.enterNeutralHappy()
            self.petModel.startBlink()

            # Put the avatar's name across the top.
            self.nameLabel = DirectLabel(
                parent = self.frame,
                pos = (0, 0, 5.2),
                relief = None,
                text = avatar.getName(),
                text_font = avatar.getFont(),
                text_fg = Vec4(0,0,0,1),
                text_pos = (0, 0),
                text_scale = 0.4,
                text_wordwrap = 7.5,
                text_shadow = (1, 1, 1, 1),
                )

            # Put the avatar's 'state' (biggest need)
            self.stateLabel = DirectLabel(
                parent = self.frame,
                pos = (0.7, 0, 3.5),
                relief = None,
                text = "",
                text_font = avatar.getFont(),
                text_fg = Vec4(0,0,0,1),
                text_scale = 0.4,
                text_wordwrap = 7.5,
                text_shadow = (1, 1, 1, 1),
                )

        self.__refreshPetInfo(avatar)