def canAccess(self, zoneId=None):
     if base.cr.isPaid():
         return True
     allowed = False
     allowedZones = [
         ToontownGlobals.ToontownCentral,
         ToontownGlobals.MyEstate,
         ToontownGlobals.GoofySpeedway,
         ToontownGlobals.Tutorial,
     ]
     specialZones = [ToontownGlobals.SellbotLobby]
     if hasattr(base.cr, "newsManager") and base.cr.newsManager:
         holidayIds = base.cr.newsManager.getHolidayIdList()
         if ToontownGlobals.SELLBOT_NERF_HOLIDAY in holidayIds:
             specialZones.append(ToontownGlobals.SellbotHQ)
     place = base.cr.playGame.getPlace()
     if zoneId:
         myHoodId = ZoneUtil.getCanonicalHoodId(zoneId)
     else:
         myHoodId = ZoneUtil.getCanonicalHoodId(place.zoneId)
     if hasattr(place, "id"):
         myHoodId = place.id
     if myHoodId in allowedZones:
         allowed = True
     elif zoneId and zoneId in specialZones:
         allowed = True
     return allowed
    def enter(self, requestStatus):
        CogHQExterior.CogHQExterior.enter(self, requestStatus)

        for train in self.trains:
            train.show()

        # Load the CogHQ DNA file:
        dnaStore = DNAStorage()
        dnaFileName = self.genDNAFileName(self.zoneId)
        loadDNAFileAI(dnaStore, dnaFileName)

        # Collect all of the vis group zone IDs:
        self.zoneVisDict = {}
        for i in xrange(dnaStore.getNumDNAVisGroupsAI()):
            groupFullName = dnaStore.getDNAVisGroupName(i)
            visGroup = dnaStore.getDNAVisGroupAI(i)
            visZoneId = int(base.cr.hoodMgr.extractGroupName(groupFullName))
            visZoneId = ZoneUtil.getTrueZoneId(visZoneId, self.zoneId)
            visibles = []
            for i in xrange(visGroup.getNumVisibles()):
                visibles.append(int(visGroup.getVisible(i)))
            visibles.append(ZoneUtil.getBranchZone(visZoneId))
            self.zoneVisDict[visZoneId] = visibles

        # Next, we want interest in all vis groups due to this being a Cog HQ:
        base.cr.sendSetZoneMsg(self.zoneId, self.zoneVisDict.values()[0])
Ejemplo n.º 3
0
    def enter(self):
        ShtikerPage.ShtikerPage.enter(self)
        try:
            zone = base.cr.playGame.getPlace().getZoneId()
        except:
            zone = 0

        if base.localAvatar.lastHood >= ToontownGlobals.BossbotHQ:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToCogHQ
        else:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToPlayground
        if zone and ZoneUtil.isPlayground(zone) or self.book.safeMode:
            self.safeZoneButton.hide()
        else:
            self.safeZoneButton.show()
        if base.cr.playGame.getPlaceId() == ToontownGlobals.MyEstate and base.cr.playGame.hood.loader.atMyEstate() or self.book.safeMode:
            self.goHomeButton.hide()
        elif base.housingEnabled:
            self.goHomeButton.show()
        if base.cr.playGame.getPlaceId() == ToontownGlobals.MyEstate:
            if base.cr.playGame.hood.loader.atMyEstate():
                self.hoodLabel['text'] = TTLocalizer.MapPageYouAreAtHome
                self.hoodLabel.show()
            else:
                avatar = base.cr.identifyAvatar(base.cr.playGame.hood.loader.estateOwnerId)
                if avatar:
                    avName = avatar.getName()
                    self.hoodLabel['text'] = TTLocalizer.MapPageYouAreAtSomeonesHome % TTLocalizer.GetPossesive(avName)
                    self.hoodLabel.show()
        elif zone:
            hoodName = ToontownGlobals.hoodNameMap.get(ZoneUtil.getCanonicalHoodId(zone), ('',))[-1]
            streetName = ToontownGlobals.StreetNames.get(ZoneUtil.getCanonicalBranchZone(zone), ('',))[-1]
            if hoodName:
                self.hoodLabel['text'] = TTLocalizer.MapPageYouAreHere % (hoodName, streetName)
                self.hoodLabel.show()
            else:
                self.hoodLabel.hide()
        else:
            self.hoodLabel.hide()
        safeZonesVisited = base.localAvatar.hoodsVisited
        hoodTeleportList = base.localAvatar.getTeleportAccess()
        for hood in self.allZones:
            label = self.labels[self.allZones.index(hood)]
            clouds = self.clouds[self.allZones.index(hood)]
            if not self.book.safeMode and hood in safeZonesVisited:
                label['text_fg'] = (0, 0, 0, 1)
                label.show()
                for cloud in clouds:
                    cloud.hide()

                fullname = base.cr.hoodMgr.getFullnameFromId(hood)
                if hood in hoodTeleportList:
                    text = TTLocalizer.MapPageGoTo % fullname
                    label['text'] = ('', text, text)
                else:
                    label['text'] = ('', fullname, fullname)
            else:
                label.hide()
                for cloud in clouds:
                    cloud.show()
 def enteringARace(self, status):
     if not status["where"] == "golfcourse":
         return 0
     if ZoneUtil.isDynamicZone(status["zoneId"]):
         return status["hoodId"] == self.hood.hoodId
     else:
         return ZoneUtil.getHoodId(status["zoneId"]) == self.hood.hoodId
Ejemplo n.º 5
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []
        dnaData = base.cr.playGame.dnaData
        for questIndex in self.av.questPage.quests.keys():
            questDesc = self.av.questPage.quests.get(questIndex)
            if questDesc is None:
                continue
            mapIndex = questIndex + 1
            questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
            quest = Quests.getQuest(questId)
            fComplete = quest.getCompletionStatus(self.av, questDesc) == Quests.COMPLETE
            if not fComplete:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo, mapIndex=mapIndex)
                    continue
                elif quest.getType() != Quests.DeliverGagQuest and quest.getType() != Quests.DeliverItemQuest and quest.getType() != Quests.VisitQuest and quest.getType() != Quests.TrackChoiceQuest:
                    continue
            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
            else:
                npcZone = NPCToons.getNPCZone(toNpcId)
                hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
                branchId = ZoneUtil.getCanonicalBranchZone(npcZone)
                if self.hoodId == hoodId and self.zoneId == branchId:
                    for blockId, block in dnaData.getBlocks():
                        zone = block.zone
                        branchZone = zone - zone % 100
                        finalZone = branchZone + 500 + blockId
                        if npcZone == finalZone:
                            building = block.node
                            self.putBuildingMarker(Point3(building.getPos()), building.getHpr(), mapIndex=mapIndex)
 def enteringARace(self, status):
     if not status['where'] == 'racetrack':
         return 0
     if ZoneUtil.isDynamicZone(status['zoneId']):
         return status['hoodId'] == self.hood.hoodId
     else:
         return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
 def requestTeleport(self, loaderId, whereId, hoodId, zoneId, avId):
     place = base.cr.playGame.getPlace()
     if loaderId == "":
         loaderId = ZoneUtil.getBranchLoaderName(zoneId)
     if whereId == "":
         whereId = ZoneUtil.getToonWhereName(zoneId)
     if hoodId == 0:
         hoodId = place.loader.hood.id
     if avId == 0:
         avId = -1
     place.fsm.forceTransition(
         "teleportOut",
         [
             {
                 "loader": loaderId,
                 "where": whereId,
                 "how": "teleportIn",
                 "hoodId": hoodId,
                 "zoneId": zoneId,
                 "shardId": None,
                 "avId": avId,
             }
         ],
     )
     return
Ejemplo n.º 8
0
 def updateMap(self):
     if self.av:
         hoodId = ZoneUtil.getCanonicalHoodId(self.av.getLocation()[1])
         zoneId = ZoneUtil.getCanonicalBranchZone(self.av.getLocation()[1])
         try:
             mapsGeom = loader.loadModel('phase_4/models/questmap/%s_maps' % ToontownGlobals.dnaMap[hoodId])
         except:
             self.stop()
             return
         mapImage = mapsGeom.find('**/%s_%s_english' % (ToontownGlobals.dnaMap[hoodId], zoneId))
         if not mapImage.isEmpty():
             self.container['image'] = mapImage
             self.resetFrameSize()
             self.cornerPosInfo = QuestMapGlobals.CornerPosTable.get('%s_%s_english' % (ToontownGlobals.dnaMap[hoodId], zoneId))
             self.hqPosInfo = QuestMapGlobals.HQPosTable.get('%s_%s_english' % (ToontownGlobals.dnaMap[hoodId], zoneId))
             self.fishingSpotInfo = QuestMapGlobals.FishingSpotPosTable.get('%s_%s_english' % (ToontownGlobals.dnaMap[hoodId], zoneId))
             self.cogInfoPos = QuestMapGlobals.CogInfoPosTable.get('%s_%s_english' % (ToontownGlobals.dnaMap[hoodId], zoneId))
             self.cogInfoFrame.setPos(self.cogInfoPos)
             self.hide()
             self.hoodId = hoodId
             self.zoneId = zoneId
             self.updateQuestInfo()
             self.updateCogInfo()
             taskMgr.add(self.update, 'questMapUpdate')
         else:
             self.stop()
             mapsGeom.removeNode()
Ejemplo n.º 9
0
		def __lightDecorationOn__():
			try:
				geom = base.cr.playGame.getPlace().loader.geom
			except:
				loaderId = ZoneUtil.getBranchLoaderName(2000) # TEMP hack. This will port you to ttc if ^ fails
				whereId = ZoneUtil.getToonWhereName(200)
				how = 'teleportIn'
				print ("This Should not happen.")
				requestStatus = [{
				'loader': loaderId,
				'where': whereId,
				'how': how,
				'hoodId': 2000,
				'zoneId': 2000,
				'shardId': None,
				'avId': -1
				}]
				base.cr.playGame.getPlace().fsm.forceTransition('teleportOut', requestStatus)
			self.loader.hood.eventLights = geom.findAllMatches('**/*light*')
			self.loader.hood.eventLights += geom.findAllMatches('**/*lamp*')
			self.loader.hood.eventLights += geom.findAllMatches('**/prop_snow_tree*')
			self.loader.hood.eventLights += geom.findAllMatches('**/prop_tree*')
			self.loader.hood.eventLights += geom.findAllMatches('**/*christmas*')
			for light in self.loader.hood.eventLights:
				light.setColorScaleOff(1)
Ejemplo n.º 10
0
 def enteringAGolfCourse(self, status):
     if not status['where'] == 'golfcourse':
         return 0
     if ZoneUtil.isDynamicZone(status['zoneId']):
         return status['hoodId'] == self.hood.hoodId
     else:
         return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
Ejemplo n.º 11
0
 def kickToPlayground(self, retCode):
     if retCode == 0:
         msg = TTLocalizer.EstateOwnerLeftMessage % HouseGlobals.BOOT_GRACE_PERIOD
         self.__popupKickoutMessage(msg)
     elif retCode == 1:
         zoneId = base.localAvatar.lastHood
         self.doneStatus = {'loader': ZoneUtil.getBranchLoaderName(zoneId),
          'where': ZoneUtil.getToonWhereName(zoneId),
          'how': 'teleportIn',
          'hoodId': zoneId,
          'zoneId': zoneId,
          'shardId': None,
          'avId': -1}
         messenger.send(self.doneEvent)
     elif retCode == 2:
         zoneId = base.localAvatar.lastHood
         self.doneStatus = {'loader': ZoneUtil.getBranchLoaderName(zoneId),
          'where': ZoneUtil.getToonWhereName(zoneId),
          'how': 'teleportIn',
          'hoodId': zoneId,
          'zoneId': zoneId,
          'shardId': None,
          'avId': -1}
         messenger.send(self.doneEvent)
     else:
         self.notify.error('unknown reason for exiting estate')
