Example #1
0
    def createFishingPonds(self):
        # Note: A list of fishing ponds is now maintanied for easier access
        #       when generating Pond Bingo Managers for Bingo Night.
        #       (JJT - 07/22/04)
        self.fishingPonds = []
        fishingPondGroups = []
        for zone in self.air.zoneTable[self.canonicalHoodId]:
            zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
            dnaData = self.air.dnaDataMap.get(zone[0], None)
            if isinstance(dnaData, DNAData):
                area = ZoneUtil.getCanonicalZoneId(zoneId)
                foundFishingPonds, foundFishingPondGroups = self.air.findFishingPonds(
                    dnaData, zoneId, area)
                self.fishingPonds += foundFishingPonds
                fishingPondGroups += foundFishingPondGroups
        for distObj in self.fishingPonds:
            self.addDistObj(distObj)
            # Every pond gets a fisherman
            npcs = NPCToons.createNpcsInZone(self.air, distObj.zoneId)
            # TODO-parties : Ask for clarification on this.
            # Since this creates all the NPCs in the zone, this creates the
            # party people for the party hat as well... but what if there are
            # no fishing ponds??
            for npc in npcs:
                self.addDistObj(npc)

        # Now look in the fishing pond DNAGroups for fishing spots
        fishingSpots = []
        for dnaGroup, distPond in zip(fishingPondGroups, self.fishingPonds):
            fishingSpots += self.air.findFishingSpots(dnaGroup, distPond)
        for distObj in fishingSpots:
            self.addDistObj(distObj)
Example #2
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')
     return
 def handleWaitForSetZoneResponse(self, requestStatus):
     loaderName = requestStatus['loader']
     if loaderName == 'safeZoneLoader':
         if not loader.inBulkBlock:
             loader.beginBulkLoad(
                 'hood', TTLocalizer.HeadingToPlayground, safeZoneCountMap[
                     self.id], 1, TTLocalizer.TIP_GENERAL, self.id)
         self.loadLoader(requestStatus)
         loader.endBulkLoad('hood')
     elif loaderName == 'townLoader':
         if not loader.inBulkBlock:
             zoneId = requestStatus['zoneId']
             toPhrase = StreetNames[ZoneUtil.getCanonicalBranchZone(zoneId)][
                 0]
             streetName = StreetNames[
                 ZoneUtil.getCanonicalBranchZone(zoneId)][-1]
             loader.beginBulkLoad(
                 'hood',
                 TTLocalizer.HeadingToStreet % {
                     'to': toPhrase,
                     'street': streetName},
                 townCountMap[
                     self.id],
                 1,
                 TTLocalizer.TIP_STREET,
                 zoneId)
         self.loadLoader(requestStatus)
         loader.endBulkLoad('hood')
     elif loaderName == 'minigame':
         pass
     elif loaderName == 'cogHQLoader':
         print 'should be loading HQ'
    def enterWaitForZoneRedirect(self):
        self.notify.debug('enterWaitForZoneRedirect(requestStatus=' + str(self._requestStatus) + ')')
        if not self.Disable:
            base.cr.handler = self.handleWaitForZoneRedirect
            base.cr.handlerArgs = self._requestStatus
            base.cr.setInQuietZone(True)
        self.waitForDatabase('WaitForZoneRedirect')
        zoneId = self._requestStatus['zoneId']
        avId = self._requestStatus.get('avId', -1)
        allowRedirect = self._requestStatus.get('allowRedirect', 1)
        if avId != -1:
            allowRedirect = 0
        if not base.cr.welcomeValleyManager:
            newZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
            if newZoneId != zoneId:
                self.gotZoneRedirect(newZoneId)
                return
        if allowRedirect and ZoneUtil.isWelcomeValley(zoneId):
            self.notify.info('Requesting AI redirect from zone %s.' % zoneId)
            if base.slowQuietZone:

                def rZI(task, zoneId = zoneId, self = self):
                    base.cr.welcomeValleyManager.requestZoneId(zoneId, self.gotZoneRedirect)
                    return Task.done

                taskMgr.doMethodLater(base.slowQuietZoneDelay, rZI, 'slowQuietZone-welcomeValleyRedirect')
            else:
                base.cr.welcomeValleyManager.requestZoneId(zoneId, self.gotZoneRedirect)
        else:
            self.fsm.request('waitForSetZoneResponse')
Example #5
0
def getRecommendedTunnelClassFromZone(zone):
    if ZoneUtil.getWhereName(zone) == 'playground':
        return StreetLinkTunnel
    if ZoneUtil.getWhereName(zone) == 'street':
        if ZoneUtil.getHoodId(zone, street=1) == base.cr.playGame.hood.id:
            return SafeZoneLinkTunnel
        return NeighborhoodLinkTunnel
Example #6
0
    def handleWaitForSetZoneResponse(self, requestStatus):
        loaderName = requestStatus["loader"]
        if loaderName == "safeZoneLoader":
            if not loader.inBulkBlock:
                loader.beginBulkLoad(
                    "hood", TTLocalizer.HeadingToPlayground, safeZoneCountMap[self.id], 1, TTLocalizer.TIP_GENERAL
                )

            self.loadLoader(requestStatus)
            loader.endBulkLoad("hood")
        elif loaderName == "townLoader":
            if not loader.inBulkBlock:
                zoneId = requestStatus["zoneId"]
                toPhrase = StreetNames[ZoneUtil.getCanonicalBranchZone(zoneId)][0]
                streetName = StreetNames[ZoneUtil.getCanonicalBranchZone(zoneId)][-1]
                loader.beginBulkLoad(
                    "hood",
                    TTLocalizer.HeadingToStreet % {"to": toPhrase, "street": streetName},
                    townCountMap[self.id],
                    1,
                    TTLocalizer.TIP_STREET,
                )

            self.loadLoader(requestStatus)
            loader.endBulkLoad("hood")
        elif loaderName == "minigame":
            pass
        elif loaderName == "cogHQLoader":
            print "should be loading HQ"
