def _onShipReady(self):
     self._statePushes.extend([
         FunctionCall(self._evalFullHealth, self._state.health,
                      self._state.speed, self._state.armor,
                      self._state.willBeFullHealth).pushCurrentState(),
         FunctionCall(self._evalValidShipClass,
                      self._state.modelClass).pushCurrentState(),
         FunctionCall(self._evalHasTeam, self._state.pvpTeam,
                      self._state.siegeTeam).pushCurrentState()
     ])
예제 #2
0
 def generate(self):
     DistributedPartyTeamActivity.generate(self)
     self._hopOffFinishedSV = StateVar(True)
     self._rewardFinishedSV = StateVar(True)
     self._isWalkStateReadyFC = FunctionCall(self._testWalkStateReady,
                                             self._hopOffFinishedSV,
                                             self._rewardFinishedSV)
예제 #3
0
 def __init__(self):
     Hour = FrameProfiler.Hour
     # how long to wait between frame profiles
     self._period = 2 * FrameProfiler.Minute
     if config.GetBool('frequent-frame-profiles', 0):
         self._period = 1 * FrameProfiler.Minute
     # used to prevent profile from being taken exactly every 'period' seconds
     self._jitterMagnitude = self._period * .75
     # when to log output
     # each entry must be an integer multiple of all previous entries
     # as well as an integer multiple of the period
     self._logSchedule = [ 1 * FrameProfiler.Hour,
                           4 * FrameProfiler.Hour,
                          12 * FrameProfiler.Hour,
                           1 * FrameProfiler.Day,
                           ] # day schedule proceeds as 1, 2, 4, 8 days, etc.
     if config.GetBool('frequent-frame-profiles', 0):
         self._logSchedule = [ 1  * FrameProfiler.Minute,
                               4  * FrameProfiler.Minute,
                               12 * FrameProfiler.Minute,
                               24 * FrameProfiler.Minute,
                               ]
     for t in self._logSchedule:
         assert isInteger(t)
         # make sure the period is evenly divisible into each element of the log schedule
         assert (t % self._period) == 0
     # make sure each element of the schedule is evenly divisible into each subsequent element
     for i in xrange(len(self._logSchedule)):
         e = self._logSchedule[i]
         for j in xrange(i, len(self._logSchedule)):
             assert (self._logSchedule[j] % e) == 0
     assert isInteger(self._period)
     self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileFramesSV())
 def _onShipReady(self):
     ShipRepairSpotMgrBase._onShipReady(self)
     self._statePushes.extend([
         FunctionCall(self._evalNeedModels, self._state.validShipClass,
                      self._state.hasTeam).pushCurrentState(),
         FunctionCall(self._evalNeedHoles, self._state.fullHealth,
                      self._state.needModels).pushCurrentState(),
         FunctionCall(self._needModelsChanged,
                      self._state.needModels).pushCurrentState(),
         FunctionCall(self._needHolesChanged,
                      self._state.needHoles).pushCurrentState(),
         FunctionCall(
             self._handleRepairSpotIndicesChanged,
             PVPGlobals.ShipClass2repairLocators[
                 self._ship.modelClass]).pushCurrentState()
     ])
예제 #5
0
 def __init__(self):
     Hour = FrameProfiler.Hour
     self._period = 2 * FrameProfiler.Minute
     if config.GetBool('frequent-frame-profiles', 0):
         self._period = 1 * FrameProfiler.Minute
     
     self._jitterMagnitude = self._period * 0.75
     self._logSchedule = [
         1 * FrameProfiler.Hour,
         4 * FrameProfiler.Hour,
         12 * FrameProfiler.Hour,
         1 * FrameProfiler.Day]
     if config.GetBool('frequent-frame-profiles', 0):
         self._logSchedule = [
             1 * FrameProfiler.Minute,
             4 * FrameProfiler.Minute,
             12 * FrameProfiler.Minute,
             24 * FrameProfiler.Minute]
     
     for t in self._logSchedule:
         pass
     
     for i in xrange(len(self._logSchedule)):
         e = self._logSchedule[i]
         for j in xrange(i, len(self._logSchedule)):
             pass
         
     
     self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileFramesSV())
     self._enableFC.pushCurrentState()
 def privSetSettingsRef(self, settingsRef):
     SCElement.privSetSettingsRef(self, settingsRef)
     if self._handleWhisperModeFC is None:
         self._handleWhisperModeFC = FunctionCall(self._handleWhisperModeSVChanged, self._handleWhisperModeSV)
         self._handleWhisperModeFC.pushCurrentState()
     self._handleWhisperModeSV.set(self.settingsRef is not None and not self.isWhisperable())
     return
