def setMoonPhaseChange(self, fromCurrent, startPhase, targetPhase, targetTime): currentTime = globalClock.getFrameTime() timeStamp = globalClockDelta.networkToLocalTime(targetTime, bits = 32) if timeStamp < currentTime: return None else: self.animateMoon(fromCurrent, startPhase, targetPhase, timeStamp - currentTime)
def setTimeout(self, timestamp): timeout = globalClockDelta.networkToLocalTime(timestamp) if self.timeout is None or abs(self.timeout - timeout) > 0.5: self.timeout = timeout if self.localPlayerJoined: self.startTimer()
def setGameStart(self, timestamp, molesWhackTarget, totalTime): self.GameDuration = totalTime self.MolesWhackedTarget = molesWhackTarget self.activeField = 1 self.isToonInRange = 0 self.scheduleMoles() self.notify.debug('%d setGameStart: Starting game' % self.doId) self.gameStartTime = globalClockDelta.networkToLocalTime(timestamp) self.gameStarted = True for hill in self.moleHills: hill.setGameStartTime(self.gameStartTime) curGameTime = self.getCurrentGameTime() timeLeft = self.GameDuration - curGameTime self.cleanupTimer() self.timer = ToontownTimer.ToontownTimer() self.timer.posBelowTopRightCorner() self.timer.setTime(timeLeft) self.timer.countdown(timeLeft, self.timerExpired) self.startScheduleTask() self.frame2D.show() if self.hasRestarted: self.level.countryClub.showInfoText(self.restartedText) self.sendUpdate('damageMe', []) else: self.hasRestarted = 1 self.updateGuiScore()
def startWaitToStart(self, waitStartTimestamp): self.notify.debug('startWaitToStart') self.waitToStartTimestamp = globalClockDelta.networkToLocalTime(waitStartTimestamp) self._updateWaitForEnoughStatus() self.setStatus(TTLocalizer.PartyTeamActivityWaitingToStart) if self.isLocalToonPlaying: self.showWaitToStartCountdown()
def setTimer(self, timerEnd): self.clockNode.stop() time = globalClockDelta.networkToLocalTime(timerEnd) self.timeLeft = int(time - globalClock.getRealTime()) if self.gameWantTimer and self.game != None: self.showTimer() return
def setTimerStartTime(self, timestamp): if not self.hasLocalToon: return self.timerStartTime = globalClockDelta.networkToLocalTime(timestamp) if self.timer != None: self.startTimer() return
def startInvasion(self, suitName, skel, waiter, startTime, duration): self.startTime = globalClockDelta.networkToLocalTime(startTime, bits = 32) self.notify.info("New invasion! Duration: %s" % duration) self._name, msgs = self.formatInvasionMessage(suitName, skel, waiter, self.__formatBegin) self.displayMsgs(msgs)
def updateGoal(self, timestamp, inResponseClientStamp, goalType, goalId, pos): self.notify.debug('self.netTimeSentToStartByHit =%s' % self.netTimeSentToStartByHit) if not self.game: self.notify.debug('updateGoal self.game is None, just returning') return None if not self.suit: self.notify.debug('updateGoal self.suit is None, just returning') return None if self.goal == CTGG.NoGoal: self.startWalkAnim() if goalType == CTGG.NoGoal: self.notify.debug('updateGoal setting position to %s' % pos) self.suit.setPos(pos) self.lastThinkTime = 0 self.velocity = Vec3(0, 0, 0) self.oldVelocity = Vec3(0, 0, 0) self.acceleration = Vec3(0, 0, 0) if goalType == CTGG.RunAwayGoal: pass 1 if inResponseClientStamp < self.netTimeSentToStartByHit and self.goal == CTGG.NoGoal and goalType == CTGG.RunAwayGoal: self.notify.warning('ignoring newGoal %s as cog %d was recently hit responsetime=%s hitTime=%s' % (CTGG.GoalStr[goalType], self.cogIndex, inResponseClientStamp, self.netTimeSentToStartByHit)) else: self.lastLocalTimeStampFromAI = globalClockDelta.networkToLocalTime(timestamp, bits = 32) self.goal = goalType self.goalId = goalId self.lastPosFromAI = pos self.doneAdjust = False self.signalledAtReturnPos = False
def setTurnTimer(self, turnEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState().getName() == 'playing': self.clockNode.stop() time = globalClockDelta.networkToLocalTime(turnEnd) timeLeft = int(time - globalClock.getRealTime()) if timeLeft > 0: self.clockNode.setPos(0.64, 0, -0.27) self.clockNode.countdown(timeLeft, self.doRandomMove) self.clockNode.show()
def setTurnTimer(self, turnEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState( ).getName() == 'playing': self.clockNode.stop() time = globalClockDelta.networkToLocalTime(turnEnd) timeLeft = int(time - globalClock.getRealTime()) if timeLeft > 0: self.clockNode.setPos(0.64, 0, -0.27) self.clockNode.countdown(timeLeft, self.doRandomMove) self.clockNode.show()
def setPitcherPos(self, changeSeq, h, timestamp): self.changeSeq = changeSeq if self.smoothStarted: now = globalClock.getFrameTime() local = globalClockDelta.networkToLocalTime(timestamp, now) self.pitcherSmoother.setH(h) self.pitcherSmoother.setTimestamp(local) self.pitcherSmoother.markPosition() else: self.waterPitcherNode.setH(h)
def setGolfSpotPos(self, changeSeq, h, timestamp): self.changeSeq = changeSeq if self.smoothStarted: now = globalClock.getFrameTime() local = globalClockDelta.networkToLocalTime(timestamp, now) self.golfSpotSmoother.setH(h) self.golfSpotSmoother.setTimestamp(local) self.golfSpotSmoother.markPosition() else: self.root.setH(h)
def startInvasion(self, suitName, skel, waiter, startTime, duration): self.startTime = globalClockDelta.networkToLocalTime(startTime, bits = 32) self.notify.info("New invasion! Duration: %s" % duration) self._name, msgs = self.formatInvasionMessage(suitName, skel, waiter, self.__formatBegin) self.displayMsgs(msgs) mult = ToontownBattleGlobals.getInvasionMultiplier(duration == 1) base.localAvatar.inventory.setInvasionCreditMultiplier(mult)
def setGameStart(self, timestamp): self.gameStartTime = globalClockDelta.networkToLocalTime(timestamp) localAvatar.guiMgr.showPVPTimer(self) localAvatar.guiMgr.showPVPTeamIcon() localAvatar.guiMgr.createPVPUI(self.scoreboardHolder) localAvatar.guiMgr.createPVPStatus(self.statsHolder) self.statsChanged() self.scoreChanged() localAvatar.guiMgr.showPVPUI() self.accept('tab', localAvatar.guiMgr.showPVPStatus) self.accept('tab-up', localAvatar.guiMgr.hidePVPStatus) self.request('Game')
def setTurnTimer(self, turnEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState().getName() == 'playing': self.clockNode.stop() time = globalClockDelta.networkToLocalTime(turnEnd) timeLeft = int(time - globalClock.getRealTime()) if timeLeft > 0: self.clockNode.setPos(-0.73999999999999999, 0, -0.20000000000000001) if self.isMyTurn: self.clockNode.countdown(timeLeft, self.doNothing) else: self.clockNode.countdown(timeLeft, self.doNothing) self.clockNode.show()
def startInvasion(self, suitName, skel, waiter, startTime, duration): self.startTime = globalClockDelta.networkToLocalTime(startTime, bits=32) self.notify.info("New invasion! Duration: %s" % duration) self._name, msgs = self.formatInvasionMessage(suitName, skel, waiter, self.__formatBegin) self.displayMsgs(msgs) mult = ToontownBattleGlobals.getInvasionMultiplier(duration == 1) base.localAvatar.inventory.setInvasionCreditMultiplier(mult)
def setTurnTimer(self, turnEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState().getName() == "playing": self.clockNode.stop() time = globalClockDelta.networkToLocalTime(turnEnd) timeLeft = int(time - globalClock.getRealTime()) if timeLeft > 0: self.clockNode.setPos(-0.73999999999999999, 0, -0.20000000000000001) if self.isMyTurn: self.clockNode.countdown(timeLeft, self.doNothing) else: self.clockNode.countdown(timeLeft, self.doNothing) self.clockNode.show()
def makeCogDropBarrel(self, timestamp, inResponseClientStamp, barrelModel, barrelIndex, barrelPos): """Handle the AI telling us the barrel is attached to a cog.""" #assert self.notify.debugStateCall(self) localTimeStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) # TODO validate time? self.lastLocalTimeStampFromAI = localTimeStamp barrelModel.reparentTo(render) barrelModel.setPos(barrelPos) self.barrel = CTGG.NoBarrelCarried
def respondToPieHit(self, timestamp): localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) if self.netTimeSentToStartByHit < timestamp: self.clearGoal() self.showSplat() startPos = CTGG.CogStartingPositions[self.cogIndex] oldPos = self.suit.getPos() self.suit.setPos(startPos) if self.netTimeSentToStartByHit < timestamp: self.netTimeSentToStartByHit = timestamp else: self.notify.debug('localStamp = %s, lastLocalTimeStampFromAI=%s, ignoring respondToPieHit' % (localStamp, self.lastLocalTimeStampFromAI)) self.notify.debug('respondToPieHit self.netTimeSentToStartByHit = %s' % self.netTimeSentToStartByHit)
def setGameStart(self, timestamp): self.notify.debug('%d setGameStart: Starting game' % self.doId) self.gameStartTime = globalClockDelta.networkToLocalTime(timestamp) self.gameStarted = True curGameTime = self.getCurrentGameTime() timeLeft = self.GameDuration - curGameTime self.cleanupTimer() self.timer = ToontownTimer.ToontownTimer() self.timer.posBelowTopRightCorner() self.timer.setTime(timeLeft) self.timer.countdown(timeLeft, self.timerExpired) self.startScheduleTask() self.frame2D.show()
def setCurrentInvasion(self, suitName, skel, waiter, startTime, duration): if duration == 0: self.notify.info('duration 0') return self.startTime = globalClockDelta.networkToLocalTime(startTime, bits = 32) elapsed = globalClock.getRealTime() - self.startTime remaining = duration - elapsed self.notify.info("Invasion in progress! Remaining time: %s" % remaining) self._name, msgs = self.formatInvasionMessage(suitName, skel, False, self.__formatProgress) self.displayMsgs(msgs)
def makeCogCarryBarrel(self, timestamp, inResponseClientStamp, barrelModel, barrelIndex, cogPos): if not self.game: return localTimeStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) self.lastLocalTimeStampFromAI = localTimeStamp inResponseGameTime = self.convertNetworkStampToGameTime(inResponseClientStamp) self.notify.debug('inResponseGameTime =%s timeSentToStart=%s' % (inResponseGameTime, self.netTimeSentToStartByHit)) if inResponseClientStamp < self.netTimeSentToStartByHit and self.goal == CTGG.NoGoal: self.notify.warning('ignoring makeCogCarrybarrel') else: barrelModel.setPos(0, -1.0, 1.5) barrelModel.reparentTo(self.suit) self.suit.setPos(cogPos) self.barrel = barrelIndex
def setTimer(self, timerEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState().getName() == 'waitingToBegin' and not self.table.fsm.getCurrentState().getName() == 'observing': self.clockNode.stop() time = globalClockDelta.networkToLocalTime(timerEnd) timeLeft = int(time - globalClock.getRealTime()) if timeLeft > 0 and timerEnd != 0: if timeLeft > 60: timeLeft = 60 self.clockNode.setPos(1.16, 0, -0.83) self.clockNode.countdown(timeLeft, self.startButtonPushed) self.clockNode.show() else: self.clockNode.stop() self.clockNode.hide()
def setTimer(self, timerEnd): if self.fsm.getCurrentState() != None and self.fsm.getCurrentState().getName() == 'waitingToBegin' and not self.table.fsm.getCurrentState().getName() == 'observing': self.clockNode.stop() time = globalClockDelta.networkToLocalTime(timerEnd) timeLeft = int(time - globalClock.getRealTime() ) if(timeLeft > 0 and timerEnd != 0): if timeLeft > 60: timeLeft = 60 self.clockNode.setPos(1.16, 0, -0.83) self.clockNode.countdown(timeLeft, self.startButtonPushed) self.clockNode.show() else: self.clockNode.stop() self.clockNode.hide()
def setGolfSpotPos(self, changeSeq, h, timestamp): """Handle another client sending an update on the golfSpot rotation.""" #assert self.notify.debugStateCall(self) self.changeSeq = changeSeq if self.smoothStarted: now = globalClock.getFrameTime() local = globalClockDelta.networkToLocalTime(timestamp, now) #self.golfSpotSmoother.setY(y) self.golfSpotSmoother.setH(h) self.golfSpotSmoother.setTimestamp(local) self.golfSpotSmoother.markPosition() else: #self.crane.setY(y) self.root.setH(h)
def markBarrelStolen(self, timestamp, inResponseToClientStamp, barrelIndex): if not self.hasLocalToon: return if barrelIndex not in self.stolenBarrels: self.stolenBarrels.append(barrelIndex) barrel = self.barrels[barrelIndex] barrel.hide() if base.config.GetBool('cog-thief-check-barrels', 1): if not base.config.GetBool('cog-thief-endless', 0): if len(self.stolenBarrels) == len(self.barrels): localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) gameTime = self.local2GameTime(localStamp) self.clockStopTime = gameTime self.notify.debug('clockStopTime = %s' % gameTime) score = int(self.scoreMult * CTGG.calcScore(gameTime) + 0.5) self.rewardPanel['text'] = str(score) self.showResults()
def setCurrentInvasion(self, suitName, skel, waiter, startTime, duration): if duration == 0: self.notify.info('duration 0') return self.startTime = globalClockDelta.networkToLocalTime(startTime, bits = 32) elapsed = globalClock.getRealTime() - self.startTime remaining = duration - elapsed self.notify.info("Invasion in progress! Remaining time: %s" % remaining) mult = ToontownBattleGlobals.getInvasionMultiplier(duration == 1) base.localAvatar.inventory.setInvasionCreditMultiplier(mult) if not self.__announced: self._name, msgs = self.formatInvasionMessage(suitName, skel, False, self.__formatProgress) self.displayMsgs(msgs)
def setGenerations(self, generations): self.notify.info('setGenerations(%s)' % (generations,)) gen2t = {} gen2nt = {} gen2np = {} for id, timestamp32, numPlayers in generations: gen2t[id] = globalClockDelta.networkToLocalTime(timestamp32, bits=32) - self._startTimestamp gen2nt[id] = timestamp32 gen2np[id] = numPlayers ids = self._id2gen.keys() for id in ids: if id not in gen2t: self._removeGeneration(id) for id in gen2t: if id not in self._id2gen: self._addGeneration(id, gen2t[id], gen2nt[id], gen2np[id])
def startWaitToStart(self, waitStartTimestamp): """ Enough players are in. Wait a few seconds before the activity begins to let more players come in and participate. """ self.notify.debug("startWaitToStart") self.waitToStartTimestamp = globalClockDelta.networkToLocalTime( waitStartTimestamp) self._updateWaitForEnoughStatus() # display a countdown showing how long until the game starts self.setStatus(TTLocalizer.PartyTeamActivityWaitingToStart) if self.isLocalToonPlaying: self.showWaitToStartCountdown()
def updateGoal(self, timestamp, inResponseClientStamp, goalType, goalId, pos): """Update our goal and position.""" assert self.notify.debugStateCall(self) self.notify.debug('self.netTimeSentToStartByHit =%s' % self.netTimeSentToStartByHit) if not self.game: self.notify.debug('updateGoal self.game is None, just returning') return if not self.suit: self.notify.debug('updateGoal self.suit is None, just returning') return if self.goal == CTGG.NoGoal: self.startWalkAnim() if goalType == CTGG.NoGoal: self.notify.debug('updateGoal setting position to %s' % pos) self.suit.setPos(pos) self.lastThinkTime = 0 self.velocity = Vec3(0, 0, 0) self.oldVelocity = Vec3(0, 0, 0) self.acceleration = Vec3(0, 0, 0) if goalType == CTGG.RunAwayGoal: #import pdb; pdb.set_trace() pass if inResponseClientStamp < self.netTimeSentToStartByHit and \ self.goal == CTGG.NoGoal and \ goalType == CTGG.RunAwayGoal: #import pdb; pdb.set_trace() self.notify.warning( 'ignoring newGoal %s as cog %d was recently hit responsetime=%s hitTime=%s' % (CTGG.GoalStr[goalType], self.cogIndex, inResponseClientStamp, self.netTimeSentToStartByHit)) else: self.lastLocalTimeStampFromAI = globalClockDelta.networkToLocalTime( timestamp, bits=32) self.goal = goalType self.goalId = goalId self.lastPosFromAI = pos self.doneAdjust = False self.signalledAtReturnPos = False
def getCurrentIngameTime(self, time=None): cycleSpeed = self.cycleSpeed if cycleSpeed <= 0: cycleSpeed = 1 if time is None: currentTime = globalClockDelta.networkToLocalTime( globalClockDelta.getFrameNetworkTime(bits=32)) else: currentTime = time REALSECONDS_PER_GAMEDAY = PiratesGlobals.TOD_REALSECONDS_PER_GAMEDAY / cycleSpeed REALSECONDS_PER_GAMEHOUR = float( REALSECONDS_PER_GAMEDAY / PiratesGlobals.TOD_GAMEHOURS_IN_GAMEDAY) cycleDuration = REALSECONDS_PER_GAMEHOUR * PiratesGlobals.TOD_GAMEHOURS_IN_GAMEDAY timeElapsed = currentTime - self.startingNetTime timeIntoCycle = (timeElapsed + self.timeOffset) % cycleDuration hoursIntoCycle = timeIntoCycle / REALSECONDS_PER_GAMEHOUR return hoursIntoCycle
def syncTOD(self, cycleType, cycleSpeed, startingNetTime, timeOffset): self.clockSyncData = (cycleType, cycleSpeed, startingNetTime, timeOffset) if not self.syncEnabled: return needMessage = 0 if self.cycleType != cycleType: needMessage = 1 if self.cycleSpeed != cycleSpeed: needMessage = 1 self.cycleType = cycleType self.startingServerTime = globalClockDelta.networkToLocalTime( startingNetTime, bits=32) self.timeOffset = timeOffset self.cycleSpeed = cycleSpeed self.enterInitState() if needMessage: messenger.send('TOD_CYCLE_CHANGE') self.restartTimeOfDayMethod() self.processTimeOfDayToggles()
def setCurrentInvasion(self, suitName, skel, waiter, startTime, duration): if duration == 0: self.notify.info('duration 0') return self.startTime = globalClockDelta.networkToLocalTime(startTime, bits=32) elapsed = globalClock.getRealTime() - self.startTime remaining = duration - elapsed self.notify.info("Invasion in progress! Remaining time: %s" % remaining) mult = ToontownBattleGlobals.getInvasionMultiplier(duration == 1) base.localAvatar.inventory.setInvasionCreditMultiplier(mult) if not self.__announced: self._name, msgs = self.formatInvasionMessage( suitName, skel, False, self.__formatProgress) self.displayMsgs(msgs)
def setGameStart(self, timestamp): """ This method gets called from the AI when all avatars are ready Ready usually means they have read the rules Inheritors should call this plus the code to start the game """ self.notify.debug("%d setGameStart: Starting game" % self.doId) self.gameStartTime = \ globalClockDelta.networkToLocalTime(timestamp) self.gameStarted = True curGameTime = self.getCurrentGameTime() timeLeft = self.GameDuration - curGameTime self.cleanupTimer() self.timer = ToontownTimer.ToontownTimer() self.timer.posBelowTopRightCorner() self.timer.setTime(timeLeft) self.timer.countdown(timeLeft, self.timerExpired) self.startScheduleTask() self.frame2D.show()
def syncTOD(self, cycleType, cycleSpeed, startingNetTime, timeOffset): self.clockSyncData = (cycleType, cycleSpeed, startingNetTime, timeOffset) if not self.syncEnabled: return None needMessage = 0 if self.cycleType != cycleType: needMessage = 1 if self.cycleSpeed != cycleSpeed: needMessage = 1 self.cycleType = cycleType self.startingServerTime = globalClockDelta.networkToLocalTime(startingNetTime, bits = 32) self.timeOffset = timeOffset self.cycleSpeed = cycleSpeed self.enterInitState() if needMessage: messenger.send('TOD_CYCLE_CHANGE') self.restartTimeOfDayMethod() self.processTimeOfDayToggles()
def respondToPieHit(self, timestamp): """The toon hit us, react appropriately.""" assert self.notify.debugStateCall(self) localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) # argh using 1.0 sec as fudge #if localStamp > self.lastLocalTimeStampFromAI: if self.netTimeSentToStartByHit < timestamp: self.clearGoal() self.showSplat() # move him to his starting postion startPos = CTGG.CogStartingPositions[self.cogIndex] oldPos = self.suit.getPos() self.suit.setPos(startPos) if self.netTimeSentToStartByHit < timestamp: self.netTimeSentToStartByHit = timestamp else: self.notify.debug( 'localStamp = %s, lastLocalTimeStampFromAI=%s, ignoring respondToPieHit' % (localStamp, self.lastLocalTimeStampFromAI)) self.notify.debug( 'respondToPieHit self.netTimeSentToStartByHit = %s' % self.netTimeSentToStartByHit)
def makeCogCarryBarrel(self, timestamp, inResponseClientStamp, barrelModel, barrelIndex, cogPos): """Handle the AI telling us the barrel is attached to a cog.""" #assert self.notify.debugStateCall(self) if not self.game: return localTimeStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) # TODO validate time? self.lastLocalTimeStampFromAI = localTimeStamp inResponseGameTime = self.convertNetworkStampToGameTime( inResponseClientStamp) self.notify.debug('inResponseGameTime =%s timeSentToStart=%s' % (inResponseGameTime, self.netTimeSentToStartByHit)) if inResponseClientStamp < self.netTimeSentToStartByHit and \ self.goal == CTGG.NoGoal: self.notify.warning('ignoring makeCogCarrybarrel') else: barrelModel.setPos(0, -1.0, 1.5) barrelModel.reparentTo(self.suit) self.suit.setPos(cogPos) self.barrel = barrelIndex
def setMoonAnimation(self, startTime, keyList): currentTime = globalClock.getFrameTime() timeStamp = globalClockDelta.networkToLocalTime(targetTime, bits = 32) relativeStartTime = currentTime - timeStamp
def setGameFinish(self, timestamp): self._finishTime = globalClockDelta.networkToLocalTime(timestamp) self.fsm.request('Finish')
def setGameStart(self, timestamp): self._startTime = globalClockDelta.networkToLocalTime(timestamp) self.fsm.request('Game')
def convertNetworkStampToGameTime(self, timestamp): localStamp = globalClockDelta.networkToLocalTime(timestamp, bits = 32) gameTime = self.game.local2GameTime(localStamp) return gameTime
def setStartTimestamp(self, timestamp32): self.notify.info('setStartTimestamp(%s)' % (timestamp32,)) self._startTimestamp = globalClockDelta.networkToLocalTime(timestamp32, bits=32)
def stopWalking(self, timestamp): """Stop the cog from walking.""" localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) if localStamp > self.lastLocalTimeStampFromAI: self.suit.loop('neutral') self.clearGoal()
def setTimer(self, timerEnd): self.clockNode.stop() time = globalClockDelta.networkToLocalTime(timerEnd) self.timeLeft = int(time - globalClock.getRealTime()) if self.gameWantTimer and self.game != None: self.showTimer()
def stopWalking(self, timestamp): localStamp = globalClockDelta.networkToLocalTime(timestamp, bits = 32) if localStamp > self.lastLocalTimeStampFromAI: self.suit.loop('neutral') self.clearGoal()
def setState(self, newState, timestamp): if newState == 'Active': self.activityStartTime = globalClockDelta.networkToLocalTime( timestamp)
def makeCogDropBarrel(self, timestamp, inResponseClientStamp, barrelModel, barrelIndex, barrelPos): localTimeStamp = globalClockDelta.networkToLocalTime(timestamp, bits = 32) self.lastLocalTimeStampFromAI = localTimeStamp barrelModel.reparentTo(render) barrelModel.setPos(barrelPos) self.barrel = CTGG.NoBarrelCarried
def convertNetworkStampToGameTime(self, timestamp): """Convert a network timestamp to game time.""" localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32) gameTime = self.game.local2GameTime(localStamp) return gameTime