Ejemplo n.º 12
0
    def teleportToShop(self, npcId):
        if base.cr.playGame.getPlace().getState() != 'walk':
            return

        npcZone = NPCToons.getNPCZone(npcId)
        npcHood = ZoneUtil.getCanonicalHoodId(npcZone)
        hqZone = {2000:2520, 1000:1507, 3000:3508, 4000:4504, 5000:5502, 7000:7503, 9000:9505}

        if npcZone in (-1, 0, None):
            zoneId = base.localAvatar.getZoneId()
            if ZoneUtil.isDynamicZone(zoneId) or ZoneUtil.isCogHQZone(zoneId):
                zoneId = 2000 
            npcHood = ZoneUtil.getCanonicalHoodId(zoneId)
            npcZone = hqZone.get(npcHood, 2520)
        
        cost = ToontownGlobals.getTeleportButtonCost(npcHood)
        self.destroyDialog()
        base.cr.playGame.getPlace().setState('stopped')
        
        if base.localAvatar.getTotalMoney() < cost:
            self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TeleportButtonNoMoney % cost, command=self.destroyDialog)
        else:
            self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.TeleportButtonConfirm % cost, command=lambda value: self.teleportToShopConfirm(npcZone, npcHood, cost, value))

        self.dialog.show()
Ejemplo n.º 13
0
    def handleStageWinEvent(self):
        StageInterior.notify.debug("handleStageWinEvent")

        if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == "died":
            return

        self.stageDefeated = 1

        if 1:
            zoneId = ZoneUtil.getHoodId(self.zoneId)
        else:
            zoneId = ZoneUtil.getSafeZoneId(base.localAvatar.defaultZone)

        self.fsm.request(
            "teleportOut",
            [
                {
                    "loader": ZoneUtil.getLoaderName(zoneId),
                    "where": ZoneUtil.getToonWhereName(zoneId),
                    "how": "teleportIn",
                    "hoodId": zoneId,
                    "zoneId": zoneId,
                    "shardId": None,
                    "avId": -1,
                }
            ],
        )
Ejemplo n.º 14
0
 def enter(self, hoodId, zoneId, avId):
     if hoodId == ToontownGlobals.Tutorial:
         loaderName = "townLoader"
         whereName = "toonInterior"
     elif hoodId == ToontownGlobals.MyEstate:
         self.getEstateZoneAndGoHome(avId, zoneId)
         return
     elif hoodId == ToontownGlobals.PartyHood:
         self.getPartyZoneAndGoToParty(avId, zoneId)
         return
     else:
         loaderName = ZoneUtil.getLoaderName(zoneId)
         whereName = ZoneUtil.getToonWhereName(zoneId)
     self.fsm.request(
         "quietZone",
         [
             {
                 "loader": loaderName,
                 "where": whereName,
                 "how": "teleportIn",
                 "hoodId": hoodId,
                 "zoneId": zoneId,
                 "shardId": None,
                 "avId": avId,
             }
         ],
     )
     return
Ejemplo n.º 15
0
 def goHomeFailed(self, task):
     self.notify.debug("goHomeFailed")
     failedToVisitAvId = self.doneStatus.get("avId")
     if failedToVisitAvId > 0:
         message = TTLocalizer.EstateTeleportFailedNotFriends % base.cr.identifyAvatar(failedToVisitAvId).getName()
     else:
         message = TTLocalizer.EstateTeleportFailed
     self.notify.debug("goHomeFailed, why =: %s" % message)
     self.ignore("setLocalEstateZone")
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request(
         "quietZone",
         [
             {
                 "loader": loaderName,
                 "where": whereName,
                 "how": "teleportIn",
                 "hoodId": zoneId,
                 "zoneId": zoneId,
                 "shardId": None,
             }
         ],
     )
     return Task.done
Ejemplo n.º 16
0
 def createStartingBlocks(self):
     self.racingPads = []
     self.viewingPads = []
     racingPadGroups = []
     viewingPadGroups = []
     for zoneId in self.getZoneTable():
         dnaData = self.air.dnaDataMap.get(zoneId, None)
         zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
         if dnaData.getName() == 'root':
             area = ZoneUtil.getCanonicalZoneId(zoneId)
             (foundRacingPads, foundRacingPadGroups) = self.findRacingPads(dnaData, zoneId, area, padType='racing_pad')
             (foundViewingPads, foundViewingPadGroups) = self.findRacingPads(dnaData, zoneId, area, padType='viewing_pad')
             self.racingPads.extend(foundRacingPads)
             racingPadGroups.extend(foundRacingPadGroups)
             self.viewingPads.extend(foundViewingPads)
             viewingPadGroups.extend(foundViewingPadGroups)
     self.startingBlocks = []
     for (dnaGroup, racePad) in zip(racingPadGroups, self.racingPads):
         foundStartingBlocks = self.findStartingBlocks(dnaGroup, racePad)
         self.startingBlocks.extend(foundStartingBlocks)
         for startingBlock in foundStartingBlocks:
             racePad.addStartingBlock(startingBlock)
     self.viewingBlocks = []
     for (dnaGroup, viewPad) in zip(viewingPadGroups, self.viewingPads):
         foundViewingBlocks = self.findStartingBlocks(dnaGroup, viewPad)
         self.viewingBlocks.extend(foundViewingBlocks)
         for viewingBlock in foundViewingBlocks:
             viewPad.addStartingBlock(viewingBlock)
Ejemplo n.º 17
0
    def addLinkTunnelHooks(self, hoodPart, nodeList, currentZoneId):
        tunnelOriginList = []
        for i in nodeList:
            linkTunnelNPC = i.findAllMatches('**/linktunnel*')
            for p in range(linkTunnelNPC.getNumPaths()):
                linkTunnel = linkTunnelNPC.getPath(p)
                name = linkTunnel.getName()
                nameParts = name.split('_')
                hoodStr = nameParts[1]
                zoneStr = nameParts[2]
                hoodId = self.getIdFromName(hoodStr)
                zoneId = int(zoneStr)
                hoodId = ZoneUtil.getTrueZoneId(hoodId, currentZoneId)
                zoneId = ZoneUtil.getTrueZoneId(zoneId, currentZoneId)
                linkSphere = linkTunnel.find('**/tunnel_trigger')
                if linkSphere.isEmpty():
                    linkSphere = linkTunnel.find('**/tunnel_sphere')

                if not linkSphere.isEmpty():
                    cnode = linkSphere.node()
                    cnode.setName('tunnel_trigger_' + hoodStr + '_' + zoneStr)
                    cnode.setCollideMask(ToontownGlobals.WallBitmask
                                         | ToontownGlobals.GhostBitmask)
                else:
                    linkSphere = linkTunnel.find('**/tunnel_trigger_' +
                                                 hoodStr + '_' + zoneStr)
                    if linkSphere.isEmpty():
                        self.notify.error('tunnel_trigger not found')

                tunnelOrigin = linkTunnel.find('**/tunnel_origin')
                if tunnelOrigin.isEmpty():
                    self.notify.error('tunnel_origin not found')

                tunnelOriginPlaceHolder = render.attachNewNode(
                    'toph_' + hoodStr + '_' + zoneStr)
                tunnelOriginList.append(tunnelOriginPlaceHolder)
                tunnelOriginPlaceHolder.setPos(tunnelOrigin.getPos(render))
                tunnelOriginPlaceHolder.setHpr(tunnelOrigin.getHpr(render))
                hood = base.localAvatar.cr.playGame.hood
                if ZoneUtil.tutorialDict:
                    how = 'teleportIn'
                    tutorialFlag = 1
                else:
                    how = 'tunnelIn'
                    tutorialFlag = 0
                hoodPart.accept('enter' + linkSphere.getName(),
                                hoodPart.handleEnterTunnel,
                                [{
                                    'loader': ZoneUtil.getLoaderName(zoneId),
                                    'where': ZoneUtil.getToonWhereName(zoneId),
                                    'how': how,
                                    'hoodId': hoodId,
                                    'zoneId': zoneId,
                                    'shardId': None,
                                    'tunnelOrigin': tunnelOriginPlaceHolder,
                                    'tutorial': tutorialFlag
                                }])

        return tunnelOriginList
Ejemplo n.º 18
0
 def genDNAFileName(self, zoneId):
     zoneId = ZoneUtil.getCanonicalZoneId(zoneId)
     hoodId = ZoneUtil.getCanonicalHoodId(zoneId)
     hood = ToontownGlobals.dnaMap[hoodId]
     phase = ToontownGlobals.streetPhaseMap[hoodId]
     if hoodId == zoneId:
         zoneId = 'sz'
     return 'phase_%s/dna/%s_%s.pdna' % (phase, hood, zoneId)