Example #7
0
 def handleWaitForSetZoneResponse(self, requestStatus):
     assert (
         self.notify.debug("handleWaitForSetZoneResponse(requestStatus=" +
                           str(requestStatus) + ")"))
     loaderName = requestStatus["loader"]
     if loaderName == "safeZoneLoader":
         if not loader.inBulkBlock:
             loader.beginBulkLoad("hood", TTLocalizer.HeadingToPlayground,
                                  safeZoneCountMap[self.id], 1,
                                  TTLocalizer.TIP_GENERAL)
         self.loadLoader(requestStatus)
         loader.endBulkLoad("hood")
     #elif loaderName=="suitInterior":
     # TODO: loading bar
     #    self.loadLoader(requestStatus)
     elif loaderName == "townLoader":
         if not loader.inBulkBlock:
             zoneId = requestStatus["zoneId"]
             toPhrase = StreetNames[ZoneUtil.getCanonicalBranchZone(
                 zoneId)][0]
             streetName = StreetNames[ZoneUtil.getCanonicalBranchZone(
                 zoneId)][-1]
             loader.beginBulkLoad("hood", (TTLocalizer.HeadingToStreet % {
                 'to': toPhrase,
                 'street': streetName
             }), townCountMap[self.id], 1, TTLocalizer.TIP_STREET)
         self.loadLoader(requestStatus)
         loader.endBulkLoad("hood")
     elif loaderName == "minigame":
         pass
     elif loaderName == "cogHQLoader":
         print "should be loading HQ"
     else:
         assert (self.notify.debug("  unknown loaderName=" + loaderName))
Example #8
0
 def load(self, zoneId):
     StateData.load(self)
     self.zoneId = zoneId
     self.branchZone = ZoneUtil.getBranchZone(zoneId)
     self.canonicalBranchZone = ZoneUtil.getCanonicalBranchZone(zoneId)
     self.music = base.loadMusic(self.musicFile)
     self.interiorMusic = base.loadMusic(self.interiorMusicFile)
 def enterClosing(self, ts):
     doorFrameHoleRight = self.findDoorNode('doorFrameHoleRight')
     if doorFrameHoleRight.isEmpty():
         self.notify.warning('enterClosing(): did not find doorFrameHoleRight')
         return None
     
     rightDoor = self.findDoorNode('rightDoor')
     if rightDoor.isEmpty():
         self.notify.warning('enterClosing(): did not find rightDoor')
         return None
     
     otherNP = self.getDoorNodePath()
     trackName = 'doorClose-%d' % self.doId
     self.doorTrack = Sequence(LerpHprInterval(node = rightDoor, duration = 1.0, hpr = VBase3(0, 0, 0), startHpr = VBase3(100, 0, 0), other = otherNP, blendType = 'easeInOut'), Func(doorFrameHoleRight.hide), Func(rightDoor.hide), SoundInterval(self.closeSfx, node = rightDoor), name = trackName)
     self.doorTrack.start(ts)
     if hasattr(self, 'done'):
         zoneId = self.otherZoneId
         request = {
             'loader': ZoneUtil.getBranchLoaderName(zoneId),
             'where': ZoneUtil.getToonWhereName(zoneId),
             'how': 'doorIn',
             'hoodId': ZoneUtil.getHoodId(zoneId),
             'zoneId': zoneId,
             'shardId': None,
             'avId': -1,
             'doorDoId': self.otherDoId }
         messenger.send('doorDoneEvent', [
             request])
Example #10
0
 def requestTeleport(self, hoodId, zoneId, shardId, avId):
     if avId > 0:
         teleportNotify.debug('requestTeleport%s' %
                              ((hoodId, zoneId, shardId, avId), ))
     if localAvatar.hasActiveBoardingGroup():
         if avId > 0:
             teleportNotify.debug(
                 'requestTeleport: has active boarding group')
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     loaderId = ZoneUtil.getBranchLoaderName(zoneId)
     whereId = ZoneUtil.getToonWhereName(zoneId)
     if hoodId == ToontownGlobals.MyEstate:
         loaderId = 'safeZoneLoader'
         whereId = 'estate'
     if hoodId == ToontownGlobals.PartyHood:
         loaderId = 'safeZoneLoader'
         whereId = 'party'
     self.requestLeave({
         'loader': loaderId,
         'where': whereId,
         'how': 'teleportIn',
         'hoodId': hoodId,
         'zoneId': zoneId,
         'shardId': shardId,
         'avId': avId
     })
Example #11
0
    def getLocationName(self, zoneId, appendWelcomeValley=True):
        isWelcomeValley = False
        if ZoneUtil.isWelcomeValley(zoneId):
            isWelcomeValley = True
            zoneId = ZoneUtil.getTrueZoneId(
                zoneId, ToontownGlobals.Zones.ToontownCentral)

        lookupTable = ToontownGlobals.hoodNameMap
        isStreet = (zoneId % 1000) != 0
        if isStreet:
            lookupTable = TTLocalizer.GlobalStreetNames

        name = lookupTable.get(zoneId, '')
        if isStreet:
            locationName = '{0}, {1}'.format(
                self.getLocationName(self.zoneId, False), name[2])
            if isWelcomeValley and appendWelcomeValley:
                locationName = locationName + ' (' + TTLocalizer.WelcomeValley[
                    2] + ')'

            return locationName

        locationName = name[2]
        if isWelcomeValley and appendWelcomeValley:
            locationName = locationName + ' (' + TTLocalizer.WelcomeValley[
                2] + ')'

        return locationName
Example #12
0
 def requestTeleport(self, hoodId, zoneId, shardId, avId):
     if avId > 0:
         teleportNotify.debug("requestTeleport%s" % ((hoodId, zoneId, shardId, avId),))
     if localAvatar.hasActiveBoardingGroup():
         if avId > 0:
             teleportNotify.debug("requestTeleport: has active boarding group")
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     loaderId = ZoneUtil.getBranchLoaderName(zoneId)
     whereId = ZoneUtil.getToonWhereName(zoneId)
     if hoodId == ToontownGlobals.MyEstate:
         loaderId = "safeZoneLoader"
         whereId = "estate"
     if hoodId == ToontownGlobals.PartyHood:
         loaderId = "safeZoneLoader"
         whereId = "party"
     self.requestLeave(
         {
             "loader": loaderId,
             "where": whereId,
             "how": "teleportIn",
             "hoodId": hoodId,
             "zoneId": zoneId,
             "shardId": shardId,
             "avId": avId,
         }
     )