예제 #7
0
 def __init__(self):
     self._enableFC = FunctionCall(self._setEnabled,
                                   taskMgr.getProfileTasksSV())
     self._enableFC.pushCurrentState()
     self._namePrefix2tracker = {}
     self._task = None
     return
예제 #8
0
 def __init__(self):
     self._enableFC = FunctionCall(self._setEnabled,
                                   taskMgr.getProfileTasksSV())
     self._enableFC.pushCurrentState()
     # table of task name pattern to TaskTracker
     self._namePrefix2tracker = {}
     self._task = None
예제 #9
0
 def generate(self):
     self._announcerInterest = None
     self._siegeTeam = 0
     self._siegeTeamUpdater = FunctionCall(self._setSiegeTeam,
                                           localAvatar._siegeTeamSV)
     self._siegeTeamUpdater.pushCurrentState()
     DistributedObject.generate(self)
     self._pvpTeamJoinable = {}
     base.cr.distributedDistrict.siegeManager = self
예제 #10
0
 def privSetSettingsRef(self, settingsRef):
     SCElement.privSetSettingsRef(self, settingsRef)
     if self._handleWhisperModeFC is None:
         self._handleWhisperModeFC = FunctionCall(self._handleWhisperModeSVChanged,
                                                  self._handleWhisperModeSV)
         self._handleWhisperModeFC.pushCurrentState()
     # if this terminal is not whisperable, we need to listen for whisper mode changes
     self._handleWhisperModeSV.set((self.settingsRef is not None) and
                                   (not self.isWhisperable()))
예제 #11
0
 def startHandleEdits(self):
     if __dev__:
         fcs = []
         # each attribute in the game settings entity can have a handler, e.g.
         # def _handleGameDurationChanged(self, gameDuration): ...
         for attribName in Consts.Settings._getAttributeNames():
             handler = getattr(self, '_handle%sChanged' % attribName, None)
             if handler:
                 stateVar = getattr(Consts.Settings, attribName)
                 fcs.append(FunctionCall(handler, stateVar))
         self._functionCalls = fcs
        def startHandleEdits(self):
            fcs = []
            Consts = self.getConsts()
            for item in Consts.__dict__.itervalues():
                if isinstance(item, EntityStateVarSet):
                    for attribName in item._getAttributeNames():
                        handler = getattr(self, '_handle%sChanged' % attribName, None)
                        if handler:
                            stateVar = getattr(item, attribName)
                            fcs.append(FunctionCall(handler, stateVar))

            self._functionCalls = fcs
예제 #13
0
 def announceGenerate(self):
     DistributedInteractive.announceGenerate(self)
     ship = self.cr.doId2do[self._shipId]
     NodePath.__init__(self, 'ship-%s-repairSpot-%s' % (ship.doId, self._index))
     ship.repairSpots[self.doId] = self
     root = ModelNode('ship-%s-repairSpot-%s' % (ship.doId, self._index))
     root.setPreserveTransform(1)
     self.assign(NodePath(root))
     locName = PVPGlobals.RepairSpotLocatorNames[self._index]
     locator = ship.findLocator('**/%s;+s' % locName)
     self.setPos(locator.getPos(ship.getModelRoot()))
     self.setHpr(locator.getHpr(ship.getModelRoot()))
     self.setScale(locator.getScale(ship.getModelRoot()))
     self.reparentTo(ship.getModelRoot())
     self.setInteractOptions(proximityText = PLocalizer.InteractRepairSpot, diskRadius = 10.0, sphereScale = 6.0)
     self.setAllowInteract(1)
     self.checkInUse()
     self._statePushes = DestructiveScratchPad(evalUsable = FunctionCall(self._evalUsableState, ship._repairSpotMgr._state.fullHealth, ship.getWheelInUseSV()).pushCurrentState())