Ejemplo n.º 19
0
 def handleWaitForSetZoneResponse(self, requestStatus):
     hoodId = requestStatus['hoodId']
     canonicalHoodId = ZoneUtil.getCanonicalZoneId(hoodId)
     toHoodPhrase = ToontownGlobals.hoodNameMap[canonicalHoodId][0]
     hoodName = ToontownGlobals.hoodNameMap[canonicalHoodId][-1]
     zoneId = requestStatus['zoneId']
     loaderName = requestStatus['loader']
     avId = requestStatus.get('avId', -1)
     ownerId = requestStatus.get('ownerId', avId)
     if base.config.GetBool('want-qa-regression', 0):
         self.notify.info('QA-REGRESSION: NEIGHBORHOODS: Visit %s' % hoodName)
     
     count = ToontownGlobals.hoodCountMap[canonicalHoodId]
     if loaderName == 'safeZoneLoader':
         count += ToontownGlobals.safeZoneCountMap[canonicalHoodId]
     elif loaderName == 'townLoader':
         count += ToontownGlobals.townCountMap[canonicalHoodId]
     
     if not loader.inBulkBlock:
         if hoodId == ToontownGlobals.MyEstate:
             if avId == -1:
                 loader.beginBulkLoad('hood', TTLocalizer.HeadingToYourEstate, count, 1, TTLocalizer.TIP_ESTATE)
             else:
                 owner = base.cr.identifyAvatar(ownerId)
                 if owner == None:
                     friend = base.cr.identifyAvatar(avId)
                     if friend != None:
                         avName = friend.getName()
                         loader.beginBulkLoad('hood', TTLocalizer.HeadingToFriend % avName, count, 1, TTLocalizer.TIP_ESTATE)
                     else:
                         self.notify.warning("we can't perform this teleport")
                         return None
                 else:
                     avName = owner.getName()
                     loader.beginBulkLoad('hood', TTLocalizer.HeadingToEstate % avName, count, 1, TTLocalizer.TIP_ESTATE)
         elif ZoneUtil.isCogHQZone(zoneId):
             loader.beginBulkLoad('hood', TTLocalizer.HeadingToHood % {
                 'to': toHoodPhrase,
                 'hood': hoodName }, count, 1, TTLocalizer.TIP_COGHQ)
         elif ZoneUtil.isGoofySpeedwayZone(zoneId):
             loader.beginBulkLoad('hood', TTLocalizer.HeadingToHood % {
                 'to': toHoodPhrase,
                 'hood': hoodName }, count, 1, TTLocalizer.TIP_KARTING)
         else:
             loader.beginBulkLoad('hood', TTLocalizer.HeadingToHood % {
                 'to': toHoodPhrase,
                 'hood': hoodName }, count, 1, TTLocalizer.TIP_GENERAL)
     
     if hoodId == ToontownGlobals.Tutorial:
         self.loadDnaStoreTutorial()
     else:
         self.loadDnaStore()
     hoodClass = self.getHoodClassByNumber(canonicalHoodId)
     self.hood = hoodClass(self.fsm, self.hoodDoneEvent, self.dnaStore, hoodId)
     self.hood.load()
     self.hood.loadLoader(requestStatus)
     if not base.placeBeforeObjects:
         loader.endBulkLoad('hood')
 def __init__(self, air, zoneId):
     DistributedObjectAI.DistributedObjectAI.__init__(self, air)
     SuitPlannerBase.SuitPlannerBase.__init__(self)
     self.air = air
     self.zoneId = zoneId
     self.canonicalZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
     if simbase.air.wantCogdominiums:
         if not hasattr(self.__class__, 'CogdoPopAdjusted'):
             self.__class__.CogdoPopAdjusted = True
             for index in xrange(len(self.SuitHoodInfo)):
                 SuitBuildingGlobals[self.zoneId][0] = int(0.5 + self.CogdoPopFactor * SuitBuildingGlobals[self.zoneId][0])
                 SuitBuildingGlobals[self.zoneId][1] = int(0.5 + self.CogdoPopFactor * SuitBuildingGlobals[self.zoneId][1])
     self.hoodInfoIdx = -1
     for index in xrange(len(self.SuitHoodInfo)):
         currHoodInfo = self.SuitHoodInfo[index]
         if currHoodInfo[self.SUIT_HOOD_INFO_ZONE] == self.canonicalZoneId:
             self.hoodInfoIdx = index
     self.currDesired = None
     self.baseNumSuits = (
         self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_MIN] +
         self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_MAX]) / 2
     self.targetNumSuitBuildings = SuitBuildingGlobals.buildingMinMax[self.zoneId][0]
     if ZoneUtil.isWelcomeValley(self.zoneId):
         self.targetNumSuitBuildings = 0
     self.pendingBuildingTracks = []
     self.pendingBuildingHeights = []
     self.suitList = []
     self.numFlyInSuits = 0
     self.numBuildingSuits = 0
     self.numAttemptingTakeover = 0
     self.zoneInfo = {}
     self.zoneIdToPointMap = None
     self.cogHQDoors = []
     self.battleList = []
     self.battleMgr = BattleManagerAI.BattleManagerAI(self.air)
     self.setupDNA()
     if self.notify.getDebug():
         self.notify.debug('Creating a building manager AI in zone' + str(self.zoneId))
     self.buildingMgr = self.air.buildingManagers.get(self.zoneId)
     if self.buildingMgr:
         (blocks, hqBlocks, gagshopBlocks, petshopBlocks, kartshopBlocks, animBldgBlocks) = self.buildingMgr.getDNABlockLists()
         for currBlock in blocks:
             bldg = self.buildingMgr.getBuilding(currBlock)
             bldg.setSuitPlannerExt(self)
         for currBlock in animBldgBlocks:
             bldg = self.buildingMgr.getBuilding(currBlock)
             bldg.setSuitPlannerExt(self)
     self.dnaStore.resetBlockNumbers()
     self.initBuildingsAndPoints()
     numSuits = simbase.config.GetInt('suit-count', -1)
     if numSuits >= 0:
         self.currDesired = numSuits
     suitHood = simbase.config.GetInt('suits-only-in-hood', -1)
     if suitHood >= 0:
         if self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_ZONE] != suitHood:
             self.currDesired = 0
     self.suitCountAdjust = 0
Ejemplo n.º 21
0
 def createGameTables(self):
     self.gameTables = []
     for zoneId in self.getZoneTable():
         dnaData = self.air.dnaDataMap.get(zoneId, None)
         zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
         if isinstance(dnaData, DNAData):
             area = ZoneUtil.getCanonicalZoneId(zoneId)
             foundGameTables = self.findGameTables(dnaData, zoneId, area, overrideDNAZone=True)
             self.gameTables.extend(foundGameTables)
 def lookupDNAFileName(self, zoneId):
     zoneId = ZoneUtil.getCanonicalZoneId(zoneId)
     hoodId = ZoneUtil.getCanonicalHoodId(zoneId)
     hood = ToontownGlobals.dnaMap[hoodId]
     if hoodId == zoneId:
         zoneId = 'sz'
         phaseNum = ToontownGlobals.phaseMap[hoodId]
     else:
         phaseNum = ToontownGlobals.streetPhaseMap[hoodId]
     return 'phase_%s/dna/%s_%s.pdna' % (phaseNum, hood, zoneId)
 def kickToonsOut(self):
     if not self.localToonOnBoard:
         zoneId = self.cr.playGame.hood.hoodId
         self.cr.playGame.getPlace().fsm.request(
             'teleportOut',
             [{'loader': ZoneUtil.getLoaderName(zoneId),
               'where': ZoneUtil.getToonWhereName(zoneId),
               'how': 'teleportIn', 'hoodId': zoneId, 'zoneId': zoneId,
               'shardId': None, 'avId': -1}])
     return
Ejemplo n.º 24
0
 def forcedExit(self, avId):
     target_sz = base.localAvatar.defaultZone
     base.cr.playGame.getPlace().fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(target_sz),
       'where': ZoneUtil.getWhereName(target_sz, 1),
       'how': 'teleportIn',
       'hoodId': target_sz,
       'zoneId': target_sz,
       'shardId': None,
       'avId': -1}], force=1)
     return
 def localToonDied(self):
     target_sz = ZoneUtil.getSafeZoneId(localAvatar.defaultZone)
     place = self.cr.playGame.getPlace()
     place.fsm.request(
         'died',
         [{'loader': ZoneUtil.getLoaderName(target_sz),
           'where': ZoneUtil.getWhereName(target_sz, 1),
           'how': 'teleportIn', 'hoodId': target_sz, 'zoneId': target_sz,
           'shardId': None, 'avId': -1, 'battle': 1}])
     return
 def updateSavedBy(self, savedBy):
     if self.savedBy:
         for (avId, name, dna) in self.savedBy:
             if not ZoneUtil.isWelcomeValley(self.zoneId):
                 self.trophyMgr.removeTrophy(avId, self.numFloors)
     self.savedBy = savedBy
     if self.savedBy:
         for (avId, name, dna) in self.savedBy:
             if not ZoneUtil.isWelcomeValley(self.zoneId):
                 self.trophyMgr.addTrophy(avId, name, self.numFloors)
Ejemplo n.º 27
0
 def enterTutorial(self, branchZone, streetZone, shopZone, hqZone):
     base.localAvatar.cantLeaveGame = 1
     ZoneUtil.overrideOn(branch = branchZone, exteriorList = [
         streetZone], interiorList = [
         shopZone,
         hqZone])
     messenger.send('startTutorial', [
         shopZone])
     self.acceptOnce('stopTutorial', self._TutorialManager__handleStopTutorial)
     self.acceptOnce('toonArrivedTutorial', self.d_toonArrived)
 def load(self, zoneId):
     self.zoneId = zoneId
     self.parentFSMState.addChild(self.fsm)
     self.loadBattleAnims()
     self.branchZone = ZoneUtil.getBranchZone(zoneId)
     self.canonicalBranchZone = ZoneUtil.getCanonicalBranchZone(zoneId)
     self.music = base.loadMusic(self.musicFile)
     self.activityMusic = base.loadMusic(self.activityMusicFile)
     self.battleMusic = base.loadMusic('phase_3.5/audio/bgm/encntr_general_bg.ogg')
     self.townBattle = TownBattle.TownBattle(self.townBattleDoneEvent)
     self.townBattle.load()
Ejemplo n.º 29
0
 def genDNAFileName(self):
     try:
         return simbase.air.genDNAFileName(self.getZoneId())
     except:
         zoneId = ZoneUtil.getCanonicalZoneId(self.getZoneId())
         hoodId = ZoneUtil.getCanonicalHoodId(zoneId)
         hood = ToontownGlobals.dnaMap[hoodId]
         phase = ToontownGlobals.streetPhaseMap[hoodId]
         if hoodId == zoneId:
             zoneId = 'sz'
         return 'phase_%s/dna/%s_%s.dna' % (phase, hood, zoneId)
 def createGolfKarts(self):
     self.golfKarts = []
     for zoneId in self.getZoneTable():
         dnaData = self.air.dnaDataMap.get(zoneId, None)
         zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
         if dnaData.getName() == 'root':
             area = ZoneUtil.getCanonicalZoneId(zoneId)
             foundGolfKarts = self.findGolfKarts(dnaData, zoneId, area, overrideDNAZone=True)
             self.golfKarts.extend(foundGolfKarts)
     for golfKart in self.golfKarts:
         golfKart.start()
Ejemplo n.º 31
0
 def setup(self):
     self.dnaStore = base.cr.playGame.dnaStore
     self.randomGenerator = random.Random()
     self.randomGenerator.seed(self.zoneId)
     self.interior = loader.loadModel(
         'phase_3.5/models/modules/toon_interior_tutorial')
     self.interior.reparentTo(render)
     dnaStore = DNAStorage()
     node = loader.loadDNAFile(self.cr.playGame.hood.dnaStore,
                               'phase_3.5/dna/tutorial_street.dna')
     self.street = render.attachNewNode(node)
     self.street.flattenMedium()
     self.street.setPosHpr(-17, 42, -0.5, 180, 0, 0)
     self.street.find('**/tb2:toon_landmark_TT_A1_DNARoot').stash()
     self.street.find(
         '**/tb1:toon_landmark_hqTT_DNARoot/**/door_flat_0').stash()
     self.street.findAllMatches('**/+CollisionNode').stash()
     self.skyFile = 'phase_3.5/models/props/TT_sky'
     self.sky = loader.loadModel(self.skyFile)
     self.sky.setScale(0.8)
     self.sky.reparentTo(render)
     self.sky.setDepthTest(0)
     self.sky.setDepthWrite(0)
     self.sky.setBin('background', 100)
     self.sky.find('**/Sky').reparentTo(self.sky, -1)
     hoodId = ZoneUtil.getCanonicalHoodId(self.zoneId)
     self.colors = ToonInteriorColors.colors[hoodId]
     self.replaceRandomInModel(self.interior)
     doorModelName = 'door_double_round_ul'
     if doorModelName[-1:] == 'r':
         doorModelName = doorModelName[:-1] + 'l'
     else:
         doorModelName = doorModelName[:-1] + 'r'
     door = self.dnaStore.findNode(doorModelName)
     door_origin = render.find('**/door_origin;+s')
     doorNP = door.copyTo(door_origin)
     door_origin.setScale(0.8, 0.8, 0.8)
     door_origin.setPos(door_origin, 0, -0.025, 0)
     color = self.randomGenerator.choice(self.colors['TI_door'])
     DNADoor.setupDoor(doorNP, self.interior, door_origin, self.dnaStore,
                       str(self.block), color)
     doorFrame = doorNP.find('door_*_flat')
     doorFrame.wrtReparentTo(self.interior)
     doorFrame.setColor(color)
     del self.colors
     del self.dnaStore
     del self.randomGenerator
     self.interior.flattenMedium()
     npcOrigin = self.interior.find('**/npc_origin_' +
                                    ` (self.npc.posIndex) `)
     if not npcOrigin.isEmpty():
         self.npc.reparentTo(npcOrigin)
         self.npc.clearMat()
     self.createSuit()
     self.mickeyMovie = QuestParser.NPCMoviePlayer('tutorial_mickey',
                                                   base.localAvatar,
                                                   self.npc)
     place = base.cr.playGame.getPlace()
     if place and hasattr(place,
                          'fsm') and place.fsm.getCurrentState().getName():
         self.notify.info('Tutorial movie: Place ready.')
         self.playMovie()
     else:
         self.notify.info(
             'Tutorial movie: Waiting for place=%s, has fsm=%s' %
             (place, hasattr(place, 'fsm')))
         if hasattr(place, 'fsm'):
             self.notify.info('Tutorial movie: place state=%s' %
                              place.fsm.getCurrentState().getName())
         self.acceptOnce('enterTutorialInterior', self.playMovie)