Example #13
0
 def load(self, zoneId):
     StateData.load(self)
     self.zoneId = zoneId
     self.branchZone = ZoneUtil.getBranchZone(zoneId)
     self.canonicalBranchZone = ZoneUtil.getCanonicalBranchZone(zoneId)
     self.music = base.loadMusic(self.musicFile)
     self.interiorMusic = base.loadMusic(self.interiorMusicFile)
    def enterWaitForZoneRedirect(self):
        self.notify.debug('enterWaitForZoneRedirect(requestStatus=' +
                          str(self._requestStatus) + ')')
        if not self.Disable:
            base.cr.handler = self.handleWaitForZoneRedirect
            base.cr.handlerArgs = self._requestStatus
            base.cr.setInQuietZone(True)
        self.waitForDatabase('WaitForZoneRedirect')
        zoneId = self._requestStatus['zoneId']
        avId = self._requestStatus.get('avId', -1)
        allowRedirect = self._requestStatus.get('allowRedirect', 1)
        if avId != -1:
            allowRedirect = 0
        if not base.cr.welcomeValleyManager:
            newZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
            if newZoneId != zoneId:
                self.gotZoneRedirect(newZoneId)
                return
        if allowRedirect and ZoneUtil.isWelcomeValley(zoneId):
            self.notify.info('Requesting AI redirect from zone %s.' % zoneId)
            if base.slowQuietZone:

                def rZI(task, zoneId=zoneId, self=self):
                    base.cr.welcomeValleyManager.requestZoneId(
                        zoneId, self.gotZoneRedirect)
                    return Task.done

                taskMgr.doMethodLater(base.slowQuietZoneDelay, rZI,
                                      'slowQuietZone-welcomeValleyRedirect')
            else:
                base.cr.welcomeValleyManager.requestZoneId(
                    zoneId, self.gotZoneRedirect)
        else:
            self.fsm.request('waitForSetZoneResponse')
Example #15
0
    def createFishingPonds(self):
        self.fishingPonds = []
        fishingPondGroups = []
        for zone in self.air.zoneTable[self.canonicalHoodId]:
            zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
            dnaData = self.air.dnaDataMap.get(zone[0], None)
            if isinstance(dnaData, DNAData):
                area = ZoneUtil.getCanonicalZoneId(zoneId)
                foundFishingPonds, foundFishingPondGroups = self.air.findFishingPonds(dnaData, zoneId, area)
                self.fishingPonds += foundFishingPonds
                fishingPondGroups += foundFishingPondGroups

        for distObj in self.fishingPonds:
            self.addDistObj(distObj)
            npcs = NPCToons.createNpcsInZone(self.air, distObj.zoneId)
            for npc in npcs:
                self.addDistObj(npc)

        fishingSpots = []
        for dnaGroup, distPond in zip(fishingPondGroups, self.fishingPonds):
            fishingSpots += self.air.findFishingSpots(dnaGroup, distPond)

        for distObj in fishingSpots:
            self.addDistObj(distObj)

        return
 def requestTeleport(self, hoodId, zoneId, shardId, avId):
     if avId > 0:
         teleportNotify.debug('requestTeleport%s' % ((hoodId,
           zoneId,
           shardId,
           avId),))
     if localAvatar.hasActiveBoardingGroup():
         if avId > 0:
             teleportNotify.debug('requestTeleport: has active boarding group')
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     loaderId = ZoneUtil.getBranchLoaderName(zoneId)
     whereId = ZoneUtil.getToonWhereName(zoneId)
     if hoodId == ToontownGlobals.MyEstate:
         loaderId = 'safeZoneLoader'
         whereId = 'estate'
     if hoodId == ToontownGlobals.PartyHood:
         loaderId = 'safeZoneLoader'
         whereId = 'party'
     self.requestLeave({'loader': loaderId,
      'where': whereId,
      'how': 'teleportIn',
      'hoodId': hoodId,
      'zoneId': zoneId,
      'shardId': shardId,
      'avId': avId})
 def handleWaitForSetZoneResponse(self, requestStatus):
     loaderName = requestStatus['loader']
     if loaderName == 'safeZoneLoader':
         if not loader.inBulkBlock:
             loader.beginBulkLoad('hood', TTLocalizer.HeadingToPlayground,
                                  safeZoneCountMap[self.id], 1,
                                  TTLocalizer.TIP_GENERAL, self.id)
         self.loadLoader(requestStatus)
         loader.endBulkLoad('hood')
     elif loaderName == 'townLoader':
         if not loader.inBulkBlock:
             zoneId = requestStatus['zoneId']
             toPhrase = StreetNames[ZoneUtil.getCanonicalBranchZone(
                 zoneId)][0]
             streetName = StreetNames[ZoneUtil.getCanonicalBranchZone(
                 zoneId)][-1]
             loader.beginBulkLoad(
                 'hood', TTLocalizer.HeadingToStreet % {
                     'to': toPhrase,
                     'street': streetName
                 }, townCountMap[self.id], 1, TTLocalizer.TIP_STREET,
                 zoneId)
         self.loadLoader(requestStatus)
         loader.endBulkLoad('hood')
     elif loaderName == 'minigame':
         pass
     elif loaderName == 'cogHQLoader':
         print 'should be loading HQ'
Example #18
0
 def enterTutorial(self, branchZone, streetZone, shopZone, hqZone):
     toonbase.localToon.inTutorial = 1
     ZoneUtil.overrideOn(branch=branchZone,
                         exteriorList=[streetZone],
                         interiorList=[shopZone, hqZone])
     messenger.send('startTutorial', [shopZone])
     self.acceptOnce('stopTutorial', self.__handleStopTutorial)
     self.acceptOnce('toonArrivedTutorial', self.d_toonArrived)
Example #19
0
def getRecommendedTunnelClassFromZone(zone):
    if ZoneUtil.getWhereName(zone) == 'playground':
        return StreetLinkTunnel
    if ZoneUtil.getWhereName(zone) == 'street':
        if ZoneUtil.getHoodId(zone) == base.cr.playGame.hood.id:
            return SafeZoneLinkTunnel
        else:
            return NeighborhoodLinkTunnel