예제 #14
0
 def __init__(self, cr):
     DistributedObject.__init__(self, cr)
     base.cogdoGame = self
     self._waitingStartLabel = DirectLabel(text=TTL.MinigameWaitingForOtherPlayers, text_fg=VBase4(1, 1, 1, 1), relief=None, pos=(-0.6, 0, -0.75), scale=0.075)
     self._waitingStartLabel.hide()
     self.loadFSM = ClassicFSM.ClassicFSM('DistCogdoGame.loaded', [State.State('NotLoaded', self.enterNotLoaded, self.exitNotLoaded, ['Loaded']), State.State('Loaded', self.enterLoaded, self.exitLoaded, ['NotLoaded'])], 'NotLoaded', 'NotLoaded')
     self.loadFSM.enterInitialState()
     self.fsm = ClassicFSM.ClassicFSM('DistCogdoGame', [State.State('Visible', self.enterVisible, self.exitVisible, ['Intro']),
      State.State('Intro', self.enterIntro, self.exitIntro, ['WaitServerStart']),
      State.State('WaitServerStart', self.enterWaitServerStart, self.exitWaitServerStart, ['Game']),
      State.State('Game', self.enterGame, self.exitGame, ['Finish']),
      State.State('Finish', self.enterFinish, self.exitFinish, ['Off']),
      State.State('Off', self.enterOff, self.exitOff, ['Visible'])], 'Off', 'Off')
     self.fsm.enterInitialState()
     self.difficultyOverride = None
     self.exteriorZoneOverride = None
     self._gotInterior = StateVar(False)
     self._toonsInEntranceElev = StateVar(False)
     self._wantStashElevator = StateVar(False)
     self._stashElevatorFC = FunctionCall(self._doStashElevator, self._toonsInEntranceElev, self._gotInterior, self._wantStashElevator)
     return