Ejemplo n.º 32
0
 def __chooseFish(self, av, zoneId):
     rodId = av.getFishingRod()
     branchZone = ZoneUtil.getCanonicalBranchZone(zoneId)
     success, genus, species, weight = FishGlobals.getRandomFishVitals(
         branchZone, rodId)
     return (success, genus, species, weight)
Ejemplo n.º 33
0
    def makeDictionaries(self, dnaStore):
        self.nodeDict = {}
        self.zoneDict = {}
        self.nodeList = []
        self.fadeInDict = {}
        self.fadeOutDict = {}
        a1 = Vec4(1, 1, 1, 1)
        a0 = Vec4(1, 1, 1, 0)
        numVisGroups = dnaStore.getNumDNAVisGroups()
        for i in range(numVisGroups):
            groupFullName = dnaStore.getDNAVisGroupName(i)
            groupName = base.cr.hoodMgr.extractGroupName(groupFullName)
            zoneId = int(groupName)
            zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
            groupNode = self.geom.find('**/' + groupFullName)
            if groupNode.isEmpty():
                self.notify.error('Could not find visgroup')
            else:
                if ':' in groupName:
                    groupName = '%s%s' % (zoneId,
                                          groupName[groupName.index(':'):])
                else:
                    groupName = '%s' % zoneId
                groupNode.setName(groupName)
            self.nodeDict[zoneId] = []
            self.nodeList.append(groupNode)
            self.zoneDict[zoneId] = groupNode
            fadeDuration = 0.5
            self.fadeOutDict[groupNode] = Sequence(
                Func(groupNode.setTransparency, 1),
                LerpColorScaleInterval(groupNode,
                                       fadeDuration,
                                       a0,
                                       startColorScale=a1),
                Func(groupNode.clearColorScale),
                Func(groupNode.clearTransparency),
                Func(groupNode.stash),
                name='fadeZone-' + str(zoneId),
                autoPause=1)
            self.fadeInDict[groupNode] = Sequence(
                Func(groupNode.unstash),
                Func(groupNode.setTransparency, 1),
                LerpColorScaleInterval(groupNode,
                                       fadeDuration,
                                       a1,
                                       startColorScale=a0),
                Func(groupNode.clearColorScale),
                Func(groupNode.clearTransparency),
                name='fadeZone-' + str(zoneId),
                autoPause=1)

        for i in range(numVisGroups):
            groupFullName = dnaStore.getDNAVisGroupName(i)
            zoneId = int(base.cr.hoodMgr.extractGroupName(groupFullName))
            zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
            for j in range(dnaStore.getNumVisiblesInDNAVisGroup(i)):
                visName = dnaStore.getVisibleName(i, j)
                groupName = base.cr.hoodMgr.extractGroupName(visName)
                nextZoneId = int(groupName)
                nextZoneId = ZoneUtil.getTrueZoneId(nextZoneId, self.zoneId)
                visNode = self.zoneDict[nextZoneId]
                self.nodeDict[zoneId].append(visNode)

        self.hood.dnaStore.resetPlaceNodes()
        self.hood.dnaStore.resetDNAGroups()
        self.hood.dnaStore.resetDNAVisGroups()
        self.hood.dnaStore.resetDNAVisGroupsAI()
 def getVisZoneId(self):
     exteriorZoneId = base.cr.playGame.hood.dnaStore.getZoneFromBlockNumber(
         self.block)
     visZoneId = ZoneUtil.getTrueZoneId(exteriorZoneId, self.zoneId)
     return visZoneId
Ejemplo n.º 35
0
    def enter(self, requestStatus):
        self.fsm.enterInitialState()
        messenger.send('enterPlayground')
        self.accept('doorDoneEvent', self.handleDoorDoneEvent)
        self.accept('DistributedDoor_doorTrigger', self.handleDoorTrigger)
        base.playMusic(self.loader.music, looping=1, volume=0.8)
        self.loader.geom.reparentTo(render)
        for i in self.loader.nodeList:
            self.loader.enterAnimatedProps(i)

        self._telemLimiter = TLGatherAllAvs('Playground', RotationLimitToH)

        def __lightDecorationOn__():
            geom = base.cr.playGame.hood.loader.geom
            self.loader.hood.halloweenLights = geom.findAllMatches('**/*light*')
            self.loader.hood.halloweenLights += geom.findAllMatches('**/*lamp*')
            self.loader.hood.halloweenLights += geom.findAllMatches('**/prop_snow_tree*')
            for light in self.loader.hood.halloweenLights:
                light.setColorScaleOff(0)

        newsManager = base.cr.newsManager
        if newsManager:
            holidayIds = base.cr.newsManager.getDecorationHolidayId()
            if (ToontownGlobals.HALLOWEEN_COSTUMES in holidayIds or ToontownGlobals.SPOOKY_COSTUMES in holidayIds) and self.loader.hood.spookySkyFile:
                lightsOff = Sequence(LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(0.55, 0.55, 0.65, 1)), Func(self.loader.hood.startSpookySky), Func(__lightDecorationOn__))
                lightsOff.start()
            else:
                self.loader.hood.startSky()
                lightsOn = LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1))
                lightsOn.start()
        else:
            self.loader.hood.startSky()
            lightsOn = LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1))
            lightsOn.start()
        NametagGlobals.setMasterArrowsOn(1)
        self.zoneId = requestStatus['zoneId']
        self.tunnelOriginList = base.cr.hoodMgr.addLinkTunnelHooks(self, self.loader.nodeList, self.zoneId)
        how = requestStatus['how']
        if how == 'teleportIn':
            how = 'deathAck'
        self.fsm.request(how, [requestStatus])
        base.cr.discordManager.setInfo(base.cr.discordManager.getState(), None, ToontownGlobals.Zone2String.get(ZoneUtil.getHoodId(self.zoneId)), None, None, None, self.zoneId)
        return
Ejemplo n.º 36
0
 def getFullnameFromId(self, hoodId):
     hoodId = ZoneUtil.getCanonicalZoneId(hoodId)
     return ToontownGlobals.hoodNameMap[hoodId][-1]
Ejemplo n.º 37
0
    def enter(self):
        ShtikerPage.ShtikerPage.enter(self)
        # Get the current street name
        try:
            zone = base.cr.playGame.getPlace().getZoneId()
        except:
            zone = 0

        # if we are going to an HQ, change the button
        if base.localAvatar.lastHood >= ToontownGlobals.BossbotHQ:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToCogHQ
        else:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToPlayground

        if ((zone and ZoneUtil.isPlayground(zone)) or self.book.safeMode):
            self.safeZoneButton.hide()
        else:
            self.safeZoneButton.show()

        if ((base.cr.playGame.getPlaceId() == ToontownGlobals.MyEstate
             and base.cr.playGame.hood.loader.atMyEstate())
                or self.book.safeMode):
            self.goHomeButton.hide()
        elif base.housingEnabled:
            self.goHomeButton.show()

        if base.cr.playGame.getPlaceId() == ToontownGlobals.MyEstate:
            if base.cr.playGame.hood.loader.atMyEstate():
                self.hoodLabel['text'] = (TTLocalizer.MapPageYouAreAtHome)
                self.hoodLabel.show()
            else:
                avatar = base.cr.identifyAvatar(
                    base.cr.playGame.hood.loader.estateOwnerId)
                if avatar:
                    avName = avatar.getName()
                    self.hoodLabel['text'] = (
                        TTLocalizer.MapPageYouAreAtSomeonesHome %
                        (TTLocalizer.GetPossesive(avName)))
                    self.hoodLabel.show()
        elif zone:
            hoodName = ToontownGlobals.hoodNameMap.get(
                ZoneUtil.getCanonicalHoodId(zone), ("", ))[-1]
            streetName = ToontownGlobals.StreetNames.get(
                ZoneUtil.getCanonicalBranchZone(zone), ("", ))[-1]
            # Make sure we have a hoodName to report
            # It is ok if we do not have a street name, it will just be empty
            if hoodName:
                self.hoodLabel['text'] = (TTLocalizer.MapPageYouAreHere %
                                          (hoodName, streetName))
                self.hoodLabel.show()
            else:
                self.hoodLabel.hide()
        else:
            self.hoodLabel.hide()

        safeZonesVisited = base.localAvatar.hoodsVisited
        hoodsAvailable = base.cr.hoodMgr.getAvailableZones()

        #print("### hoods visited = ", safeZonesVisited)
        #print("### hoods avail = ", hoodsAvailable)

        # The hoods that we can see is the intersection of the zones we have
        # visited and the hoods that are available
        hoodVisibleList = PythonUtil.intersection(safeZonesVisited,
                                                  hoodsAvailable)

        #print("### hoods viz = ", hoodVisibleList)

        # The hoods that we can teleport to is the intersection of the hoods
        # we can see and the hoods the local toon has teleport access to
        hoodTeleportList = base.localAvatar.getTeleportAccess()

        for hood in self.allZones:
            label = self.labels[self.allZones.index(hood)]
            clouds = self.clouds[self.allZones.index(hood)]
            # If we can see that hood, show the button, hide the clouds
            if ((not self.book.safeMode) and (hood in hoodVisibleList)):
                label.show()
                for cloud in clouds:
                    cloud.hide()
                fullname = base.cr.hoodMgr.getFullnameFromId(hood)
                if hood in hoodTeleportList:
                    text = (TTLocalizer.MapPageGoTo % fullname)
                    label['text'] = ("", text, text)
                else:
                    label['text'] = ("", fullname, fullname)

            # If we cannot see that hood, hide the button, show the clouds
            else:
                label.hide()
                for cloud in clouds:
                    cloud.show()

        return
Ejemplo n.º 38
0
    def enter(self):
        ShtikerPage.ShtikerPage.enter(self)
        try:
            zone = base.cr.playGame.getPlace().getZoneId()
        except:
            zone = 0

        if base.localAvatar.lastHood >= ToontownGlobals.BossbotHQ:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToCogHQ
        else:
            self.safeZoneButton['text'] = TTLocalizer.MapPageBackToPlayground
        if zone and ZoneUtil.isPlayground(zone) or self.book.safeMode:
            self.safeZoneButton.hide()
        else:
            self.safeZoneButton.show()
        if base.cr.playGame.getPlaceId(
        ) == ToontownGlobals.MyEstate and base.cr.playGame.hood.loader.atMyEstate(
        ) or self.book.safeMode:
            self.goHomeButton.hide()
        elif base.housingEnabled:
            self.goHomeButton.show()
        if base.cr.playGame.getPlaceId() == ToontownGlobals.MyEstate:
            if base.cr.playGame.hood.loader.atMyEstate():
                self.hoodLabel['text'] = TTLocalizer.MapPageYouAreAtHome
                self.hoodLabel.show()
            else:
                avatar = base.cr.identifyAvatar(
                    base.cr.playGame.hood.loader.estateOwnerId)
                if avatar:
                    avName = avatar.getName()
                    self.hoodLabel[
                        'text'] = TTLocalizer.MapPageYouAreAtSomeonesHome % TTLocalizer.GetPossesive(
                            avName)
                    self.hoodLabel.show()
        elif zone:
            hoodName = ToontownGlobals.hoodNameMap.get(
                ZoneUtil.getCanonicalHoodId(zone), ('', ))[-1]
            streetName = ToontownGlobals.StreetNames.get(
                ZoneUtil.getCanonicalBranchZone(zone), ('', ))[-1]
            if hoodName:
                self.hoodLabel['text'] = TTLocalizer.MapPageYouAreHere % (
                    hoodName, streetName)
                self.hoodLabel.show()
            else:
                self.hoodLabel.hide()
        else:
            self.hoodLabel.hide()
        safeZonesVisited = base.localAvatar.hoodsVisited
        hoodsAvailable = base.cr.hoodMgr.getAvailableZones()
        hoodVisibleList = PythonUtil.intersection(safeZonesVisited,
                                                  hoodsAvailable)
        hoodTeleportList = base.localAvatar.getTeleportAccess()
        for hood in self.allZones:
            label = self.labels[self.allZones.index(hood)]
            clouds = self.clouds[self.allZones.index(hood)]
            if not self.book.safeMode and hood in hoodVisibleList:
                label['text_fg'] = (0, 0, 0, 1)
                label.show()
                for cloud in clouds:
                    cloud.hide()

                fullname = base.cr.hoodMgr.getFullnameFromId(hood)
                if hood in hoodTeleportList:
                    text = TTLocalizer.MapPageGoTo % fullname
                    label['text'] = ('', text, text)
                else:
                    label['text'] = ('', fullname, fullname)
            else:
                label['text_fg'] = (0, 0, 0, 0.65)
                label.show()
                for cloud in clouds:
                    cloud.show()
