def enterVictory(self):
     self._gameDO.disableCannonInput()
     self._victoryScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_VICTORY)
     self._victoryScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._victoryScreen.setupPanel3(self._gameDO.endOfWaveData)
     self._victoryScreen.panel3.nextButton['command'] = self.__continueGame
     self.__createWaitingLabel()
 def enterDefeat(self):
     self._gameDO.disableCannonInput()
     self._resultScreen = CannonDefenseScoreBoard(
         self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(),
         self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_DEFEAT)
     self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._resultScreen.setupPanel3(self._gameDO.endOfWaveData)
     self._resultScreen.panel3.nextButton[
         'command'] = self._gameDO.exitMiniGame
 def enterResultScreen(self):
     self.__destroyVictoryScreen()
     self._gameDO.disableCannonInput()
     self._resultScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.WAVE_COMPLETE)
     self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._resultScreen.setScale(0.85)
     self._resultScreen.reparentTo(base.a2dRightCenter)
     self._resultScreen.setX(-2.3)
     self._resultScreen.setZ(-0.6)
     if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
         if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
             localAvatar.cannon.ammoPanel.onTabClick()
     messenger.send('flashHandleStart')
 def enterVictory(self):
     self._gameDO.disableCannonInput()
     self._victoryScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_VICTORY)
     self._victoryScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._victoryScreen.setupPanel3(self._gameDO.endOfWaveData)
     self._victoryScreen.panel3.nextButton['command'] = self._CannonDefenseFSM__continueGame
     self._CannonDefenseFSM__createWaitingLabel()
 def enterResultScreen(self):
     self._CannonDefenseFSM__destroyVictoryScreen()
     self._gameDO.disableCannonInput()
     self._resultScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.WAVE_COMPLETE)
     self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._resultScreen.setScale(0.84999999999999998)
     self._resultScreen.reparentTo(base.a2dRightCenter)
     self._resultScreen.setX(-2.2999999999999998)
     self._resultScreen.setZ(-0.59999999999999998)
     if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
         if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
             localAvatar.cannon.ammoPanel.onTabClick()
         
     
     messenger.send('flashHandleStart')
