-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEndLevelState.as
203 lines (165 loc) · 5.36 KB
/
EndLevelState.as
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
package
{
import flash.display.MovieClip;
import flash.utils.*;
import flash.text.*;
public class EndLevelState extends StateMachine
{
//How it knows which score to pull from the config
public var levelIndex:int = 0;
private var refToDocClass;
private var enemiesKilledLevel;
private var completionTimeLevel;
private var hitlerHealthLevel;
public var scoreFormat:TextFormat = new TextFormat();
public var enemiesKilledText:TextField = new TextField();
public var completionTimeText:TextField = new TextField();
public var hitlerHealthText:TextField = new TextField();
public var totalText:TextField = new TextField();
public var advanceText:TextField = new TextField();
private var currentTime:int;
private var scoreIncrementTime:int;
private var scoreBackground;
//Which is the next text item to be updated
private var textIndex:int = 0;
private var counterFinished:Boolean;
public function EndLevelState(documentClass)
{
//Give me a reference/pointer to the document class so I can access the variables and functions in the document class
refToDocClass = documentClass;
//When this state is transitioned to, get
scoreFormat.align = TextFormatAlign.CENTER;
scoreFormat.size = 20;
scoreFormat.color = 0xFFFFFF;
enemiesKilledText.text = "Enemies Killed: 0";
completionTimeText.text = "Completion Time: 0";
hitlerHealthText.text = "Health Remaining: 0";
totalText.text = "Total: 0";
enemiesKilledText.width = 800;
enemiesKilledText.y = 80;
completionTimeText.width = 800;
completionTimeText.y = 160;
hitlerHealthText.width = 800;
hitlerHealthText.y = 240;
totalText.width = 800;
totalText.y = 320;
advanceText.width = 800;
advanceText.y = 400;
scoreBackground = new ScoreBackground();
addChild(scoreBackground);
addChild(enemiesKilledText);
addChild(completionTimeText);
addChild(hitlerHealthText);
addChild(totalText);
addChild(advanceText);
}
public function buildScore(l)
{
//retrieve the level states according to which level just ended
switch(l)
{
case 1:
enemiesKilledLevel = Config.enemiesKilledLevel1;
completionTimeLevel = Config.completionTimeLevel1;
hitlerHealthLevel = Config.hitlerHealthLevel1;
levelIndex = 1;
break;
case 2:
enemiesKilledLevel = Config.enemiesKilledLevel2;
completionTimeLevel = Config.completionTimeLevel2;
hitlerHealthLevel = Config.hitlerHealthLevel2;
levelIndex = 2;
break;
case 3:
enemiesKilledLevel = Config.enemiesKilledLevel3;
completionTimeLevel = Config.completionTimeLevel3;
hitlerHealthLevel = Config.hitlerHealthLevel3;
levelIndex = 3;
break;
default:
trace("Incorrect level number given in EndLevelState.buildScore()");
break;
}
//Set the timer
scoreIncrementTime = getTimer + 1500;
//Don't let the player exit the state till we're done
counterFinished = false;
//Reset the text index
textIndex = 0;
}
override public function update()
{
//Get the time
currentTime = getTimer();
//If it's time to update the next score item
if (currentTime > scoreIncrementTime)
{
switch (textIndex)
{
//Empty index to give a delay before the scores start populating
case 0:
textIndex++;
break;
case 1:
enemiesKilledText.text = "Enemies Killed: " + enemiesKilledLevel.toString();
textIndex++;
Audio.play("score_build");
break;
case 2:
var completionTime = (completionTimeLevel / 1000)
completionTimeText.text = "Completion Time: " + completionTime.toString();
textIndex++
Audio.play("score_build");
break;
case 3:
hitlerHealthText.text = "Health Remaining: " + hitlerHealthLevel.toString();
textIndex++
Audio.play("score_build");
break;
case 4:
totalText.text = "Total: " + int(((enemiesKilledLevel * 10) + hitlerHealthLevel + (completionTimeLevel / 1000))).toString();
Config.totalScore += int((enemiesKilledLevel * 10) + hitlerHealthLevel + (completionTimeLevel / 1000));
//if counting is done, let the player advance
counterFinished = true;
//increment the textIndex to stop score retallying
textIndex++;
//Let the player know they can advance
advanceText.text = "Press any key to advance..."
Audio.play("score_final");
break;
}
//Reset the timer
scoreIncrementTime = currentTime + 750;
}
//Print score
//enemiesKilledLevel
enemiesKilledText.setTextFormat(scoreFormat);
completionTimeText.setTextFormat(scoreFormat);
hitlerHealthText.setTextFormat(scoreFormat);
totalText.setTextFormat(scoreFormat);
advanceText.setTextFormat(scoreFormat);
}
override public function keyPressed(key)
{
if (!counterFinished) return;
//Advance to next level
switch(levelIndex)
{
case 1:
refToDocClass.changeStateTo(refToDocClass.s_LevelTwo);
break;
case 2:
refToDocClass.changeStateTo(refToDocClass.s_LevelThree);
break;
case 3:
//Transition to game over screen
refToDocClass.changeStateTo(refToDocClass.s_GameOver);
break;
default:
//refToDocClass.changeStateTo(refToDocClass.s_LevelTwo);
trace("end level state error");
break;
}
}
}
}