Ejemplo n.º 39
0
 def begin(self, range, label, gui, tipCategory, zoneId):
     info = self.textures[ZoneUtil.isCogHQZone(zoneId) if zoneId else 2]
     self.waitBar['range'] = range
     self.title['text'] = label
     self.__count = 0
     self.__expectedCount = range
     if gui:
         if base.localAvatarStyle:
             from toontown.toon import Toon
             bored = {
                 'emote': 'bored',
                 'frame': 135
             }  #must define before list
             run = {'emote': 'run', 'frame': 7}
             victory = {'emote': 'victory', 'frame': 10}
             applause = {'emote': 'applause', 'frame': 23}
             dust = {'emote': 'sprinkle-dust', 'frame': 40}
             hypno = {'emote': 'hypnotize', 'frame': 25}
             cringe = {'emote': 'cringe', 'frame': 25}
             wave = {'emote': 'wave', 'frame': 25}
             shrug = {'emote': 'shrug', 'frame': 30}
             duck = {'emote': 'duck', 'frame': 40}
             up = {'emote': 'up', 'frame': 60}
             pushup = {'emote': 'down', 'frame': 23}
             bow = {'emote': 'bow', 'frame': 45}
             emotelist = [
                 bored, run, victory, applause, dust, hypno, cringe, wave,
                 shrug, duck, up, pushup, bow
             ]
             emotechosen = random.choice(emotelist)
             self.toon = Toon.Toon()
             self.toon.setDNA(base.localAvatarStyle)
             self.toon.pose(emotechosen['emote'], emotechosen['frame'])
             self.toon.getGeomNode().setDepthWrite(1)
             self.toon.getGeomNode().setDepthTest(1)
             self.toon.setHpr(205, 0, 0)
             self.toon.setScale(0.18)
             self.toon.setPos(base.a2dBottomRight.getX() / 1.25, 0, -0.034)
             self.toon.reparentTo(self.waitBar)
         self.waitBar['frameSize'] = (base.a2dLeft + (base.a2dRight / 4.95),
                                      base.a2dRight -
                                      (base.a2dRight / 4.95), -0.03, 0.03)
         self.title['text_font'] = info[1]
         self.title['text_fg'] = info[2]
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.title.setPos(base.a2dRight / 5, 0, 0.235)
         self.tip['text'] = self.getTip(tipCategory)
         self.gui.setPos(0, -0.1, 0)
         self.gui.reparentTo(aspect2d, LOADING_SCREEN_SORT_INDEX)
         self.gui.setTexture(info[0], 1)
         self.logo.reparentTo(base.a2dpTopCenter, LOADING_SCREEN_SORT_INDEX)
     else:
         self.title.reparentTo(base.a2dpBottomLeft,
                               LOADING_SCREEN_SORT_INDEX)
         self.gui.reparentTo(hidden)
         self.logo.reparentTo(hidden)
     self.tip.reparentTo(base.a2dpBottomCenter, LOADING_SCREEN_SORT_INDEX)
     self.waitBar.reparentTo(base.a2dpBottomCenter,
                             LOADING_SCREEN_SORT_INDEX)
     self.waitBar.update(self.__count)
Ejemplo n.º 40
0
    def update(self, questDesc):
        questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
        quest = Quests.getQuest(questId)
        self.teleportButton['command'] = self.teleportToShop
        self.teleportButton['extraArgs'] = [toNpcId]
        if quest == None:
            self.notify.warning('Tried to display poster for unknown quest %s' % questId)
            return
        if rewardId == Quests.NA:
            finalReward = Quests.getFinalRewardId(questId, fAll=1)
            transformedReward = Quests.transformReward(finalReward, base.localAvatar)
            reward = Quests.getReward(transformedReward)
        else:
            reward = Quests.getReward(rewardId)
        if reward and questId not in Quests.NoRewardTierZeroQuests:
            rewardString = reward.getPosterString()
        else:
            rewardString = ''
        self.rewardText['text'] = rewardString
        self.fitLabel(self.rewardText)

        if Quests.isQuestJustForFun(questId, rewardId):
            self.funQuest.show()
        else:
            self.funQuest.hide()

        if self._deleteCallback:
            self.showDeleteButton(questDesc)
        else:
            self.hideDeleteButton()

        fComplete = quest.getCompletionStatus(base.localAvatar, questDesc) == Quests.COMPLETE

        if toNpcId == Quests.ToonHQ:
            toNpcName = TTLocalizer.QuestPosterHQOfficer
            toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName
            toNpcStreetName = TTLocalizer.QuestPosterHQStreetName
            toNpcLocationName = TTLocalizer.QuestPosterHQLocationName
        elif toNpcId == Quests.ToonTailor:
            toNpcName = TTLocalizer.QuestPosterTailor
            toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName
            toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName
            toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName
        else:
            toNpcName = NPCToons.getNPCName(toNpcId)
            toNpcZone = NPCToons.getNPCZone(toNpcId)
            toNpcHoodId = ZoneUtil.getCanonicalHoodId(toNpcZone)
            toNpcLocationName = base.cr.hoodMgr.getFullnameFromId(toNpcHoodId)
            toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone)
            toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone)
            toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId)
        lPos = Vec3(0, 0, 0.13)
        lIconGeom = None
        lIconGeomScale = 1
        rIconGeom = None
        rIconGeomScale = 1
        infoText = ''
        infoZ = TTLocalizer.QPinfoZ
        auxText = None
        auxTextPos = Vec3(0, 0, 0.12)
        headlineString = quest.getHeadlineString()
        objectiveStrings = quest.getObjectiveStrings()
        captions = map(string.capwords, quest.getObjectiveStrings())
        imageColor = Vec4(*self.colors['white'])
        self.teleportButton.hide()
        
        if base.localAvatar.tutorialAck and (fComplete or quest.getType() in (Quests.DeliverGagQuest, Quests.DeliverItemQuest, Quests.VisitQuest, Quests.TrackChoiceQuest)):
            self.teleportButton.show()
            self.teleportButton.setPos(0.3, 0, -0.15)
        
        if isinstance(quest, Quests.TexturedQuest) and quest.hasFrame():
            frame = quest.getFrame()
            frameBgColor = frame[1]
            lIconGeom = frame[0]
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.DeliverGagQuest or quest.getType() == Quests.DeliverItemQuest:
            frameBgColor = 'red'
            if quest.getType() == Quests.DeliverGagQuest:
                invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
                track, item = quest.getGagType()
                lIconGeom = invModel.find('**/' + AvPropsNew[track][item])
                invModel.removeNode()
            else:
                bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = bookModel.find('**/package')
                lIconGeomScale = 0.12
                bookModel.removeNode()
            if not fComplete:
                captions.append(toNpcName)
                auxText = TTLocalizer.QuestPosterAuxTo
                auxTextPos.setZ(0.12)
                lPos.setX(-0.18)
                infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
                rIconGeom = self.createNpcToonHead(toNpcId)
                rIconGeomScale = IMAGE_SCALE_SMALL
        elif quest.getType() == Quests.RecoverItemQuest:
            frameBgColor = 'green'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/package')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            if not fComplete:
                rIconGeomScale = IMAGE_SCALE_SMALL
                holder = quest.getHolder()
                holderType = quest.getHolderType()
                if holder == Quests.Any:
                    cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                    rIconGeom = cogIcons.find('**/cog')
                    cogIcons.removeNode()
                    lPos.setX(-0.18)
                    auxText = TTLocalizer.QuestPosterAuxFrom
                elif holder == Quests.AnyFish:
                    headlineString = TTLocalizer.QuestPosterFishing
                    auxText = TTLocalizer.QuestPosterAuxFor
                    auxTextPos.setX(-0.18)
                    captions = captions[:1]
                else:
                    if holderType == 'track':
                        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                        if holder in SuitDNA.suitDeptModelPaths:
                            icon = cogIcons.find(SuitDNA.suitDeptModelPaths[holder])
                        rIconGeom = icon.copyTo(hidden)
                        rIconGeom.setColor(Suit.Suit.medallionColors[holder])
                        rIconGeomScale = 0.12
                        cogIcons.removeNode()
                    elif holderType == 'level':
                        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                        rIconGeom = cogIcons.find('**/cog')
                        rIconGeomScale = IMAGE_SCALE_SMALL
                        cogIcons.removeNode()
                    else:
                        rIconGeom = self.createSuitHead(holder)
                    lPos.setX(-0.18)
                    auxText = TTLocalizer.QuestPosterAuxFrom
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.VisitQuest:
            frameBgColor = 'brown'
            captions[0] = '%s' % toNpcName
            lIconGeom = self.createNpcToonHead(toNpcId)
            lIconGeomScale = IMAGE_SCALE_SMALL
            if not fComplete:
                infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
        elif quest.getType() == Quests.TrackChoiceQuest:
            frameBgColor = 'green'
            invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')

            track1, track2 = quest.getChoices()
            lIconGeom = invModel.find('**/' + AvPropsNew[track1][1])

            if not fComplete:
                auxText = TTLocalizer.QuestPosterAuxOr
                lPos.setX(-0.18)
                rIconGeom = invModel.find('**/' + AvPropsNew[track2][1])

                infoText = TTLocalizer.QuestPageNameAndDestination % (toNpcName,
                 toNpcBuildingName,
                 toNpcStreetName,
                 toNpcLocationName)
                infoZ = -0.02
            invModel.removeNode()
        elif quest.getType() == Quests.BuildingQuest:
            frameBgColor = 'blue'
            track = quest.getBuildingTrack()
            numFloors = quest.getNumFloors()
            if track == 'c':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_corp')
            elif track == 'l':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_legal')
            elif track == 'm':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_money')
            elif track == 's':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_sales')
            else:
                bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = bookModel.find('**/COG_building')
                bookModel.removeNode()
            if lIconGeom and track != Quests.Any:
                self.loadElevator(lIconGeom, numFloors)
                lIconGeom.setH(180)
                self.fitGeometry(lIconGeom, fFlip=0)
                lIconGeomScale = IMAGE_SCALE_SMALL
            else:
                lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.FactoryQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/factoryIcon2')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.MintQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/CashBotMint')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.CogPartQuest:
            frameBgColor = 'green'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/CogArmIcon2')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.ForemanQuest or quest.getType() == Quests.SupervisorQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/skelecog5')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.RescueQuest:
            frameBgColor = 'blue'
            lIconGeom = self.createNpcToonHead(random.choice(NPCToons.HQnpcFriends.keys()))
            lIconGeomScale = 0.13
            infoText = quest.getLocationName().strip()
        elif quest.getType() == Quests.FriendQuest:
            frameBgColor = 'brown'
            gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui')
            lIconGeom = gui.find('**/FriendsBox_Closed')
            lIconGeomScale = 0.45
            gui.removeNode()
            infoText = TTLocalizer.QuestPosterAnywhere
        elif quest.getType() == Quests.TrolleyQuest:
            frameBgColor = 'lightBlue'
            gui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = gui.find('**/trolley')
            lIconGeomScale = 0.13
            gui.removeNode()
            infoText = TTLocalizer.QuestPosterPlayground
        elif quest.getType() == Quests.MailboxQuest:
            frameBgColor = 'lightBlue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/package')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            infoText = TTLocalizer.QuestPosterAtHome
        elif quest.getType() == Quests.PhoneQuest:
            frameBgColor = 'lightBlue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/clarabelleCow')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            infoText = TTLocalizer.QuestPosterOnPhone
        else:
            frameBgColor = 'blue'
            if quest.getType() == Quests.CogTrackQuest:
                dept = quest.getCogTrack()
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeomScale = 0.13
                if dept in SuitDNA.suitDeptModelPaths:
                    icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept])
                lIconGeom = icon.copyTo(hidden)
                lIconGeom.setColor(Suit.Suit.medallionColors[dept])
                cogIcons.removeNode()
            elif quest.getType() == Quests.CogQuest:
                if quest.getCogType() != Quests.Any:
                    lIconGeom = self.createSuitHead(quest.getCogType())
                    lIconGeomScale = IMAGE_SCALE_SMALL
                else:
                    cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                    lIconGeom = cogIcons.find('**/cog')
                    lIconGeomScale = IMAGE_SCALE_SMALL
                    cogIcons.removeNode()
            elif quest.getType() == Quests.CogLevelQuest:
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeom = cogIcons.find('**/cog')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
            elif quest.getType() == Quests.SkelecogTrackQuest:
                dept = quest.getCogTrack()
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeomScale = 0.13
                if dept in SuitDNA.suitDeptModelPaths:
                    icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept])
                lIconGeom = icon.copyTo(hidden)
                lIconGeom.setColor(Suit.Suit.medallionColors[dept])
                cogIcons.removeNode()
            elif quest.getType() == Quests.SkelecogQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
            elif quest.getType() == Quests.SkelecogLevelQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
            elif quest.getType() == Quests.SkeleReviveQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        if fComplete:
            textColor = (0, 0.3, 0, 1)
            imageColor = Vec4(*self.colors['lightGreen'])
            lPos.setX(-0.18)
            rIconGeom = self.createNpcToonHead(toNpcId)
            rIconGeomScale = IMAGE_SCALE_SMALL
            captions = captions[:1]
            captions.append(toNpcName)
            auxText = TTLocalizer.QuestPosterAuxReturnTo
            headlineString = TTLocalizer.QuestPosterComplete
            infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
            if self.laffMeter != None:
                self.laffMeter.reparentTo(hidden)
                self.laffMeter.destroy()
                self.laffMeter = None
        else:
            textColor = self.normalTextColor
        self.show()
        self['image_color'] = imageColor
        self.headline['text_fg'] = textColor
        self.headline['text'] = headlineString
        self.lPictureFrame.show()
        self.lPictureFrame.setPos(lPos)
        self.lPictureFrame['text_scale'] = TEXT_SCALE
        if lPos[0] != 0:
            self.lPictureFrame['text_scale'] = 0.0325
        self.lPictureFrame['text'] = captions[0]
        self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor])
        if len(captions) > 1:
            self.rPictureFrame.show()
            self.rPictureFrame['text'] = captions[1]
            self.rPictureFrame['text_scale'] = 0.0325
            self.rPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor])
        else:
            self.rPictureFrame.hide()
        self._deleteGeoms()
        self.lQuestIcon['geom'] = lIconGeom
        self.lQuestIcon['geom_pos'] = (0, 10, 0)
        if lIconGeom:
            try:
                self.lQuestIcon['geom_scale'] = lIconGeomScale
            except: pass
            try:
                self.lQuestIcon['geom_pos'] = Point3(lIconGeomPos[0], lIconGeomPos[1], lIconGeomPos[2])
            except: pass
            try:
                self.lQuestIcon['geom_hpr'] = Point3(lIconGeomHpr[0], lIconGeomHpr[1], lIconGeomHpr[2])
            except: pass
        if self.laffMeter != None:
            self.laffMeter.reparentTo(self.lQuestIcon)
        self.rQuestIcon['geom'] = rIconGeom
        self.rQuestIcon['geom_pos'] = (0, 10, 0)
        if rIconGeom:
            self.rQuestIcon['geom_scale'] = rIconGeomScale
        if auxText:
            self.auxText.show()
            self.auxText['text'] = auxText
            self.auxText.setPos(auxTextPos)
        else:
            self.auxText.hide()
        self.bind(DGG.WITHIN, self.mouseEnterPoster)
        self.bind(DGG.WITHOUT, self.mouseExitPoster)
        numQuestItems = quest.getNumQuestItems()
        if fComplete or numQuestItems <= 1:
            self.questProgress.hide()
            if not quest.getType() == Quests.TrackChoiceQuest:
                infoZ = -0.075
        else:
            self.questProgress.show()
            self.questProgress['value'] = toonProgress & pow(2, 16) - 1
            self.questProgress['range'] = numQuestItems
            self.questProgress['text'] = quest.getProgressString(base.localAvatar, questDesc)
        self.questInfo['text'] = infoText
        self.questInfo.setZ(infoZ)
        self.fitLabel(self.questInfo)
        return