class CannonDefenseFSM(FSM):
    
    def __init__(self, gameDO):
        FSM.__init__(self, 'CannonDefenseFSM')
        self._resultScreen = None
        self._gameOverScreen = None
        self._victoryScreen = None
        self._countDownUI = None
        self._gameDO = gameDO
        self._CannonDefenseFSM__lblwaitingFor = None
        self.defaultTransitions = {
            'WaitingForPlayers': [
                'Tutorial'],
            'Tutorial': [
                'WaitingForPlayers',
                'Wave'],
            'Wave': [
                'ResultScreen',
                'WaitingForPlayers',
                'Defeat',
                'Victory'],
            'ResultScreen': [
                'WaitingForPlayers',
                'Wave'],
            'Defeat': [
                'WaitingForPlayers',
                'Wave'],
            'Victory': [
                'WaitingForPlayers',
                'Wave'] }

    
    def enterWaitingForPlayers(self):
        pass

    
    def exitWaitingForPlayers(self):
        pass

    
    def enterTutorial(self):
        self._gameDO.disableCannonFire()
        if localAvatar.cannon and hasattr(localAvatar.cannon.cgui, 'flashHelpButton'):
            localAvatar.cannon.cgui.flashHelpButton(0.20000000000000001, 10)
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
                localAvatar.cannon.ammoPanel.onTabClick()
            
        
        self._countDownUI = CannonDefenseCountdownUI()
        self._countDownUI.reparentTo(base.a2dTopCenter)
        self._countDownUI.setPos(0.0, 0, -0.23000000000000001)

    
    def exitTutorial(self):
        self._gameDO.enableCannonFire()
        if self._countDownUI:
            self._countDownUI.removeNode()
            self._countDownUI = None
        

    
    def enterWave(self):
        pass

    
    def exitWave(self):
        localAvatar.setPirateDazed(False)

    
    def enterResultScreen(self):
        self._CannonDefenseFSM__destroyVictoryScreen()
        self._gameDO.disableCannonInput()
        self._resultScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.WAVE_COMPLETE)
        self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._resultScreen.setScale(0.84999999999999998)
        self._resultScreen.reparentTo(base.a2dRightCenter)
        self._resultScreen.setX(-2.2999999999999998)
        self._resultScreen.setZ(-0.59999999999999998)
        if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
                localAvatar.cannon.ammoPanel.onTabClick()
            
        
        messenger.send('flashHandleStart')

    
    def exitResultScreen(self):
        self._gameDO.enableCannonInput()
        self._CannonDefenseFSM__destroyResultScreen()
        if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.OPENED:
                localAvatar.cannon.ammoPanel.onTabClick()
            
        
        messenger.send('flashHandleStop')

    
    def enterVictory(self):
        self._gameDO.disableCannonInput()
        self._victoryScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_VICTORY)
        self._victoryScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._victoryScreen.setupPanel3(self._gameDO.endOfWaveData)
        self._victoryScreen.panel3.nextButton['command'] = self._CannonDefenseFSM__continueGame
        self._CannonDefenseFSM__createWaitingLabel()

    
    def exitVictory(self):
        self._gameDO.enableCannonInput()
        self._CannonDefenseFSM__destroyVictoryScreen()
        self._CannonDefenseFSM__destroyWaitingLabel()

    
    def enterDefeat(self):
        self._gameDO.disableCannonInput()
        self._resultScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_DEFEAT)
        self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._resultScreen.setupPanel3(self._gameDO.endOfWaveData)
        self._resultScreen.panel3.nextButton['command'] = self._gameDO.exitMiniGame

    
    def exitDefeat(self):
        self._gameDO.enableCannonInput()
        self._CannonDefenseFSM__destroyResultScreen()

    
    def enterOff(self):
        self._CannonDefenseFSM__destroyVictoryScreen()

    
    def exitOff(self):
        pass

    
    def updateCountDown(self, timeLeft):
        if self._resultScreen:
            self._resultScreen.panel1.updateCountDown(timeLeft)
        
        if self._countDownUI:
            self._countDownUI.setTime(timeLeft - 1)
            if timeLeft <= 2:
                if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
                    if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.OPENED:
                        localAvatar.cannon.ammoPanel.onTabClick()
                    
                
            
        

    
    def _CannonDefenseFSM__continueGame(self):
        if self._victoryScreen:
            self._victoryScreen.panel3.nextButton['state'] = DGG.DISABLED
        
        self._gameDO.requestStartBonusRound()

    
    def _CannonDefenseFSM__destroyResultScreen(self):
        if self._resultScreen != None:
            self._resultScreen.destroy()
            self._resultScreen = None
        

    
    def _CannonDefenseFSM__destroyVictoryScreen(self):
        if self._victoryScreen != None:
            self._victoryScreen.destroy()
            self._victoryScreen = None
        

    
    def _CannonDefenseFSM__createWaitingLabel(self):
        self._CannonDefenseFSM__destroyWaitingLabel()
        self._CannonDefenseFSM__lblwaitingFor = OnscreenText(parent = base.a2dTopCenter, pos = (0.0, -0.13), text = PLocalizer.CannonDefense['Waiting'], font = PiratesGlobals.getPirateOutlineFont(), scale = 0.089999999999999997, align = TextNode.ACenter, shadow = PiratesGuiGlobals.TextShadow, fg = PiratesGuiGlobals.TextFG1)

    
    def _CannonDefenseFSM__destroyWaitingLabel(self):
        if self._CannonDefenseFSM__lblwaitingFor:
            self._CannonDefenseFSM__lblwaitingFor.destroy()
            self._CannonDefenseFSM__lblwaitingFor = None
 def enterDefeat(self):
     self._gameDO.disableCannonInput()
     self._resultScreen = CannonDefenseScoreBoard(self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(), self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_DEFEAT)
     self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
     self._resultScreen.setupPanel3(self._gameDO.endOfWaveData)
     self._resultScreen.panel3.nextButton['command'] = self._gameDO.exitMiniGame
