def generate(self):
     DistributedObjectAI.generate(self)
     actId2Class = {ActivityIds.PartyJukebox: DistributedPartyJukeboxActivityAI,
      ActivityIds.PartyTrampoline: DistributedPartyTrampolineActivityAI,
      ActivityIds.PartyVictoryTrampoline: DistributedPartyVictoryTrampolineActivityAI,
      ActivityIds.PartyCatch: DistributedPartyCatchActivityAI,
      ActivityIds.PartyDance: DistributedPartyDanceActivityAI,
      ActivityIds.PartyTugOfWar: DistributedPartyTugOfWarActivityAI,
      ActivityIds.PartyFireworks: DistributedPartyFireworksActivityAI,
      ActivityIds.PartyJukebox40: DistributedPartyJukebox40ActivityAI,
      ActivityIds.PartyDance20: DistributedPartyDance20ActivityAI,
      ActivityIds.PartyCog: DistributedPartyCogActivityAI}
     for activity in self.info['activities']:
         actId = activity[0]
         if actId in actId2Class:
             act = actId2Class[actId](self.air, self.doId, activity)
             act.generateWithRequired(self.zoneId)
             self.activities.append(act)
         elif actId == ActivityIds.PartyCannon:
             if not self.cannonActivity:
                 self.cannonActivity = DistributedPartyCannonActivityAI(self.air, self.doId, activity)
                 self.cannonActivity.generateWithRequired(self.zoneId)
             act = DistributedPartyCannonAI(self.air)
             act.setActivityDoId(self.cannonActivity.doId)
             x, y, h = activity[1:]
             x = PartyUtils.convertDistanceFromPartyGrid(x, 0)
             y = PartyUtils.convertDistanceFromPartyGrid(y, 1)
             h *= PartyGridHeadingConverter
             act.setPosHpr(x, y, 0, h, 0, 0)
             act.generateWithRequired(self.zoneId)
             self.activities.append(act)
 def announceGenerate(self):
     DistributedObject.DistributedObject.announceGenerate(self)
     self.sendUpdate('enteredParty', [])
     globalClock.syncFrameTime()
     self.startPartyClock()
     base.localAvatar.chatMgr.chatInputSpeedChat.addInsidePartiesMenu()
     self.spawnTitleText()
     messenger.send(self.generatedEvent)
     if config.GetBool('show-debug-party-grid', 0):
         self.testGrid = NodePath('test_grid')
         self.testGrid.reparentTo(base.cr.playGame.hood.loader.geom)
         for i in xrange(len(self.grid)):
             for j in xrange(len(self.grid[i])):
                 cm = CardMaker('gridsquare')
                 np = NodePath(cm.generate())
                 np.setScale(12)
                 np.setP(-90.0)
                 np.setPos(
                     PartyUtils.convertDistanceFromPartyGrid(j, 0) - 6.0,
                     PartyUtils.convertDistanceFromPartyGrid(i, 1) - 6.0,
                     0.1)
                 np.reparentTo(self.testGrid)
                 if self.grid[i][j]:
                     np.setColorScale(0.0, 1.0, 0.0, 1.0)
                 else:
                     np.setColorScale(1.0, 0.0, 0.0, 1.0)
 def __init__(self, air, parent, activityTuple):
     DistributedObjectAI.__init__(self, air)
     self.parent = parent
     x, y, h = activityTuple[1:] # ignore activity ID
     self.x = PartyUtils.convertDistanceFromPartyGrid(x, 0)
     self.y = PartyUtils.convertDistanceFromPartyGrid(y, 1)
     self.h = h * PartyGlobals.PartyGridHeadingConverter
     self.toonsPlaying = []
Exemple #4
0
 def __init__(self, air, parent, activityTuple):
     DistributedObjectAI.__init__(self, air)
     self.parent = parent
     x, y, h = activityTuple[1:]
     self.x = PartyUtils.convertDistanceFromPartyGrid(x, 0)
     self.y = PartyUtils.convertDistanceFromPartyGrid(y, 1)
     self.h = h * PartyGlobals.PartyGridHeadingConverter
     self.toonsPlaying = []
 def loadDecorations(self):
     self.decorationsList = []
     for decorBase in self.partyInfo.decors:
         self.decorationsList.append(
             Decoration(
                 PartyGlobals.DecorationIds.getString(decorBase.decorId),
                 PartyUtils.convertDistanceFromPartyGrid(decorBase.x, 0),
                 PartyUtils.convertDistanceFromPartyGrid(decorBase.y, 1),
                 PartyUtils.convertDegreesFromPartyGrid(decorBase.h)))
    def getClearSquarePositions(self):
        clearPositions = []
        for y in xrange(len(self.grid)):
            for x in xrange(len(self.grid[0])):
                if self.grid[y][x]:
                    pos = (PartyUtils.convertDistanceFromPartyGrid(x, 0),
                           PartyUtils.convertDistanceFromPartyGrid(y, 1), 0.1)
                    clearPositions.append(pos)

        return clearPositions
    def generate(self):
        DistributedPartyAI.notify.debug("DistParty generate: %s" % self.doId)
        DistributedObjectAI.generate(self)

        self.air.writeServerEvent("party_generate", self.partyInfo.partyId,
                                  "%d|%d" % (self.doId, self.partyInfo.hostId))

        # Log that a GM party has been generated.
        try:
            host = simbase.air.doId2do.get(self.partyInfo.hostId)
            if host.hasGMName():
                self.air.writeServerEvent("party_generate_gm",
                                          self.partyInfo.partyId,
                                          "%s" % self.partyInfo.hostId)
                assert self.notify.debug("GM-%s's party has started." %
                                         self.partyInfo.hostId)
        except:
            pass

        # We want to initialize all the activities that are at this party.
        # We'll loop through the activityList and see if we can import, create,
        # and generate the relevant AI class.  This code assumes that the
        # activity classes are named according to the enum
        # PartyGlobals.ActivityIds
        # for example:
        #     PartyGlobals.ActivityIds.PartyCatch would load
        #     DistributedPartyCatchActivityAI
        for activity in self.partyInfo.activityList:
            # Location and heading in the activityList is in party space, so
            # we convert them to Panda space before passing them into the
            # activities
            #activityName = PartyGlobals.ActivityIds.getString(activity.activityId)
            x = PartyUtils.convertDistanceFromPartyGrid(activity.x, 0)
            y = PartyUtils.convertDistanceFromPartyGrid(activity.y, 1)
            h = PartyUtils.convertDegreesFromPartyGrid(activity.h)
            # Skip the party clock...
            if activity.activityId == PartyGlobals.ActivityIds.PartyClock:
                continue

            # Special case for cannon, add another cannon instead of creating
            # a new instance of the cannon activity
            if activity.activityId == PartyGlobals.ActivityIds.PartyCannon and \
               self.getCannonActivity():
                self.getCannonActivity().spawnCannonAt(x, y, h)
                continue

            actClass = ActivityIdsToClasses[activity.activityId]
            newAct = actClass(self.air, self.doId, x, y, h)
            newAct.generateWithRequired(self.zoneId)
            self.activityObjects.append(newAct)
 def setPartyClockInfo(self, x, y, h):
     x = PartyUtils.convertDistanceFromPartyGrid(x, 0)
     y = PartyUtils.convertDistanceFromPartyGrid(y, 1)
     h = PartyUtils.convertDegreesFromPartyGrid(h)
     self.partyClockInfo = (x, y, h)
     self.loadPartyCountdownTimer()