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 = []
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()