Example #20
0
    def startup(self):
        self.createTreasurePlanner()
        self.notify.info('Creating objects in hood %s..' % self.hood)
        interiorZoneAllocator = UniqueIdAllocator(self.zoneId + 400, self.zoneId + 999)
        for dnaFile in self.dnaFiles:
            zoneId = 0
            if 'sz' in dnaFile:
                zoneId = self.zoneId
            else:
                for segment in dnaFile.split('_'):
                    if segment.endswith('dna'):
                        segment = segment[:4]
                        if segment.isdigit():
                            zoneId = int(segment)
                            break

            dnaStore = DNAStorage()
            dnaData = loadDNAFileAI(dnaStore, dnaFile)
            self.air.dnaStoreMap[zoneId] = dnaStore
            self.air.dnaDataMap[zoneId] = dnaData
            for block in dnaStore.blockZones.keys():
                exteriorZone = dnaStore.blockZones[block]
                interiorZone = ZoneUtil.getBranchZone(zoneId) - ZoneUtil.getBranchZone(zoneId) % 100 + 500 + block
                if dnaStore.blockBuildingTypes.get(block, None) == None:
                    interior = DistributedToonInteriorAI.DistributedToonInteriorAI(self.air, block, exteriorZone)
                    interior.generateWithRequired(interiorZone)
                    door = DistributedDoorAI.DistributedDoorAI(self.air, block, interiorZone, 1)
                    door.generateWithRequired(exteriorZone)
                    self.exteriorDoors.append(door)
                    self.interiors.append(interior)
                elif dnaStore.blockBuildingTypes.get(block) == 'cinema':
                    cinemaIndex = CinemaGlobals.Zone2Block2CinemaIndex[zoneId][block]
                    interior = DistributedCinemaInteriorAI.DistributedCinemaInteriorAI(self.air, block, exteriorZone, cinemaIndex)
                    interior.generateWithRequired(interiorZone)
                    door = DistributedDoorAI.DistributedDoorAI(self.air, block, interiorZone, 1)
                    door.generateWithRequired(exteriorZone)
                    self.exteriorDoors.append(door)
                    self.interiors.append(interior)
                elif dnaStore.blockBuildingTypes.get(block) == 'hq':
                    interior = DistributedToonHQInteriorAI.DistributedToonHQInteriorAI(self.air, block, exteriorZone)
                    interior.generateWithRequired(interiorZone)
                    door0 = DistributedDoorAI.DistributedDoorAI(self.air, block, interiorZone, 3)
                    door0.generateWithRequired(exteriorZone)
                    door1 = DistributedDoorAI.DistributedDoorAI(self.air, block, interiorZone, 3, 1)
                    door1.generateWithRequired(exteriorZone)
                    self.exteriorDoors.append(door0)
                    self.exteriorDoors.append(door1)
                    self.interiors.append(interior)
                elif dnaStore.blockBuildingTypes.get(block) == 'clotheshop':
                    interior = DistributedTailorInteriorAI.DistributedTailorInteriorAI(self.air, block, exteriorZone)
                    interior.generateWithRequired(interiorZone)
                    door = DistributedDoorAI.DistributedDoorAI(self.air, block, interiorZone, 1)
                    door.generateWithRequired(exteriorZone)
                    self.exteriorDoors.append(door)
                    self.interiors.append(interior)

        del self.dnaFiles
        return
Example #21
0
 def getHoodText(self, zoneId):
     if ZoneUtil.getWhereName(zoneId) == 'street' and zoneId < 61000:
         hoodText = CIGlobals.BranchZone2StreetName[ZoneUtil.getBranchZone(zoneId)]
         hoodText += '\n' + self.id
     else:
         hoodText = self.id
         if self.id != CIGlobals.MinigameArea:
             hoodText += '\n' + ZoneUtil.getWhereName(zoneId).upper()
     return hoodText
Example #22
0
def genDNAFileName(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)
    def createStartingBlocks(self):
        self.racingPads = []
        self.viewingPads = []
        self.viewingBlocks = []
        self.startingBlocks = []
        self.foundRacingPadGroups = []
        self.foundViewingPadGroups = []
        self.golfKartPads = []
        self.golfKartPadGroups = []
        for zone in self.air.zoneTable[self.canonicalHoodId]:
            zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
            dnaData = self.air.dnaDataMap.get(zone[0], None)
            if isinstance(dnaData, DNAData):
                area = ZoneUtil.getCanonicalZoneId(zoneId)
                (foundRacingPads,
                 foundRacingPadGroups) = self.air.findRacingPads(
                     dnaData, zoneId, area, overrideDNAZone=True)
                (foundViewingPads,
                 foundViewingPadGroups) = self.air.findRacingPads(
                     dnaData,
                     zoneId,
                     area,
                     type='viewing_pad',
                     overrideDNAZone=True)
                self.racingPads += foundRacingPads
                self.foundRacingPadGroups += foundRacingPadGroups
                self.viewingPads += foundViewingPads
                self.foundViewingPadGroups += foundViewingPadGroups
                continue

        self.startingBlocks = []
        for (dnaGroup, distRacePad) in zip(self.foundRacingPadGroups,
                                           self.racingPads):
            startingBlocks = self.air.findStartingBlocks(dnaGroup, distRacePad)
            self.startingBlocks += startingBlocks
            for startingBlock in startingBlocks:
                distRacePad.addStartingBlock(startingBlock)

        for distObj in self.startingBlocks:
            self.addDistObj(distObj)

        for (dnaGroup, distViewPad) in zip(self.foundViewingPadGroups,
                                           self.viewingPads):
            startingBlocks = self.air.findStartingBlocks(dnaGroup, distViewPad)
            for viewingBlock in self.viewingBlocks:
                distViewPad.addStartingBlock(viewingBlocks)

        for distObj in self.viewingBlocks:
            self.addDistObj(distObj)

        for viewPad in self.viewingPads:
            self.addDistObj(viewPad)

        for racePad in self.racingPads:
            racePad.request('WaitEmpty')
            self.addDistObj(racePad)
