-
Notifications
You must be signed in to change notification settings - Fork 0
/
LC_Game.pde
208 lines (198 loc) · 5.02 KB
/
LC_Game.pde
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
//=======================================\\
// LOGICOLOUR : A COLOURFUL PUZZLE GAME \\
// ------------------------------------- \\
// AUTHOR: KYLE DERBY MACINNIS \\
// DATE: MARCH 12, 2015 \\
// ------------------------------------- \\
// LAST UPDATED: MARCH 30, 2015 \\
// ------------------------------------- \\
// \\
// LC_Game.pde \\
// \\
// ------------------------------------- \\
//=======================================\\
// GAME CLASS DECLARATION
class Game
{
//Frame Counter
int cnt;
// Internal Pointers to Global Objects
Menu menu;
Menu tutorial;
LSelect levels;
Puzzle puzzle;
Score score;
// State Machine - State Declaration
int cur_State;
int next_State;
// Game Loader Flag
boolean gameLoaded = false;
// Timer for Score Screen
int count = 0;
// Default Constructor
public Game()
{
// Null Objects
menu = null;
tutorial = null;
levels = null;
puzzle = null;
score = null;
// Initialize State Machine
cur_State = INIT;
next_State = INIT;
// Frame counter
cnt = 0;
}
// Main Constructor
public Game(Menu gmenu, Menu gtut, LSelect glevels, Puzzle gpuzzle, Score gscore)
{
// Associate Objects
this.menu = gmenu;
this.tutorial = gtut;
this.levels = glevels;
this.puzzle = gpuzzle;
this.score = gscore;
// Initialize State Machine
cur_State = INIT;
next_State = INIT;
// Frame Counter
cnt = 0;
}
// Load Puzzle
public void loadPuzzle(int diff)
{
this.puzzle = new Puzzle(diff);
}
// Return Current State of State Machine
public int getState()
{
return this.cur_State;
}
// Set State of State Machine
public void setState(int gState)
{
this.next_State = gState;
}
// State Machine Controller
public void StateMachine()
{
switch(cur_State)
{
// INITIALIZATION STATE
case INIT:
// Make a loading screen for 3 seconds
if ( (cnt >= 60) && gameLoaded)
{
game.setState(MENU);
}
// Error Checking for Proper Game Object Creation
else if ( (menu == null) || (levels == null) || (puzzle == null) || (score == null) )
{
// Make Warning Screen and Proceed no Further
background(100, 00, 00);
textFont(WarningFont, 20);
fill(#aaaaaa);
textAlign(CENTER);
//mainMusic.loop();
text("Error: Game Failed to Load Properly!\n\nPlease Restart.", (wSize/2), (hSize/2));
}
// Error Checking for Time Out
else if ( (cnt >= 300) && !gameLoaded)
{
// Make Warning Screen and Proceed no Further
background(100, 00, 00);
textFont(WarningFont, 20);
fill(#aaaaaa);
textAlign(CENTER);
//mainMusic.loop();
text("Error: Game Loading Timed Out!\n\nPlease Restart.", (wSize/2), (hSize/2));
}
// Load Game Files
else
{
// Increment Count
cnt++;
// Check for Loading Complete
if (!this.gameLoaded)
{
// Load Files Here --------->
// Once Loaded - Set Flag
this.gameLoaded = true;
}
// Loading Screen Animation
background(00,44,88);
if (cnt%3==0)
{
noStroke();
fill(random(255), random(255), random(255));
ellipse(random(wSize), random(hSize), 50, 50);
fill(random(255), random(255), random(255));
ellipse(random(wSize/2), random(hSize), 100, 100);
}
textFont(GameFont, 30);
fill(255);
textAlign(CENTER);
text("Initializing!", (wSize/2), (hSize/2));
}
break;
// MENU STATE
case MENU:
// Menu Display Loop
this.menu.Display();
break;
// TUTORIAL SCREEN
case TUTORIAL:
// Display Tutorial Screen
this.tutorial.Display();
break;
// LEVEL SELECT
case LEVEL_SELECT:
// Level Select Screen Display Loop
this.levels.Display();
break;
// PUZZLE
case PUZZLE:
// Puzzle Functions go here
if (!this.puzzle.isGenerated())
{
this.puzzle.Generate();
} else
{
// Simulate Puzzle
this.puzzle.Simulate();
// Display Puzzle
this.puzzle.Display();
}
break;
// SCORE
case SCORE:
// Score Functions go here
// Check for High Score
//Play Music
if(count <= 65)
{
//deleteSound.play();
count++;
}
//this.score.checkScore();
// Display Screen
this.score.Display();
break;
// CLEAR
case CLEAR:
// Clearing Functions go here
this.puzzle = new Puzzle();
this.score = new Score();
connectorList = new ArrayList<Node>();
this.setState(MENU);
break;
// ERROR
default:
// Error - Reinitialize
next_State = INIT;
}
// Set Next State
cur_State = next_State;
}
}