Ejemplo n.º 41
0
 def getVisZoneId(self):
     exteriorZoneId = base.cr.playGame.dnaData.getBlock(self.block).zone
     visZoneId = ZoneUtil.getTrueZoneId(exteriorZoneId, self.zoneId)
     return visZoneId
Ejemplo n.º 42
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
Ejemplo n.º 43
0
 def handleWaitForSetZoneResponse(self, requestStatus):
     hoodId = requestStatus['hoodId']
     canonicalHoodId = ZoneUtil.getCanonicalZoneId(hoodId)
     toHoodPhrase = ToontownGlobals.hoodNameMap[canonicalHoodId][0]
     hoodName = ToontownGlobals.hoodNameMap[canonicalHoodId][-1]
     zoneId = requestStatus['zoneId']
     loaderName = requestStatus['loader']
     avId = requestStatus.get('avId', -1)
     ownerId = requestStatus.get('ownerId', avId)
     if base.config.GetBool('want-qa-regression', 0):
         self.notify.info('QA-REGRESSION: NEIGHBORHOODS: Visit %s' %
                          hoodName)
     count = ToontownGlobals.hoodCountMap[canonicalHoodId]
     if loaderName == 'safeZoneLoader':
         count += ToontownGlobals.safeZoneCountMap[canonicalHoodId]
     elif loaderName == 'townLoader':
         count += ToontownGlobals.townCountMap[canonicalHoodId]
     if not loader.inBulkBlock:
         if hoodId == ToontownGlobals.MyEstate:
             if avId == -1:
                 loader.beginBulkLoad('hood',
                                      TTLocalizer.HeadingToYourEstate,
                                      count, 1, TTLocalizer.TIP_ESTATE,
                                      zoneId)
             else:
                 owner = base.cr.identifyAvatar(ownerId)
                 if owner == None:
                     friend = base.cr.identifyAvatar(avId)
                     if friend != None:
                         avName = friend.getName()
                         loader.beginBulkLoad(
                             'hood', TTLocalizer.HeadingToFriend % avName,
                             count, 1, TTLocalizer.TIP_ESTATE, zoneId)
                     else:
                         self.notify.warning(
                             "we can't perform this teleport")
                         return
                 else:
                     avName = owner.getName()
                     loader.beginBulkLoad(
                         'hood', TTLocalizer.HeadingToEstate % avName,
                         count, 1, TTLocalizer.TIP_ESTATE, zoneId)
         elif ZoneUtil.isCogHQZone(zoneId):
             loader.beginBulkLoad(
                 'hood', TTLocalizer.HeadingToHood % {
                     'to': toHoodPhrase,
                     'hood': hoodName
                 }, count, 1, TTLocalizer.TIP_COGHQ, zoneId)
         elif ZoneUtil.isGoofySpeedwayZone(zoneId):
             loader.beginBulkLoad(
                 'hood', TTLocalizer.HeadingToHood % {
                     'to': toHoodPhrase,
                     'hood': hoodName
                 }, count, 1, TTLocalizer.TIP_KARTING, zoneId)
         else:
             loader.beginBulkLoad(
                 'hood', TTLocalizer.HeadingToHood % {
                     'to': toHoodPhrase,
                     'hood': hoodName
                 }, count, 1, TTLocalizer.TIP_GENERAL, zoneId)
     if hoodId == ToontownGlobals.Tutorial:
         self.loadDnaStoreTutorial()
     else:
         if not hasattr(self, 'dnaStore'):
             self.loadDnaStore()
     hoodClass = self.getHoodClassByNumber(canonicalHoodId)
     self.hood = hoodClass(self.fsm, self.hoodDoneEvent, self.dnaStore,
                           hoodId)
     self.hood.load()
     self.hood.loadLoader(requestStatus)
     if not base.placeBeforeObjects:
         loader.endBulkLoad('hood')
     return
    def setup(self):
        self.dnaStore = base.cr.playGame.dnaStore
        self.randomGenerator = random.Random()
        self.randomGenerator.seed(self.zoneId)
        interior = self.randomDNAItem('TI_room', self.dnaStore.findNode)
        self.interior = interior.copyTo(render)
        hoodId = ZoneUtil.getCanonicalHoodId(self.zoneId)
        self.colors = ToonInteriorColors.colors[hoodId]
        self.replaceRandomInModel(self.interior)
        doorModelName = 'door_double_round_ul'
        if doorModelName[-1:] == 'r':
            doorModelName = doorModelName[:-1] + 'l'
        else:
            doorModelName = doorModelName[:-1] + 'r'
        door = self.dnaStore.findNode(doorModelName)
        door_origin = render.find('**/door_origin;+s')
        doorNP = door.copyTo(door_origin)
        door_origin.setScale(0.8, 0.8, 0.8)
        door_origin.setPos(door_origin, 0, -0.025, 0)
        color = self.randomGenerator.choice(self.colors['TI_door'])
        DNADoor.setupDoor(doorNP, self.interior, door_origin, self.dnaStore,
                          str(self.block), color)
        doorFrame = doorNP.find('door_*_flat')
        doorFrame.wrtReparentTo(self.interior)
        doorFrame.setColor(color)
        sign = hidden.find('**/sz%s:*_landmark_*_DNARoot/**/sign;+s' %
                           (self.block, ))
        if not sign.isEmpty():
            signOrigin = self.interior.find('**/sign_origin;+s')
            newSignNP = sign.copyTo(signOrigin)
            mat = self.dnaStore.getSignTransformFromBlockNumber(int(
                self.block))
            inv = Mat4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
            inv.invertFrom(mat)
            newSignNP.setMat(inv)
            newSignNP.flattenLight()
            ll = Point3()
            ur = Point3()
            newSignNP.calcTightBounds(ll, ur)
            width = ur[0] - ll[0]
            height = ur[2] - ll[2]
            if width != 0 and height != 0:
                xScale = (SIGN_RIGHT - SIGN_LEFT) / width
                zScale = (SIGN_TOP - SIGN_BOTTOM) / height
                scale = min(xScale, zScale)
                xCenter = (ur[0] + ll[0]) / 2.0
                zCenter = (ur[2] + ll[2]) / 2.0
                newSignNP.setPosHprScale(
                    (SIGN_RIGHT + SIGN_LEFT) / 2.0 - xCenter * scale, -0.1,
                    (SIGN_TOP + SIGN_BOTTOM) / 2.0 - zCenter * scale, 0.0, 0.0,
                    0.0, scale, scale, scale)
                newSignNP.setZ(newSignNP.getZ() + 2.3)
                memorialNP = signOrigin.attachNewNode(TextNode('thankYouText'))
                memorialNP.node().setFont(ToontownGlobals.getFancyFont())
                memorialNP.node().setText(TTLocalizer.PrivateServerTribute)
                memorialNP.node().setTextColor(0.501961, 0, 0.25098, 1)
                memorialNP.node().setAlign(TextNode.ACenter)
                memorialNP.setDepthWrite(1, 1)
                memorialNP.flattenLight()
                memorialNP.setZ(memorialNP.getZ() + 4.95)
                memorialNP.setScale(0.35)
                nowPlayingNP = signOrigin.attachNewNode(
                    TextNode('nowPlayingText'))
                nowPlayingNP.node().setFont(ToontownGlobals.getFancyFont())
                nowPlayingNP.node().setText(TTLocalizer.TributeSongPlaying)
                nowPlayingNP.node().setTextColor(0.501961, 0, 0.25098, 1)
                nowPlayingNP.setDepthWrite(1, 1)
                nowPlayingNP.flattenLight()
                nowPlayingNP.setX(nowPlayingNP.getX() - 2.35)
                nowPlayingNP.setZ(nowPlayingNP.getZ() - 1.35)
                nowPlayingNP.setScale(0.65)
        trophyOrigin = self.interior.find('**/trophy_origin')
        pos = 1.25 - 5.0
        imageFrames = hidden.attachNewNode('imageFrames')
        cm = CardMaker('card')
        for i in xrange(4):
            frame = loader.loadModel('phase_3.5/models/modules/trophy_frame')
            frame.setScale(FrameScale, 1.0, FrameScale)
            frame.reparentTo(imageFrames)
            frame.setPos(pos, 0, 0)
            imageCard = frame.attachNewNode(cm.generate())
            imageTex = loader.loadTexture('phase_14.5/maps/tt_logo_%s.png' %
                                          (i + 1))
            imageCard.setTexture(imageTex)
            imageCard.setX(imageCard.getX() - 0.5)
            imageCard.setZ(imageCard.getZ() - 0.5)
            imageCard.setDepthOffset(1000)
            imageCard.setTransparency(TransparencyAttrib.MAlpha)
            imageCard.flattenLight()
            pos += 2.5

        if imageFrames:
            imageFrames.reparentTo(trophyOrigin)
        del self.colors
        del self.dnaStore
        del self.randomGenerator
        self.interior.flattenMedium()
    def initGagFrame(self, toon, expList, meritList, noSkip=False):
        self.notify.debug('Initializing Gag Frame!')
        self.avNameLabel['text'] = toon.getName()
        self.hqBonusLabel.hide()
        try:
            zoneId = base.cr.playGame.getPlace().getTaskZoneId()
        except:
            zoneId = 0
        if hasattr(base.cr, 'newsManager'):
            if base.cr.newsManager.isHolidayRunning(
                    ToontownGlobals.MORE_XP_HOLIDAY):
                self.multiplierLabel['text'] = "5x Gag Multiplier"
            if base.cr.newsManager.getInvading():
                self.hqBonusLabel['text'] = TTLocalizer.CogInvasionBonus
            if ZoneUtil.isCogHQZone(zoneId):
                self.hqBonusLabel['text'] = TTLocalizer.CogHQBonus
            if base.cr.newsManager.getInvading() and ZoneUtil.isCogHQZone(
                    zoneId):
                self.hqBonusLabel['text'] = TTLocalizer.MegaBonus
        if ZoneUtil.isCogHQZone(zoneId) or self.hqBonusLabel['text'] != '':
            self.hqBonusLabel.show()
            self.growShrink = Sequence(
                LerpScaleInterval(self.hqBonusLabel,
                                  1,
                                  1.1,
                                  0.9,
                                  blendType='easeInOut'),
                LerpScaleInterval(self.hqBonusLabel,
                                  1,
                                  0.9,
                                  1.1,
                                  blendType='easeInOut'))
            self.growShrink.loop()
        self.endTrackFrame.hide()
        self.gagExpFrame.show()
        self.multiplierLabel.show()
        self.newGagFrame.hide()
        self.promotionFrame.hide()
        self.questFrame.hide()
        self.itemFrame.hide()
        self.cogPartFrame.hide()
        self.missedItemFrame.hide()
        trackBarOffset = 0
        self.skipButton['state'] = DGG.DISABLED if noSkip else DGG.NORMAL
        for i in xrange(len(SuitDNA.suitDepts)):
            meritBar = self.meritBars[i]
            meritLabel = self.meritLabels[i]
            totalMerits = CogDisguiseGlobals.getTotalMerits(toon, i)
            merits = meritList[i]
            self.meritIncLabels[i].hide()
            if CogDisguiseGlobals.isSuitComplete(toon.cogParts, i):
                if not self.trackBarsOffset:
                    trackBarOffset = 0.47
                    self.trackBarsOffset = 1
                meritBar.show()
                meritLabel.show()
                meritLabel.show()
                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits
                    if merits == totalMerits:
                        meritBar['text'] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar['text'] = '%s/%s %s' % (
                            merits, totalMerits,
                            TTLocalizer.RewardPanelMeritBarLabels[i])
                else:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
                self.resetMeritBarColor(i)
            else:
                meritBar.hide()
                meritLabel.hide()

        for i in xrange(len(expList)):
            curExp = expList[i]
            trackBar = self.trackBars[i]
            trackLabel = self.trackLabels[i]
            trackIncLabel = self.trackIncLabels[i]
            trackBar.setX(trackBar.getX() - trackBarOffset)
            trackLabel.setX(trackLabel.getX() - trackBarOffset)
            trackIncLabel.setX(trackIncLabel.getX() - trackBarOffset)
            trackIncLabel.hide()
            if toon.hasTrackAccess(i):
                trackBar.show()
                if curExp >= ToontownBattleGlobals.UnpaidMaxSkills[
                        i] and toon.getGameAccess() != OTPGlobals.AccessFull:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = ToontownBattleGlobals.UnpaidMaxSkills[
                        i]
                    trackBar['text'] = TTLocalizer.InventoryGuestExp
                elif curExp >= ToontownBattleGlobals.regMaxSkill:
                    nextExp = self.getNextExpValueUber(curExp, i)
                    trackBar['range'] = nextExp
                    uberCurrExp = curExp - ToontownBattleGlobals.regMaxSkill
                    trackBar['value'] = uberCurrExp
                    trackBar['text'] = TTLocalizer.InventoryUberTrackExp % {
                        'nextExp': ToontownBattleGlobals.MaxSkill - curExp
                    }
                else:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = curExp
                    trackBar['text'] = '%s/%s' % (curExp, nextExp)
                self.resetBarColor(i)
            else:
                trackBar.hide()