Example #24
0
 def getHoodText(self, zoneId):
     if ZoneUtil.getWhereName(zoneId) == 'street' and zoneId < 61000:
         hoodText = CIGlobals.BranchZone2StreetName[ZoneUtil.getBranchZone(
             zoneId)]
         hoodText += '\n' + self.id
     else:
         hoodText = self.id
         if self.id != CIGlobals.MinigameArea:
             hoodText += '\n' + ZoneUtil.getWhereName(zoneId).upper()
     return hoodText
Example #25
0
    def makeDictionaries(self, dnaStore):
        self.nodeDict = {}
        self.zoneDict = {}
        self.zoneVisDict = {}
        self.nodeList = []
        self.fadeInDict = {}
        self.fadeOutDict = {}
        a1 = Vec4(1, 1, 1, 1)
        a0 = Vec4(1, 1, 1, 0)
        numVisGroups = dnaStore.getNumDNAVisGroupsAI()
        for i in xrange(numVisGroups):
            groupFullName = dnaStore.getDNAVisGroupName(i)
            visGroup = dnaStore.getDNAVisGroupAI(i)
            groupName = base.cr.hoodMgr.extractGroupName(groupFullName)
            zoneId = int(groupName)
            zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
            groupNode = self.geom.find('**/' + groupFullName)
            if groupNode.isEmpty():
                continue
            else:
                if ':' in groupName:
                    groupName = '%s%s' % (zoneId, groupName[groupName.index(':'):])
                else:
                    groupName = '%s' % zoneId
                groupNode.setName(groupName)
            groupNode.flattenMedium()
            self.nodeDict[zoneId] = []
            self.nodeList.append(groupNode)
            self.zoneDict[zoneId] = groupNode
            visibles = []
            for i in xrange(visGroup.getNumVisibles()):
                visibles.append(int(visGroup.visibles[i]))

            visibles.append(ZoneUtil.getBranchZone(zoneId))
            self.zoneVisDict[zoneId] = visibles
            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 xrange(numVisGroups):
            groupFullName = dnaStore.getDNAVisGroupName(i)
            zoneId = int(base.cr.hoodMgr.extractGroupName(groupFullName))
            zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
            for j in xrange(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 forcedExit(self, avId):
     target_sz = toonbase.localToon.defaultZone
     toonbase.tcr.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 }])
Example #27
0
 def handleBookCloseTeleport(self, hoodId, zoneId):
     if hasattr(self, 'fsm'):
         self.fsm.request('DFA', [
             {
                 'loader': ZoneUtil.getBranchLoaderName(zoneId),
                 'where': ZoneUtil.getToonWhereName(zoneId),
                 'how': 'teleportIn',
                 'hoodId': hoodId,
                 'zoneId': zoneId,
                 'shardId': None,
                 'avId': -1 }])
 def handleBookCloseTeleport(self, hoodId, zoneId):
     if hasattr(self, 'fsm'):
         self.fsm.request(
             'DFA', [{
                 'loader': ZoneUtil.getBranchLoaderName(zoneId),
                 'where': ZoneUtil.getToonWhereName(zoneId),
                 'how': 'teleportIn',
                 'hoodId': hoodId,
                 'zoneId': zoneId,
                 'shardId': None,
                 'avId': -1
             }])
Example #29
0
    def addLinkTunnelHooks(self, hoodPart, nodeList):
        tunnelOriginList = []
        for i in nodeList:
            linkTunnelNPC = i.findAllMatches('**/linktunnel*')
            for p in range(linkTunnelNPC.getNumPaths()):
                linkTunnel = linkTunnelNPC.getPath(p)
                name = linkTunnel.getName()
                hoodStr = name[11:13]
                zoneStr = name[14:18]
                hoodId = self.getIdFromName(hoodStr)
                zoneId = int(zoneStr)
                linkSphere = linkTunnel.find('**/tunnel_trigger')
                if not linkSphere.isEmpty():
                    linkSphere.node().setName('tunnel_trigger_' + hoodStr +
                                              '_' + zoneStr)
                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 = toonbase.localToon.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
Example #30
0
 def handleBookCloseTeleport(self, hoodId, zoneId):
     if localAvatar.hasActiveBoardingGroup():
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     self.requestLeave({'loader': ZoneUtil.getBranchLoaderName(zoneId),
      'where': ZoneUtil.getToonWhereName(zoneId),
      'how': 'teleportIn',
      'hoodId': hoodId,
      'zoneId': zoneId,
      'shardId': None,
      'avId': -1})
     return
 def handleBookCloseTeleport(self, hoodId, zoneId):
     if localAvatar.hasActiveBoardingGroup():
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     self.requestLeave({'loader': ZoneUtil.getBranchLoaderName(zoneId),
      'where': ZoneUtil.getToonWhereName(zoneId),
      'how': 'teleportIn',
      'hoodId': hoodId,
      'zoneId': zoneId,
      'shardId': None,
      'avId': -1})
     return
Example #32
0
 def tunnelOutSkip(self, fromZoneId, zoneId):
     tunnelName = base.cr.hoodMgr.makeLinkTunnelName(
         self.loader.hood.id, fromZoneId)
     self.doneStatus = {
         'loader': ZoneUtil.getLoaderName(zoneId),
         'where': ZoneUtil.getToonWhereName(zoneId),
         'how': 'skipTunnelIn',
         'hoodId': ZoneUtil.getHoodId(zoneId),
         'zoneId': zoneId,
         'shardId': None,
         'tunnelName': tunnelName
     }
     messenger.send(self.doneEvent)
     return
    def createGameTables(self):
        self.gameTables = []
        for zone in self.air.zoneTable[self.canonicalHoodId]:
            zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
            dnaData = self.air.dnaDataMap.get(zone[0], None)
            if isinstance(dnaData, DNAData):
                area = ZoneUtil.getCanonicalZoneId(zoneId)
                foundTables = self.findAndCreateGameTables(
                    dnaData, zoneId, area, overrideDNAZone=True)
                self.gameTables += foundTables
                continue

        for picnicTable in self.gameTables:
            self.addDistObj(picnicTable)
 def enterReward(self, ts=0):
     toonbase.localToon.b_setParent(ToontownGlobals.SPHidden)
     request = {
         'loader': ZoneUtil.getBranchLoaderName(self.extZoneId),
         'where': ZoneUtil.getToonWhereName(self.extZoneId),
         'how': 'elevatorIn',
         'hoodId': ZoneUtil.getHoodId(self.extZoneId),
         'zoneId': self.extZoneId,
         'shardId': None,
         'avId': -1,
         'bldgDoId': self.distBldgDoId
     }
     messenger.send('DSIDoneEvent', [request])
     return None
