-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTerminalZoneFSM.py
More file actions
136 lines (110 loc) · 3.8 KB
/
TerminalZoneFSM.py
File metadata and controls
136 lines (110 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#======================================================================#
#
# Team:
# Hunter Quant
# Edward Pryor
# Nick Marasco
# Shane Peterson
# Brandon Williams
# Jeremy Rose
#
# Last modification: 11/20/14 By: Shayne
#
# Description: FSM for Main Menu and Pause Menu
#
#======================================================================#
#Panda3d imports
from direct.fsm.FSM import FSM
from direct.showbase.ShowBase import ShowBase
from panda3d.core import WindowProperties
#Our class imports
from menus import mainmenu
from menus import pausemenu
from menus import gameover
from menus import winmenu
#Terminal zone finite state machine
class TerminalZoneFSM(FSM):
tasks = 0
mm = 0
pm = 0
wm = 0
def __init__(self):
#Set menu music
self.menuMusic = base.loader.loadMusic("resources/sounds/menu.wav")
self.menuMusic.setLoop(True)
self.menuMusic.play()
FSM.__init__(self, "TerminalZoneFSM")
#Enters play state
def enterPlay(self, load):
self.menuMusic.stop()
properties = WindowProperties()
properties.setCursorHidden(True)
base.win.requestProperties(properties)
if (self.tasks != 0):
for t in self.tasks:
base.taskMgr.add(t)
self.tasks = 0
else:
base.startNewGame(load)
#Exits play
def exitPlay(self):
self.tasks = base.taskMgr.mgr.findTaskChain('GameTasks').getTasks()
base.taskMgr.mgr.remove(self.tasks)
#Enter main menu state
def enterMainMenu(self, n):
self.tasks = 0
properties = WindowProperties()
properties.setCursorHidden(False)
base.win.requestProperties(properties)
self.mm = mainmenu.init(n)
if n == 1:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["mainmenu1"], appendTask=True)
else:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["mainmenu2"], appendTask=True)
#Exit main menu state
def exitMainMenu(self):
base.taskMgr.remove("menu")
self.mm.destroy()
#Enter pause menu state
def enterPauseMenu(self):
#Pause the enemies pursue behavior and shooting ability
for enemy in base.enemyList:
enemy.pause()
self.pm = pausemenu.init()
#Exit pause state
def exitPauseMenu(self):
#Set the enemy pauseFlag to false allowing enemies to be unpaused
for enemy in base.enemyList:
enemy.resume()
self.pm.destroy()
#Enter game over state
def enterGameOver(self, n):
properties = WindowProperties()
properties.setCursorHidden(False)
base.win.requestProperties(properties)
self.gm = gameover.init(n)
if n == 1:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["gameover1"], appendTask=True)
else:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["gameover2"], appendTask=True)
#Exit game over state
def exitGameOver(self):
base.taskMgr.remove("menu")
properties = WindowProperties()
properties.setCursorHidden(True)
base.win.requestProperties(properties)
self.gm.destroy()
#Enter win state
def enterWinMenu(self, n):
properties = WindowProperties()
properties.setCursorHidden(False)
base.win.requestProperties(properties)
self.wm = winmenu.init(n)
if n == 1:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["winmenu1"], appendTask=True)
else:
base.taskMgr.add(base.menusTasks, "menu", extraArgs=["winmenu2"], appendTask=True)
#Exit win state
def exitWinMenu(self):
base.taskMgr.remove("menu")
self.wm.destroy()