Ejemplo n.º 46
0
 def wantsNametag(self):
     """ return true if this door needs an arrow pointing to it. """
     # We don't create nametags for interior doors.
     return not ZoneUtil.isInterior(self.zoneId)
 def __init__(self, air, zoneId):
     DistributedObjectAI.DistributedObjectAI.__init__(self, air)
     SuitPlannerBase.SuitPlannerBase.__init__(self)
     self.air = air
     self.zoneId = zoneId
     self.canonicalZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
     if simbase.air.wantCogdominiums:
         if not hasattr(self.__class__, 'CogdoPopAdjusted'):
             self.__class__.CogdoPopAdjusted = True
             for index in range(len(self.SuitHoodInfo)):
                 SuitBuildingGlobals.buildingMinMax[self.zoneId][0] = int(
                     0.5 + self.CogdoPopFactor *
                     SuitBuildingGlobals.buildingMinMax[self.zoneId][0])
                 SuitBuildingGlobals.buildingMinMax[self.zoneId][1] = int(
                     0.5 + self.CogdoPopFactor *
                     SuitBuildingGlobals.buildingMinMax[self.zoneId][1])
     self.hoodInfoIdx = -1
     for index in range(len(self.SuitHoodInfo)):
         currHoodInfo = self.SuitHoodInfo[index]
         if currHoodInfo[self.SUIT_HOOD_INFO_ZONE] == self.canonicalZoneId:
             self.hoodInfoIdx = index
     self.currDesired = None
     self.baseNumSuits = (
         self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_MIN] +
         self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_MAX]) / 2
     self.targetNumSuitBuildings = SuitBuildingGlobals.buildingMinMax[
         self.zoneId][0]
     if ZoneUtil.isWelcomeValley(self.zoneId):
         self.targetNumSuitBuildings = 0
     self.pendingBuildingTracks = []
     self.pendingBuildingHeights = []
     self.suitList = []
     self.numFlyInSuits = 0
     self.numBuildingSuits = 0
     self.numAttemptingTakeover = 0
     self.zoneInfo = {}
     self.zoneIdToPointMap = None
     self.cogHQDoors = []
     self.battleList = []
     self.battleMgr = BattleManagerAI.BattleManagerAI(self.air)
     self.setupDNA()
     if self.notify.getDebug():
         self.notify.debug('Creating a building manager AI in zone' +
                           str(self.zoneId))
     self.buildingMgr = self.air.buildingManagers.get(self.zoneId)
     if self.buildingMgr:
         (blocks, hqBlocks, gagshopBlocks, petshopBlocks, kartshopBlocks,
          bankBlocks, libraryBlocks,
          animBldgBlocks) = self.buildingMgr.getDNABlockLists()
         for currBlock in blocks:
             bldg = self.buildingMgr.getBuilding(currBlock)
             bldg.setSuitPlannerExt(self)
         for currBlock in animBldgBlocks:
             bldg = self.buildingMgr.getBuilding(currBlock)
             bldg.setSuitPlannerExt(self)
     self.dnaStore.resetBlockNumbers()
     self.initBuildingsAndPoints()
     numSuits = simbase.config.GetInt('suit-count', -1)
     if numSuits >= 0:
         self.currDesired = numSuits
     suitHood = simbase.config.GetInt('suits-only-in-hood', -1)
     if suitHood >= 0:
         if self.SuitHoodInfo[self.hoodInfoIdx][
                 self.SUIT_HOOD_INFO_ZONE] != suitHood:
             self.currDesired = 0
     self.suitCountAdjust = 0