예제 #15
0
    def __init__(self, cr):
        DistributedObject.DistributedObject.__init__(self, cr)
        self.toons = []
        self.activeIntervals = {}
        self.openSfx = base.loadSfx('phase_5/audio/sfx/elevator_door_open.ogg')
        self.closeSfx = base.loadSfx(
            'phase_5/audio/sfx/elevator_door_close.ogg')
        self.suits = []
        self.reserveSuits = []
        self.joiningReserves = []
        self.distBldgDoId = None
        self._CogdoGameRepeat = config.GetBool('cogdo-game-repeat', 0)
        self.currentFloor = -1
        self.elevatorName = self.__uniqueName('elevator')
        self.floorModel = None
        self.elevatorOutOpen = 0
        self.BottomFloor_SuitPositions = [
            Point3(0, 15, 0),
            Point3(10, 20, 0),
            Point3(-7, 24, 0),
            Point3(-10, 0, 0)
        ]

        self.BottomFloor_SuitHs = [75, 170, -91, -44]

        self.Cubicle_SuitPositions = [
            Point3(0, 18, 0),
            Point3(10, 12, 0),
            Point3(-9, 11, 0),
            Point3(-3, 13, 0)
        ]

        self.Cubicle_SuitHs = [170, 56, -52, 10]

        self.BossOffice_SuitPositions = [
            Point3(0, 15, 0),
            Point3(10, 20, 0),
            Point3(-10, 6, 0),
            Point3(-17, 30, 0)
        ]

        self.BossOffice_SuitHs = [170, 120, 12, 38]

        self._wantBarrelRoom = config.GetBool('cogdo-want-barrel-room', 1)
        self.barrelRoom = CogdoBarrelRoom.CogdoBarrelRoom()
        self.brResults = [[], []]
        self.barrelRoomIntroTrack = None
        self.penthouseOutroTrack = None
        self.penthouseOutroChatDoneTrack = None
        self.penthouseIntroTrack = None
        self.waitMusic = base.loadMusic(
            'phase_7/audio/bgm/encntr_toon_winning_indoor.ogg')
        self.elevatorMusic = base.loadMusic(
            'phase_7/audio/bgm/tt_elevator.ogg')
        self.fsm = ClassicFSM.ClassicFSM('DistributedCogdoInterior', [
            State.State('WaitForAllToonsInside',
                        self.enterWaitForAllToonsInside,
                        self.exitWaitForAllToonsInside, ['Elevator']),
            State.State('Elevator', self.enterElevator, self.exitElevator,
                        ['Game', 'BattleIntro', 'BarrelRoomIntro']),
            State.State('Game', self.enterGame, self.exitGame, [
                'Resting', 'Failed', 'BattleIntro', 'BarrelRoomIntro',
                'Elevator'
            ]),
            State.State('BarrelRoomIntro', self.enterBarrelRoomIntro,
                        self.exitBarrelRoomIntro, ['CollectBarrels', 'Off']),
            State.State('CollectBarrels', self.enterCollectBarrels,
                        self.exitCollectBarrels, ['BarrelRoomReward', 'Off']),
            State.State('BarrelRoomReward', self.enterBarrelRoomReward,
                        self.exitBarrelRoomReward,
                        ['Battle', 'ReservesJoining', 'BattleIntro', 'Off']),
            State.State('BattleIntro', self.enterBattleIntro,
                        self.exitBattleIntro,
                        ['Battle', 'ReservesJoining', 'Off']),
            State.State('Battle', self.enterBattle, self.exitBattle,
                        ['Resting', 'Reward', 'ReservesJoining']),
            State.State('ReservesJoining', self.enterReservesJoining,
                        self.exitReservesJoining, ['Battle']),
            State.State('Resting', self.enterResting, self.exitResting,
                        ['Elevator']),
            State.State('Reward', self.enterReward, self.exitReward, ['Off']),
            State.State('Failed', self.enterFailed, self.exitFailed, ['Off']),
            State.State('Off', self.enterOff, self.exitOff,
                        ['Elevator', 'WaitForAllToonsInside', 'Battle'])
        ], 'Off', 'Off')

        self.fsm.enterInitialState()
        self._haveEntranceElevator = StateVar(False)
        self._stashEntranceElevator = StateVar(False)
        self._stashEntranceElevatorFC = FunctionCall(
            self._doStashEntranceElevator, self._haveEntranceElevator,
            self._stashEntranceElevator)
        self._entranceElevCallbacks = []
        self._doEntranceElevCallbacksFC = FunctionCall(
            self._doEntranceElevCallbacks, self._haveEntranceElevator)
        self.cage = None
        self.shopOwnerNpcId = None
        self.shopOwnerNpc = None
        self._movie = None
        self.SOSToonName = None
        self.FOType = None
예제 #16
0
    1.0,
    1.0,
    1.0])
RepairKitHp = StateVarSetting('pvp.shipHeal.repairKit.HP', WeaponGlobals.getAttackHullHP(InventoryType.ShipRepairKit))
RepairKitSp = StateVarSetting('pvp.shipHeal.repairKit.SP', WeaponGlobals.getAttackSailHP(InventoryType.ShipRepairKit))
SinkHpBonusPercent = StateVarSetting('pvp.sinkBonus.hp.percent', 0.80000000000000004)
SinkStreakPeriod = StateVarSetting('pvp.announcements.sinkStreakPeriod', 5)

def updateRepairKitHp(hp):
    WeaponGlobals.__skillInfo[InventoryType.ShipRepairKit][WeaponGlobals.HULL_HP_INDEX] = hp


def updateRepairKitSp(sp):
    WeaponGlobals.__skillInfo[InventoryType.ShipRepairKit][WeaponGlobals.SAIL_HP_INDEX] = sp

UpdateRepairKitHp = FunctionCall(updateRepairKitHp, RepairKitHp)
UpdateRepairKitHp.pushCurrentState()
UpdateRepairKitSp = FunctionCall(updateRepairKitSp, RepairKitSp)
UpdateRepairKitSp.pushCurrentState()
RepairSpotLocatorNames = [
    'repair_spot_0',
    'repair_spot_1',
    'repair_spot_2',
    'repair_spot_3']
repairSpotNamePrefix = 'pvp.shipHeal.repairSpots.spots.'
ShipClass2repairLocators = {
    ShipGlobals.INTERCEPTORL1: StateVarSetting(repairSpotNamePrefix + 'interceptorL1', [
        0,
        1,
        2,
        3]),