Example #35
0
    def enterWaitForZoneRedirect(self):
        self.notify.debug("enterWaitForZoneRedirect(requestStatus="
                +str(self._requestStatus)+")")
        # Setup our handlers:
        if not self.Disable:
            base.cr.handler = self.handleWaitForZoneRedirect
            base.cr.handlerArgs = self._requestStatus
            base.cr.setInQuietZone(True)

        self.waitForDatabase('WaitForZoneRedirect')

        zoneId = self._requestStatus["zoneId"]
        avId = self._requestStatus.get("avId", -1)
        allowRedirect = self._requestStatus.get("allowRedirect", 1)
        if avId != -1:
            # If we're going to a particular avatar, we can't redirect.
            allowRedirect = 0

        if not base.cr.welcomeValleyManager:
            # If we don't have a welcomeValleyManager, we must be running
            # in the dev environment without an AI; always put the
            # avatar in the canonical zone.
            newZoneId = ZoneUtil.getCanonicalZoneId(zoneId)
            if newZoneId != zoneId:
                self.gotZoneRedirect(newZoneId)
                return

        if allowRedirect and ZoneUtil.isWelcomeValley(zoneId):
            # We're going to a WelcomeValley zone, and redirects are
            # not forbidden, so give the AI a chance to pick a zoneId
            # for us.

            self.notify.info("Requesting AI redirect from zone %s." % (zoneId))
            if base.slowQuietZone:
                def rZI(task, zoneId=zoneId, self=self):
                    base.cr.welcomeValleyManager.requestZoneId(
                        zoneId, self.gotZoneRedirect)
                    return Task.done
                taskMgr.doMethodLater(
                    base.slowQuietZoneDelay,
                    rZI,
                    'slowQuietZone-welcomeValleyRedirect')
            else:
                base.cr.welcomeValleyManager.requestZoneId(
                    zoneId, self.gotZoneRedirect)

        else:
            # No, we're just going directly to the zone we asked to go
            # to.
            self.fsm.request("waitForSetZoneResponse")
    def createGameTables(self):
        self.gameTables = []
        for zone in self.air.zoneTable[self.canonicalHoodId]:
            zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
            dnaData = self.air.dnaDataMap.get(zone[0], None)
            if isinstance(dnaData, DNAData):
                area = ZoneUtil.getCanonicalZoneId(zoneId)
                foundTables = self.findAndCreateGameTables(dnaData, zoneId, area, overrideDNAZone=True)
                self.gameTables += foundTables

        for picnicTable in self.gameTables:
            self.addDistObj(picnicTable)

        return
Example #37
0
 def createStartingBlocks(self):
     self.racingPads = []
     self.viewingPads = []
     self.viewingBlocks = []
     self.startingBlocks = []
     self.foundRacingPadGroups = []
     self.foundViewingPadGroups = []
     self.golfKartPads = []
     self.golfKartPadGroups = []
     for zone in self.air.zoneTable[self.canonicalHoodId]:
         zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
         dnaData = self.air.dnaDataMap.get(zone[0], None)
         if isinstance(dnaData, DNAData):
             area = ZoneUtil.getCanonicalZoneId(zoneId)
             (foundRacingPads, foundRacingPadGroups) = self.air.findRacingPads(dnaData, zoneId, area, overrideDNAZone = True)
             (foundViewingPads, foundViewingPadGroups) = self.air.findRacingPads(dnaData, zoneId, area, type = 'viewing_pad', overrideDNAZone = True)
             self.racingPads += foundRacingPads
             self.foundRacingPadGroups += foundRacingPadGroups
             self.viewingPads += foundViewingPads
             self.foundViewingPadGroups += foundViewingPadGroups
             continue
     
     self.startingBlocks = []
     for (dnaGroup, distRacePad) in zip(self.foundRacingPadGroups, self.racingPads):
         startingBlocks = self.air.findStartingBlocks(dnaGroup, distRacePad)
         self.startingBlocks += startingBlocks
         for startingBlock in startingBlocks:
             distRacePad.addStartingBlock(startingBlock)
         
     
     for distObj in self.startingBlocks:
         self.addDistObj(distObj)
     
     for (dnaGroup, distViewPad) in zip(self.foundViewingPadGroups, self.viewingPads):
         startingBlocks = self.air.findStartingBlocks(dnaGroup, distViewPad)
         for viewingBlock in self.viewingBlocks:
             distViewPad.addStartingBlock(viewingBlocks)
         
     
     for distObj in self.viewingBlocks:
         self.addDistObj(distObj)
     
     for viewPad in self.viewingPads:
         self.addDistObj(viewPad)
     
     for racePad in self.racingPads:
         racePad.request('WaitEmpty')
         self.addDistObj(racePad)
Example #38
0
 def getHoodText(self, zoneId):
     hoodText = base.cr.hoodMgr.getFullnameFromId(self.id)
     if self.id != Tutorial:
         streetName = StreetNames.get(ZoneUtil.getCanonicalBranchZone(zoneId))
         if streetName:
             hoodText = hoodText + '\n' + streetName[-1]
     return hoodText
Example #39
0
 def findAndCreateGolfKarts(self, dnaGroup, zoneId, area, overrideDNAZone = 0, type = 'golf_kart'):
     golfKarts = []
     golfKartGroups = []
     if isinstance(dnaGroup, DNAGroup) and string.find(dnaGroup.getName(), type) >= 0:
         golfKartGroups.append(dnaGroup)
         if type == 'golf_kart':
             nameInfo = dnaGroup.getName().split('_')
             golfCourse = int(nameInfo[2])
             pos = Point3(0, 0, 0)
             hpr = Point3(0, 0, 0)
             for i in range(dnaGroup.getNumChildren()):
                 childDnaGroup = dnaGroup.at(i)
                 if string.find(childDnaGroup.getName(), 'starting_block') >= 0:
                     padLocation = dnaGroup.getName().split('_')[2]
                     pos = childDnaGroup.getPos()
                     hpr = childDnaGroup.getHpr()
                     break
                     continue
             
             pos += Point3(0, 0, 0.050000000000000003)
             golfKart = DistributedGolfKartAI.DistributedGolfKartAI(self.air, golfCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2])
         else:
             self.notify.warning('unhandled case')
         golfKart.generateWithRequired(zoneId)
         golfKarts.append(golfKart)
     elif isinstance(dnaGroup, DNAVisGroup) and not overrideDNAZone:
         zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId)
     
     for i in range(dnaGroup.getNumChildren()):
         (childGolfKarts, childGolfKartGroups) = self.findAndCreateGolfKarts(dnaGroup.at(i), zoneId, area, overrideDNAZone, type)
         golfKarts += childGolfKarts
         golfKartGroups += childGolfKartGroups
     
     return (golfKarts, golfKartGroups)