Ejemplo n.º 48
0
    def knockKnockTrack(self, avatar, duration):
        if avatar == None:
            return None

        self.rimshot = base.loadSfx('phase_5/audio/sfx/AA_heal_telljoke.mp3')
        self.knockSfx = base.loadSfx('phase_5/audio/sfx/GUI_knock_3.mp3')
        joke = KnockKnockJokes[self.propId % len(KnockKnockJokes)]
        place = base.cr.playGame.getPlace()
        if place:
            zone = place.getZoneId()
            branch = ZoneUtil.getBranchZone(zone)
            if branch == ToontownGlobals.SillyStreet:
                if self.propId == 44:
                    joke = KnockKnockContestJokes[ToontownGlobals.SillyStreet]

            elif branch == ToontownGlobals.LoopyLane:
                if self.propId in KnockKnockContestJokes[
                        ToontownGlobals.LoopyLane].keys():
                    joke = KnockKnockContestJokes[ToontownGlobals.LoopyLane][
                        self.propId]

            elif branch == ToontownGlobals.PunchlinePlace:
                if self.propId == 1:
                    joke = KnockKnockContestJokes[
                        ToontownGlobals.PunchlinePlace]

            elif branch == ToontownGlobals.PolarPlace:
                if self.propId in KnockKnockContestJokes[
                        ToontownGlobals.PolarPlace].keys():
                    joke = KnockKnockContestJokes[ToontownGlobals.PolarPlace][
                        self.propId]

        self.nametag = None
        self.nametagNP = None
        doorNP = render.find('**/KnockKnockDoorSphere_' + str(self.propId) +
                             ';+s')
        if doorNP.isEmpty():
            self.notify.warning('Could not find KnockKnockDoorSphere_%s' %
                                self.propId)
            return None

        self.nametag = NametagGroup()
        self.nametag.setAvatar(doorNP)
        self.nametag.setFont(ToontownGlobals.getToonFont())
        self.nametag.setName(TTLocalizer.DoorNametag)
        self.nametag.setActive(0)
        self.nametag.manage(base.marginManager)
        self.nametag.getNametag3d().setBillboardOffset(4)
        nametagNode = self.nametag.getNametag3d().upcastToPandaNode()
        self.nametagNP = render.attachNewNode(nametagNode)
        self.nametagNP.setName('knockKnockDoor_nt_' + str(self.propId))
        pos = doorNP.node().getSolid(0).getCenter()
        self.nametagNP.setPos(pos + Vec3(0, 0, avatar.getHeight() + 2))
        d = duration * 0.125
        track = Sequence(
            Parallel(
                Sequence(Wait(d * 0.5), SoundInterval(self.knockSfx)),
                Func(self.nametag.setChat, TTLocalizer.DoorKnockKnock,
                     CFSpeech), Wait(d)),
            Func(avatar.setChatAbsolute,
                 TTLocalizer.DoorWhosThere,
                 CFSpeech | CFTimeout,
                 openEnded=0), Wait(d),
            Func(self.nametag.setChat, joke[0], CFSpeech), Wait(d),
            Func(avatar.setChatAbsolute,
                 joke[0] + TTLocalizer.DoorWhoAppendix,
                 CFSpeech | CFTimeout,
                 openEnded=0), Wait(d),
            Func(self.nametag.setChat, joke[1], CFSpeech),
            Parallel(SoundInterval(self.rimshot, startTime=2.0), Wait(d * 4)),
            Func(self.cleanupTrack))
        track.delayDelete = DelayDelete.DelayDelete(avatar, 'knockKnockTrack')
        return track
 def isInThisHq(self, status):
     if ZoneUtil.isDynamicZone(status['zoneId']):
         return status['hoodId'] == self.hood.hoodId
     else:
         return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
Ejemplo n.º 50
0
 def enter(self, requestStatus):
     self.fsm.enterInitialState()
     self._telemLimiter = TLGatherAllAvs('SuitInterior', RotationLimitToH)
     self.zoneId = requestStatus['zoneId']
     self.accept('DSIDoneEvent', self.handleDSIDoneEvent)
     base.cr.discordManager.setInfo(base.cr.discordManager.getState(), TTLocalizer.DiscordCogBuilding, ToontownGlobals.Zone2String.get(ZoneUtil.getHoodId(self.zoneId)), None, None, None, self.zoneId)
     return
Ejemplo n.º 51
0
 def getCurrentShardId(self):
     zoneId = self.getCurrentZoneId()
     if zoneId != None and ZoneUtil.isWelcomeValley(zoneId):
         return ToontownGlobals.WelcomeValleyToken
     else:
         return base.localAvatar.defaultShard
 def setZoneIdAndBlock(self, zoneId, block):
     self.zoneId = zoneId
     self.block = block
     canonicalZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
     if canonicalZoneId in (ToontownGlobals.BossbotHQ, ToontownGlobals.BossbotLobby):
         self.doorX = 1.0
Ejemplo n.º 53
0
 def wantsNametag(self):
     return not ZoneUtil.isInterior(self.zoneId)
Ejemplo n.º 54
0
 def disable(self):
     self.ignoreAll()
     ZoneUtil.overrideOff()
     DistributedObject.DistributedObject.disable(self)
    def begin(self, range, label, gui, tipCategory, zoneId):
        self.zone2background = {
            ToontownGlobals.ToontownCentral: 'ttc.jpg',
            ToontownGlobals.DonaldsDock: 'dd.jpg',
            ToontownGlobals.DaisyGardens: 'dg.jpg',
            ToontownGlobals.MinniesMelodyland: 'mml.jpg',
            ToontownGlobals.TheBrrrgh: 'tb.jpg',
            ToontownGlobals.DonaldsDreamland: 'ddl.jpg',
            ToontownGlobals.OutdoorZone: 'aa.jpg',
            ToontownGlobals.GoofySpeedway: 'gs.jpg',
            ToontownGlobals.SellbotHQ: 'sbhq.jpg',
            ToontownGlobals.SellbotFactoryExt: 'sbhqext.jpg',
            ToontownGlobals.LawbotHQ: 'lbhq.jpg',
            ToontownGlobals.CashbotHQ: 'cbhq.jpg',
            ToontownGlobals.BossbotHQ: 'bbhq.jpg'
        }
        self.zone2fontcolor = {
            ToontownGlobals.GoofySpeedway: VBase4(ToontownGlobals.GSCOLOR),
            ToontownGlobals.ToontownCentral: VBase4(ToontownGlobals.TTCOLOR),
            ToontownGlobals.SillyStreet: VBase4(ToontownGlobals.TTCOLOR),
            ToontownGlobals.LoopyLane: VBase4(ToontownGlobals.TTCOLOR),
            ToontownGlobals.PunchlinePlace: VBase4(ToontownGlobals.TTCOLOR),
            ToontownGlobals.DonaldsDock: VBase4(ToontownGlobals.DDCOLOR),
            ToontownGlobals.BarnacleBoulevard: VBase4(ToontownGlobals.DDCOLOR),
            ToontownGlobals.SeaweedStreet: VBase4(ToontownGlobals.DDCOLOR),
            ToontownGlobals.LighthouseLane: VBase4(ToontownGlobals.DDCOLOR),
            ToontownGlobals.AhoyAvenue: VBase4(ToontownGlobals.DDCOLOR),
            ToontownGlobals.DaisyGardens: VBase4(ToontownGlobals.DGCOLOR),
            ToontownGlobals.ElmStreet: VBase4(ToontownGlobals.DGCOLOR),
            ToontownGlobals.MapleStreet: VBase4(ToontownGlobals.DGCOLOR),
            ToontownGlobals.OakStreet: VBase4(ToontownGlobals.DGCOLOR),
            ToontownGlobals.RoseValley: VBase4(ToontownGlobals.DGCOLOR),
            ToontownGlobals.MinniesMelodyland: VBase4(ToontownGlobals.MMCOLOR),
            ToontownGlobals.AltoAvenue: VBase4(ToontownGlobals.MMCOLOR),
            ToontownGlobals.BaritoneBoulevard: VBase4(ToontownGlobals.MMCOLOR),
            ToontownGlobals.TenorTerrace: VBase4(ToontownGlobals.MMCOLOR),
            ToontownGlobals.SopranoStreet: VBase4(ToontownGlobals.MMCOLOR),
            ToontownGlobals.TheBrrrgh: VBase4(ToontownGlobals.BRCOLOR),
            ToontownGlobals.WalrusWay: VBase4(ToontownGlobals.BRCOLOR),
            ToontownGlobals.SleetStreet: VBase4(ToontownGlobals.BRCOLOR),
            ToontownGlobals.PolarPlace: VBase4(ToontownGlobals.BRCOLOR),
            ToontownGlobals.DonaldsDreamland: VBase4(ToontownGlobals.DLCOLOR),
            ToontownGlobals.LullabyLane: VBase4(ToontownGlobals.DLCOLOR),
            ToontownGlobals.PajamaPlace: VBase4(ToontownGlobals.DLCOLOR),
            ToontownGlobals.OutdoorZone: VBase4(ToontownGlobals.OZCOLOR),
            ToontownGlobals.GolfZone: VBase4(ToontownGlobals.OZCOLOR),
            ToontownGlobals.SellbotHQ: (0.2, 0.2, 0.2, 1.0),
            ToontownGlobals.SellbotFactoryExt: (0.2, 0.2, 0.2, 1.0),
            ToontownGlobals.SellbotFactoryInt: (0.2, 0.2, 0.2, 1.0),
            ToontownGlobals.CashbotHQ: (0.2, 0.2, 0.2, 1.0),
            ToontownGlobals.LawbotHQ: (0.2, 0.2, 0.2, 1.0),
            ToontownGlobals.BossbotHQ: (0.2, 0.2, 0.2, 1.0)
        }

        self.waitBar['barColor'] = self.zone2fontcolor.get(
            ZoneUtil.getBranchZone(zoneId), ToontownGlobals.DEFAULTCOLOR)
        self.waitBar['range'] = range * 2
        self.title['text'] = label
        self.__count = 0
        self.__expectedCount = range * 2
        if gui:
            self.title.reparentTo(base.a2dpBottomCenter, NO_FADE_SORT_INDEX)
            self.title.setPos(0, 0, 0.23)
            self.gui.setPos(0, -0.1, 0)
            self.gui.reparentTo(aspect2d, NO_FADE_SORT_INDEX)
            self.tip['text'] = self.getTip(tipCategory)
            bg = 'phase_3.5/maps/loading/' + self.zone2background.get(
                ZoneUtil.getBranchZone(zoneId), 'toon.jpg')
            self.gui.setTexture(loader.loadTexture(bg), 1)
            self.logo.reparentTo(base.a2dpTopCenter, NO_FADE_SORT_INDEX)
        else:
            self.title.reparentTo(base.a2dpTopCenter, NO_FADE_SORT_INDEX)
            self.gui.reparentTo(hidden)
            self.logo.reparentTo(hidden)
        self.title['text_fg'] = self.zone2fontcolor.get(
            ZoneUtil.getBranchZone(zoneId), ToontownGlobals.DEFAULTCOLOR)
        self.tip.reparentTo(base.a2dpBottomCenter, NO_FADE_SORT_INDEX)
        self.waitBar.reparentTo(base.a2dpBottomCenter, NO_FADE_SORT_INDEX)
        self.waitBar.update(self.__count)
Ejemplo n.º 56
0
 def _TutorialManager__handleStopTutorial(self):
     base.localAvatar.cantLeaveGame = 0
     self.d_allDone()
     ZoneUtil.overrideOff()
Ejemplo n.º 57
0
 def getPhaseFromHood(self, hoodId):
     hoodId = ZoneUtil.getCanonicalHoodId(hoodId)
     return ToontownGlobals.phaseMap[hoodId]
Ejemplo n.º 58
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
Ejemplo n.º 59
0
 def spawnTitleText(self, zoneId, floorNum = None):
     if ZoneUtil.isMintInteriorZone(zoneId):
         text = '%s\n%s' % (ToontownGlobals.StreetNames[zoneId][-1], TTLocalizer.MintFloorTitle % (floorNum + 1))
         self.doSpawnTitleText(text)
     else:
         CogHood.CogHood.spawnTitleText(self, zoneId)
Ejemplo n.º 60
0
 def handleLeftQuietZone(self):
     status = self.quietZoneStateData.getRequestStatus()
     hoodId = ZoneUtil.getCanonicalZoneId(status['hoodId'])
     hoodState = self.getHoodStateByNumber(hoodId)
     self.fsm.request(hoodState, [status])