forked from Pomax/Pjs-2D-Game-Engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameLoader.pde
executable file
·117 lines (103 loc) · 2.8 KB
/
GameLoader.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
/**
* This encodes all the boilerplate code
* necessary for screen drawing and input
* handling.
*/
// global screens container
HashMap<String, Screen> screenSet;
// global 'currently active' screen
Screen activeScreen = null;
// Necessary for Processing 3
void settings() {
size(screenWidth, screenHeight, P2D);
}
// setup sets up the screen size, and screen container,
// then calls the "initialize" method, which you must
// implement yourself.
void setup() {
try {
// processing 2?
size(screenWidth, screenHeight, P2D);
} catch (Exception e) {
// processing 3 will have already called settings()
}
noLoop();
screenSet = new HashMap<String, Screen>();
SpriteMapHandler.init(this);
SoundManager.init(this);
CollisionDetection.init(this);
initialize();
}
// draw loop
void draw() {
activeScreen.draw();
SoundManager.draw();
}
// event handling
void keyPressed() { activeScreen.keyPressed(key, keyCode); }
void keyReleased() { activeScreen.keyReleased(key, keyCode); }
void mouseMoved() { activeScreen.mouseMoved(mouseX, mouseY); }
void mousePressed() { SoundManager.clicked(mouseX,mouseY); activeScreen.mousePressed(mouseX, mouseY, mouseButton); }
void mouseDragged() { activeScreen.mouseDragged(mouseX, mouseY, mouseButton); }
void mouseReleased() { activeScreen.mouseReleased(mouseX, mouseY, mouseButton); }
void mouseClicked() { activeScreen.mouseClicked(mouseX, mouseY, mouseButton); }
/**
* Mute the game
*/
void mute() { SoundManager.mute(true); }
/**
* Unmute the game
*/
void unmute() { SoundManager.mute(false); }
/**
* Screens are added to the game through this function.
*/
void addScreen(String name, Screen screen) {
screenSet.put(name, screen);
if (activeScreen == null) {
activeScreen = screen;
loop();
} else { SoundManager.stop(activeScreen); }
}
/**
* We switch between screens with this function.
*
* Because we might want to move things from the
* old screen to the new screen, this function gives
* you a reference to the old screen after switching.
*/
Screen setActiveScreen(String name) {
Screen oldScreen = activeScreen;
activeScreen = screenSet.get(name);
if (oldScreen != null) {
oldScreen.cleanUp();
SoundManager.stop(oldScreen);
}
if (activeScreen == null) {
println("could not assign active screen: ", name);
}
SoundManager.loop(activeScreen);
return oldScreen;
}
/**
* Screens can be removed to save memory, etc.
* as long as they are not the active screen.
*/
void removeScreen(String name) {
if (screenSet.get(name) != activeScreen) {
screenSet.remove(name);
}
}
/**
* Get a specific screen (for debug purposes)
*/
Screen getScreen(String name) {
return screenSet.get(name);
}
/**
* clear all screens
*/
void clearScreens() {
screenSet = new HashMap<String, Screen>();
activeScreen = null;
}