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)
示例#2
0
    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()
示例#10
0
 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 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 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 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()
示例#21
0
    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
示例#22
0
 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)
示例#23
0
 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 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)
示例#26
0
 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 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
示例#29
0
 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()
示例#30
0
    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()
示例#32
0
 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)
示例#34
0
    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 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])
示例#36
0
    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()
示例#37
0
    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
示例#38
0
    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
示例#39
0
 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)
示例#41
0
    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()
示例#43
0
 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)
示例#44
0
    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')
示例#48
0
 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)
示例#50
0
 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 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 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()
示例#54
0
 def setStartTimestamp(self, timestamp32):
     self.notify.info('setStartTimestamp(%s)' % (timestamp32,))
     self._startTimestamp = globalClockDelta.networkToLocalTime(timestamp32, bits=32)
示例#55
0
 def stopWalking(self, timestamp):
     localStamp = globalClockDelta.networkToLocalTime(timestamp, bits = 32)
     if localStamp > self.lastLocalTimeStampFromAI:
         self.suit.loop('neutral')
         self.clearGoal()
示例#56
0
 def setState(self, newState, timestamp):
     if newState == 'Active':
         self.activityStartTime = globalClockDelta.networkToLocalTime(
             timestamp)
示例#57
0
 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
示例#58
0
 def convertNetworkStampToGameTime(self, timestamp):
     """Convert a network timestamp to game time."""
     localStamp = globalClockDelta.networkToLocalTime(timestamp, bits=32)
     gameTime = self.game.local2GameTime(localStamp)
     return gameTime