-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameMod.pde
56 lines (47 loc) · 1.44 KB
/
GameMod.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
class GameMod {
protected TetrisGame game;
public void initialize(TetrisGame game) {
this.game = game;
}
public void update() {}
public void setPaused(boolean paused) {}
public void addTime(int extraTime) {}
}
// TimedMode will automatically end the game after a predetermined set of time. This time is specified
// at construction time in milliseconds.
class TimedMode extends GameMod {
private int startTime;
private int gameDuration;
private boolean ended;
private TimeScoreValue timer = new TimeScoreValue("TIME", 0);
TimedMode(int gameDuration) {
this.gameDuration = gameDuration;
this.ended = false;
}
public void initialize(TetrisGame game) {
super.initialize(game);
this.startTime = millis();
game.addScoreValue(timer);
}
public void update() {
timer.seconds = (gameDuration - (millis() - startTime)) / 1000;
if (timer.seconds < 0) timer.seconds = 0;
if (game != null && timer.seconds == 0 && !ended) {
ended = true;
game.audio.playSelectionImproved();
game.transitionToProvider(new ToughestNextPieceProvider(game));
}
}
public void setPaused(boolean paused) {
if (paused) {
// Save how much time is really left right now
this.gameDuration = (gameDuration - (millis() - startTime));
} else {
// Reset the start point
this.startTime = millis();
}
}
public void addTime(int extraTime) {
this.gameDuration += extraTime;
}
}