1801d2b9fb
UD/AI + Client boots up.
136 lines
4.7 KiB
Python
136 lines
4.7 KiB
Python
from panda3d.core import NodePath
|
|
from direct.interval.MetaInterval import Sequence
|
|
from direct.interval.FunctionInterval import Func
|
|
from toontown.toonbase.ToontownTimer import ToontownTimer
|
|
from toontown.toonbase import ToontownIntervals
|
|
from .CogdoMazeGameGuis import CogdoMazeHud, CogdoMazeMapGui, CogdoMazeBossGui
|
|
from .CogdoGameMessageDisplay import CogdoGameMessageDisplay
|
|
from . import CogdoMazeGameGlobals as Globals
|
|
from .CogdoMemoGui import CogdoMemoGui
|
|
|
|
class CogdoMazeGuiManager:
|
|
|
|
def __init__(self, maze, bossCode):
|
|
self.maze = maze
|
|
self.root = NodePath('CogdoMazeGui')
|
|
self.root.reparentTo(aspect2d)
|
|
self.mazeMapGui = CogdoMazeMapGui(self.maze.collisionTable)
|
|
if bossCode is not None:
|
|
self._bossGui = CogdoMazeBossGui(bossCode)
|
|
else:
|
|
self._bossGui = None
|
|
self._memoGui = CogdoMemoGui(self.root)
|
|
self._memoGui.posNextToLaffMeter()
|
|
self._presentGuiIval = None
|
|
self._presentTimerIval = None
|
|
self._hud = CogdoMazeHud()
|
|
self._timer = None
|
|
self._initMessageDisplay()
|
|
return
|
|
|
|
def _initTimer(self):
|
|
self._timer = ToontownTimer()
|
|
self._timer.hide()
|
|
self._timer.posInTopRightCorner()
|
|
|
|
def _initMessageDisplay(self):
|
|
self.messageDisplay = CogdoGameMessageDisplay('CogdoMazeMessageDisplay', self.root, pos=Globals.MessageLabelPos)
|
|
|
|
def destroy(self):
|
|
ToontownIntervals.cleanup('present_gui')
|
|
ToontownIntervals.cleanup('present_timer')
|
|
ToontownIntervals.cleanup('present_memo')
|
|
self._hud.destroy()
|
|
self._hud = None
|
|
self._memoGui.destroy()
|
|
self._memoGui = None
|
|
if self._bossGui is not None:
|
|
self._bossGui.destroy()
|
|
self._bossGui = None
|
|
self.messageDisplay.destroy()
|
|
self.messageDisplay = None
|
|
self.destroyMazeMap()
|
|
self.destroyTimer()
|
|
if self._presentGuiIval:
|
|
self._presentGuiIval.pause()
|
|
self._presentGuiIval = None
|
|
if self._presentTimerIval:
|
|
self._presentTimerIval.pause()
|
|
self._presentTimerIval = None
|
|
return
|
|
|
|
def destroyMazeMap(self):
|
|
if hasattr(self, 'mazeMapGui') and self.mazeMapGui is not None:
|
|
self.mazeMapGui.destroy()
|
|
del self.mazeMapGui
|
|
return
|
|
|
|
def destroyTimer(self):
|
|
if self._timer is not None:
|
|
self._timer.stop()
|
|
self._timer.destroy()
|
|
self._timer = None
|
|
return
|
|
|
|
def showPickupCounter(self):
|
|
ToontownIntervals.start(ToontownIntervals.getPresentGuiIval(self._memoGui, 'present_memo'))
|
|
|
|
def startGame(self, firstMessage):
|
|
self._presentGuiIval = ToontownIntervals.start(Sequence(ToontownIntervals.getPresentGuiIval(self._bossGui, '', startPos=(0, 0, -0.15)), Func(self.mazeMapGui.show), ToontownIntervals.getPulseLargerIval(self.mazeMapGui, '', scale=self.mazeMapGui.getScale()), Func(self.setMessage, firstMessage), name='present_gui'))
|
|
|
|
def hideMazeMap(self):
|
|
self.mazeMapGui.hide()
|
|
|
|
def showBossGui(self):
|
|
if self._bossGui is not None:
|
|
self._bossGui.show()
|
|
return
|
|
|
|
def hideBossGui(self):
|
|
if self._bossGui is not None:
|
|
self._bossGui.hide()
|
|
return
|
|
|
|
def revealMazeMap(self):
|
|
self.mazeMapGui.revealAll()
|
|
|
|
def hideLock(self, lockIndex):
|
|
self.mazeMapGui.hideLock(lockIndex)
|
|
|
|
def showTimer(self, duration, timerExpiredCallback = None):
|
|
if self._timer is None:
|
|
self._initTimer()
|
|
self._timer.setTime(duration)
|
|
self._timer.countdown(duration, timerExpiredCallback)
|
|
self._presentTimerIval = ToontownIntervals.start(ToontownIntervals.getPresentGuiIval(self._timer, 'present_timer', startPos=(0, 0, 0.35)))
|
|
return
|
|
|
|
def hideTimer(self):
|
|
if hasattr(self, 'timer') and self._timer is not None:
|
|
self._timer.hide()
|
|
self._timer.stop()
|
|
return
|
|
|
|
def setMessage(self, text, color = None, transition = 'fade'):
|
|
self.messageDisplay.updateMessage(text, color, transition)
|
|
|
|
def setMessageTemporary(self, text, time = 3.0):
|
|
self.messageDisplay.showMessageTemporarily(text, time)
|
|
|
|
def clearMessage(self):
|
|
self.messageDisplay.updateMessage('')
|
|
|
|
def setPickupCount(self, count):
|
|
self._memoGui.setCount(count)
|
|
|
|
def showBossCode(self, bossIndex):
|
|
self._bossGui.showNumber(bossIndex)
|
|
|
|
def showBossHit(self, bossIndex):
|
|
self._bossGui.showHit(bossIndex)
|
|
|
|
def showQuestArrow(self, toon, target, offset):
|
|
self._hud.showQuestArrow(toon, target, offset)
|
|
|
|
def hideQuestArrow(self):
|
|
self._hud.hideQuestArrow()
|