class CannonDefenseFSM(FSM):
    def __init__(self, gameDO):
        FSM.__init__(self, 'CannonDefenseFSM')
        self._resultScreen = None
        self._gameOverScreen = None
        self._victoryScreen = None
        self._countDownUI = None
        self._gameDO = gameDO
        self.__lblwaitingFor = None
        self.defaultTransitions = {
            'WaitingForPlayers': ['Tutorial'],
            'Tutorial': ['WaitingForPlayers', 'Wave'],
            'Wave': ['ResultScreen', 'WaitingForPlayers', 'Defeat', 'Victory'],
            'ResultScreen': ['WaitingForPlayers', 'Wave'],
            'Defeat': ['WaitingForPlayers', 'Wave'],
            'Victory': ['WaitingForPlayers', 'Wave']
        }
        return

    def enterWaitingForPlayers(self):
        pass

    def exitWaitingForPlayers(self):
        pass

    def enterTutorial(self):
        self._gameDO.disableCannonFire()
        if localAvatar.cannon and hasattr(localAvatar.cannon.cgui,
                                          'flashHelpButton'):
            localAvatar.cannon.cgui.flashHelpButton(0.2, 10)
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
                localAvatar.cannon.ammoPanel.onTabClick()
        self._countDownUI = CannonDefenseCountdownUI()
        self._countDownUI.reparentTo(base.a2dTopCenter)
        self._countDownUI.setPos(0.0, 0, -0.23)

    def exitTutorial(self):
        self._gameDO.enableCannonFire()
        if self._countDownUI:
            self._countDownUI.removeNode()
            self._countDownUI = None
        return

    def enterWave(self):
        pass

    def exitWave(self):
        localAvatar.setPirateDazed(False)

    def enterResultScreen(self):
        self.__destroyVictoryScreen()
        self._gameDO.disableCannonInput()
        self._resultScreen = CannonDefenseScoreBoard(
            self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(),
            self._gameDO.getNumWaves(), RoundCompleteFlags.WAVE_COMPLETE)
        self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._resultScreen.setScale(0.85)
        self._resultScreen.reparentTo(base.a2dRightCenter)
        self._resultScreen.setX(-2.3)
        self._resultScreen.setZ(-0.6)
        if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.CLOSED:
                localAvatar.cannon.ammoPanel.onTabClick()
        messenger.send('flashHandleStart')

    def exitResultScreen(self):
        self._gameDO.enableCannonInput()
        self.__destroyResultScreen()
        if localAvatar.cannon and hasattr(localAvatar.cannon, 'ammoPanel'):
            if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.OPENED:
                localAvatar.cannon.ammoPanel.onTabClick()
        messenger.send('flashHandleStop')

    def enterVictory(self):
        self._gameDO.disableCannonInput()
        self._victoryScreen = CannonDefenseScoreBoard(
            self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(),
            self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_VICTORY)
        self._victoryScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._victoryScreen.setupPanel3(self._gameDO.endOfWaveData)
        self._victoryScreen.panel3.nextButton['command'] = self.__continueGame
        self.__createWaitingLabel()

    def exitVictory(self):
        self._gameDO.enableCannonInput()
        self.__destroyVictoryScreen()
        self.__destroyWaitingLabel()

    def enterDefeat(self):
        self._gameDO.disableCannonInput()
        self._resultScreen = CannonDefenseScoreBoard(
            self._gameDO.getWaveNumber() + 1, self._gameDO.getBonusSet(),
            self._gameDO.getNumWaves(), RoundCompleteFlags.GAME_DEFEAT)
        self._resultScreen.setupPanel1(self._gameDO.endOfWaveData)
        self._resultScreen.setupPanel3(self._gameDO.endOfWaveData)
        self._resultScreen.panel3.nextButton[
            'command'] = self._gameDO.exitMiniGame

    def exitDefeat(self):
        self._gameDO.enableCannonInput()
        self.__destroyResultScreen()

    def enterOff(self):
        self.__destroyVictoryScreen()

    def exitOff(self):
        pass

    def updateCountDown(self, timeLeft):
        if self._resultScreen:
            self._resultScreen.panel1.updateCountDown(timeLeft)
        if self._countDownUI:
            self._countDownUI.setTime(timeLeft - 1)
            if timeLeft <= 2:
                if localAvatar.cannon and hasattr(localAvatar.cannon,
                                                  'ammoPanel'):
                    if localAvatar.cannon.ammoPanel.state == pirates.minigame.AmmoPanel.OPENED:
                        localAvatar.cannon.ammoPanel.onTabClick()

    def __continueGame(self):
        if self._victoryScreen:
            self._victoryScreen.panel3.nextButton['state'] = DGG.DISABLED
        self._gameDO.requestStartBonusRound()

    def __destroyResultScreen(self):
        if self._resultScreen != None:
            self._resultScreen.destroy()
            self._resultScreen = None
        return

    def __destroyVictoryScreen(self):
        if self._victoryScreen != None:
            self._victoryScreen.destroy()
            self._victoryScreen = None
        return

    def __createWaitingLabel(self):
        self.__destroyWaitingLabel()
        self.__lblwaitingFor = OnscreenText(
            parent=base.a2dTopCenter,
            pos=(0.0, -0.13),
            text=PLocalizer.CannonDefense['Waiting'],
            font=PiratesGlobals.getPirateOutlineFont(),
            scale=0.09,
            align=TextNode.ACenter,
            shadow=PiratesGuiGlobals.TextShadow,
            fg=PiratesGuiGlobals.TextFG1)

    def __destroyWaitingLabel(self):
        if self.__lblwaitingFor:
            self.__lblwaitingFor.destroy()
            self.__lblwaitingFor = None
        return