Example #40
0
 def createPlanner(self, zoneId):
     zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId)
     sp = DistributedSuitPlannerAI.DistributedSuitPlannerAI(self.air, zoneId)
     sp.generateWithRequired(zoneId)
     sp.d_setZoneId(zoneId)
     self.air.suitPlanners[zoneId] = sp
     self.notify.debug('Created new SuitPlanner at %s' % zoneId)
 def setup(self):
     self.dnaStore = toonbase.tcr.playGame.dnaStore
     self.randomGenerator = random.Random()
     self.randomGenerator.seed(self.zoneId)
     self.interior = loader.loadModel(
         'phase_4/models/modules/gagShop_interior')
     self.interior.reparentTo(render)
     hoodId = ZoneUtil.getHoodId(self.zoneId)
     self.colors = ToonInteriorColors.colors[hoodId]
     self.replaceRandomInModel(self.interior)
     door = self.chooseDoor()
     doorOrigin = render.find('**/door_origin;+s')
     doorNP = door.copyTo(doorOrigin)
     doorOrigin.setScale(0.8, 0.8, 0.8)
     doorOrigin.setPos(doorOrigin, 0, -0.025, 0)
     doorColor = self.randomGenerator.choice(self.colors['TI_door'])
     DNADoor.DNADoor.setupDoor(doorNP, self.interior, doorOrigin,
                               self.dnaStore, str(self.block), doorColor)
     doorFrame = doorNP.find('door_*_flat')
     doorFrame.wrtReparentTo(self.interior)
     doorFrame.setColor(doorColor)
     del self.colors
     del self.dnaStore
     del self.randomGenerator
     self.interior.flattenMedium()
Example #42
0
    def enterQuietZone(self, requestStatus):
        base.transitions.noTransitions()
        loaderName = requestStatus['loader']
        zoneID = requestStatus['zoneId']
        where = requestStatus['where']
        if where == 'playground' or where == 'toonInterior':
            name = self.id
        elif where == 'minigame':
            name = 'Minigame'
        elif where == 'street':
            name = CIGlobals.BranchZone2StreetName[ZoneUtil.getBranchZone(
                zoneID)]
        if loaderName == 'safeZoneLoader' or loaderName == 'townLoader':
            if not loader.inBulkBlock:
                loader.beginBulkLoad(
                    'hood', name, CIGlobals.safeZoneLSRanges.get(self.id, 6))
            self.loadLoader(requestStatus)
        else:
            base.transitions.fadeScreen(1.0)

        self._quietZoneDoneEvent = uniqueName('quietZoneDone')
        self.acceptOnce(self._quietZoneDoneEvent, self.handleQuietZoneDone)
        self.quietZoneStateData = QuietZoneState(self._quietZoneDoneEvent)
        self.quietZoneStateData.load()
        self.quietZoneStateData.enter(requestStatus)
Example #43
0
 def __handleBookSwitchShard(self, requestStatus):
     params = []
     params.append(requestStatus['shardId'])
     params.append(base.cr.playGame.hood.id)
     params.append(ZoneUtil.getZoneId(base.cr.playGame.hood.id))
     params.append(base.localAvatar.doId)
     base.cr.gameFSM.request('switchShards', params)
 def __handleBookSwitchShard(self, requestStatus):
     params = []
     params.append(requestStatus['shardId'])
     params.append(base.cr.playGame.hood.id)
     params.append(ZoneUtil.getZoneId(base.cr.playGame.hood.id))
     params.append(base.localAvatar.doId)
     base.cr.gameFSM.request('switchShards', params)
Example #45
0
 def enterTunnelOut(self, requestStatus):
     hoodId = requestStatus['hoodId']
     zoneId = requestStatus['zoneId']
     how = requestStatus['how']
     tunnelOrigin = requestStatus['tunnelOrigin']
     tunnelName = toonbase.tcr.hoodMgr.makeLinkTunnelName(self.loader.hood.id, self.getZoneId())
     self.doneStatus = {
         'loader': ZoneUtil.getLoaderName(zoneId),
         'where': ZoneUtil.getToonWhereName(zoneId),
         'how': how,
         'hoodId': hoodId,
         'zoneId': zoneId,
         'shardId': None,
         'tunnelName': tunnelName }
     self.accept('tunnelOutMovieDone', self._Place__tunnelOutMovieDone)
     toonbase.localToon.tunnelOut(tunnelOrigin)
    def findAndCreatePicnicTables(self, dnaGroup, zoneId, area, overrideDNAZone = 0, type = 'picnic_table'):
        picnicTables = []
        picnicTableGroups = []
        if isinstance(dnaGroup, DNAGroup) and string.find(dnaGroup.getName(), type) >= 0:
            if type == 'picnic_table':
                nameInfo = dnaGroup.getName().split('_')
                pos = Point3(0, 0, 0)
                hpr = Point3(0, 0, 0)
                for i in range(dnaGroup.getNumChildren()):
                    childDnaGroup = dnaGroup.at(i)
                    if string.find(childDnaGroup.getName(), 'picnic_table') >= 0:
                        pos = childDnaGroup.getPos()
                        hpr = childDnaGroup.getHpr()
                        break

                picnicTable = DistributedPicnicBasketAI.DistributedPicnicBasketAI(self.air, nameInfo[2], pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2])
                picnicTable.generateWithRequired(zoneId)
                picnicTables.append(picnicTable)
        else:
            if isinstance(dnaGroup, DNAVisGroup) and not overrideDNAZone:
                zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId)
            for i in range(dnaGroup.getNumChildren()):
                childPicnicTables = self.findAndCreatePicnicTables(dnaGroup.at(i), zoneId, area, overrideDNAZone, type)
                picnicTables += childPicnicTables

        return picnicTables
Example #47
0
    def enter(self, destHood):
        doneStatus = {}

        def letThrough(self = self, doneStatus = doneStatus):
            doneStatus['mode'] = 'pass'
            messenger.send(self.doneEvent, [doneStatus])

        if not base.restrictTrialers:
            letThrough()
            return
        if base.roamingTrialers:
            letThrough()
            return
        if base.cr.isPaid():
            letThrough()
            return
        if ZoneUtil.getCanonicalHoodId(destHood) in (ToontownGlobals.ToontownCentral, ToontownGlobals.MyEstate, ToontownGlobals.GoofySpeedway):
            letThrough()
            return
        else:
            try:
                base.localAvatar.b_setAnimState('neutral', 1)
            except:
                pass

        doneStatus['mode'] = 'fail'
        self.doneStatus = doneStatus
        self.dialog = TeaserPanel.TeaserPanel(pageName='otherHoods', doneFunc=self.handleOk)
Example #48
0
    def findAndCreateGameTables(self,
                                dnaGroup,
                                zoneId,
                                area,
                                overrideDNAZone=0,
                                type='game_table'):
        picnicTables = []
        picnicTableGroups = []
        if isinstance(dnaGroup,
                      DNAGroup) and string.find(dnaGroup.getName(), type) >= 0:
            if type == 'game_table':
                nameInfo = dnaGroup.getName().split('_')
                pos = Point3(0, 0, 0)
                hpr = Point3(0, 0, 0)
                for i in range(dnaGroup.getNumChildren()):
                    childDnaGroup = dnaGroup.at(i)
                    if string.find(childDnaGroup.getName(), 'game_table') >= 0:
                        pos = childDnaGroup.getPos()
                        hpr = childDnaGroup.getHpr()
                        break

                picnicTable = DistributedPicnicTableAI.DistributedPicnicTableAI(
                    self.air, zoneId, nameInfo[2], pos[0], pos[1], pos[2],
                    hpr[0], hpr[1], hpr[2])
                picnicTables.append(picnicTable)
        else:
            if isinstance(dnaGroup, DNAVisGroup) and not overrideDNAZone:
                zoneId = ZoneUtil.getTrueZoneId(
                    int(dnaGroup.getName().split(':')[0]), zoneId)
            for i in range(dnaGroup.getNumChildren()):
                childPicnicTables = self.findAndCreateGameTables(
                    dnaGroup.at(i), zoneId, area, overrideDNAZone, type)
                picnicTables += childPicnicTables

        return picnicTables
Example #49
0
 def addLinkTunnelHooks(self, hoodPart, nodeList):
     tunnelOriginList = []
     for i in nodeList:
         linkTunnelNPC = i.findAllMatches('**/linktunnel*')
         for p in range(linkTunnelNPC.getNumPaths()):
             linkTunnel = linkTunnelNPC.getPath(p)
             name = linkTunnel.getName()
             hoodStr = name[11:13]
             zoneStr = name[14:18]
             hoodId = self.getIdFromName(hoodStr)
             zoneId = int(zoneStr)
             linkSphere = linkTunnel.find('**/tunnel_trigger')
             if not linkSphere.isEmpty():
                 linkSphere.node().setName('tunnel_trigger_' + hoodStr + '_' + zoneStr)
             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 = toonbase.localToon.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
Example #50
0
 def handleBookCloseTeleport(self, hoodId, zoneId):
     if localAvatar.hasActiveBoardingGroup():
         rejectText = TTLocalizer.BoardingCannotLeaveZone
         localAvatar.elevatorNotifier.showMe(rejectText)
         return
     self.requestLeave(
         {
             "loader": ZoneUtil.getBranchLoaderName(zoneId),
             "where": ZoneUtil.getToonWhereName(zoneId),
             "how": "teleportIn",
             "hoodId": hoodId,
             "zoneId": zoneId,
             "shardId": None,
             "avId": -1,
         }
     )
     return
Example #51
0
 def handleToonInteriorDone(self):
     status = self.place.doneStatus
     if status['loader'] == 'townLoader' and ZoneUtil.getBranchZone(status['zoneId']) == self.branchZone and status['shardId'] == None or status['how'] == 'doorOut':
         self.fsm.request('quietZone', [status])
     else:
         self.doneStatus = status
         messenger.send(self.doneEvent)
     return
Example #52
0
 def createGolfKarts(self):
     self.golfKarts = []
     self.golfKartGroups = []
     for zone in self.air.zoneTable[self.canonicalHoodId]:
         zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
         dnaData = self.air.dnaDataMap.get(zone[0], None)
         if isinstance(dnaData, DNAData):
             area = ZoneUtil.getCanonicalZoneId(zoneId)
             (foundKarts, foundKartGroups) = self.findAndCreateGolfKarts(dnaData, zoneId, area, overrideDNAZone = True)
             self.golfKarts += foundKarts
             self.golfKartGroups += foundKartGroups
             continue
     
     print self.golfKarts, self.golfKartGroups
     for golfKart in self.golfKarts:
         golfKart.start()
         self.addDistObj(golfKart)
Example #53
0
 def handleToonInteriorDone(self):
     status = self.place.doneStatus
     if ZoneUtil.getBranchZone(status['zoneId']) == self.hood.id and status['shardId'] == None:
         self.fsm.request('quietZone', [
             status])
     else:
         self.doneStatus = status
         messenger.send(self.doneEvent)
 def createBuildingManagers(self):
     for zone in self.air.zoneTable[self.canonicalHoodId]:
         if zone[1]:
             zoneId = ZoneUtil.getTrueZoneId(zone[0], self.zoneId)
             dnaStore = self.air.dnaStoreMap[zone[0]]
             mgr = DistributedBuildingMgrAI.DistributedBuildingMgrAI(self.air, zoneId, dnaStore, self.air.trophyMgr)
             self.buildingManagers.append(mgr)
             self.air.buildingManagers[zoneId] = mgr