-
Notifications
You must be signed in to change notification settings - Fork 0
/
juego.h
232 lines (179 loc) · 4.57 KB
/
juego.h
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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
//header del juego
#ifndef JUEGO_INCLUDED
#define JUEGO_INCLUDED
#include "control.h"
#include "painter.h"
#include "jukebox.h"
#include "level.h"
#include "LTexture.h"
#include "player.h"
#include <map>
#include <string>
#include <utility>
#include <fstream>
#include <vector>
//fd
class player;
class level;
class menu;
class intro;
class outro;
class smokeCloud;
class credits;
using std::map;
using std::string;
using std::pair;
using std::vector;
class juego{
public:
enum gameState {stPressStart, stMainMenu, stIntro, stPlaying,
stTransition0, stTransition1, stGameOver, stPaused, stOutro, stCredits};
juego(painter*, jukebox*);
~juego();
bool isRunning();
void step(control*);
void draw();
map<string, pair<int, int> >* getMap();
SDL_Surface* getPropsheet();
SDL_Surface* getTilesheet();
LTexture* getPlayerSprites();
LTexture* getEnemySprites();
LTexture* getVladSprites();
LTexture* getPriestSprites();
LTexture* getEffectSheet();
LTexture* getCoinSheet();
LTexture* getDoorSheet();
long int getHighscore();
void setHighscore(long int hs); //no lo creo necesario, pero bue
int getLevelNum();
painter* getPainter();
player* getPlayer();
bool getMode();
//Debería haber usado mapas desde un principio... :(
jukebox* getJukebox();
map<string, Mix_Chunk* >* getSoundBank();
map<string, Mix_Music* >* getMusicBank();
gameState getState();
private:
void loadHighscore();
void saveHighscore();
bool running;
painter* leonardo;
jukebox* bach;
gameState currentScreen;
gameState nextScreen;
SDL_Surface* tiles; //puntero a Surface de tiles
SDL_Surface* props; //puntero a Surface de props
map<string, pair<int, int> > posEnSheet; // mapa de posiciones para props en spritesheet
LTexture* playerSprites; //puntero a Texture de spritesheet de MC
LTexture* enemySprites; //puntero a Texture de spritesheet de enemigos
LTexture* vladSprites; //puntero a Texture de spritesheet de vlad
LTexture* priestSprites; //puntero a Texture de spritesheet del priest
LTexture* effectSheet; //puntero a texture de effectos
LTexture* coinSheet; //puntero a texture de moneditas
LTexture* doorSheet; //puntero a texture de puerta
map<string, Mix_Chunk*> soundBank; //sonidos
map<string, Mix_Music*> musicBank; //música
LTexture* titleScreen; //puntero a texture de título
LTexture* invertedTitle; //puntero a texture de título invertido. Podría haberlo dibujado invertido y con otro color.
LTexture* pressStart; //puntero a texture de texto "press start"
LTexture* gameOverSprite; //puntero a texture de texto "GAME OVER"
LTexture* YNSprite;
LTexture* continueSprite;
bool continueSelected; //indica si se selecciona "continue"
level* currentLevel; //pointer al nivel actual
player* jugador;
unsigned int levelNum; //current level number
unsigned int maxLevel;
bool hardcoreMode; //Si estamos en modo hardcore
long int highscore;
double transTimer; //transition timer
double effectTimer;
menu* mainMenu;
intro* introScreen;
outro* outroScreen;
credits* creditsScreen;
};
class menu{
public:
menu(juego*);
~menu();
void start(); // Función para comenzar
void end(); // Función para terminar
unsigned int goToNext(); //indica si debería irse a la pantalla de juego y en qué modo
void step(control*);
void draw(painter*);
private:
bool alive;
unsigned char selected; // cuál opción es seleccionada?
unsigned char screen; // 0=start, 1=play, 2=options
bool transitioning; // en transición?
double timer; // un timer para medir tiempo
//Texturas
LTexture* menuSprites;
LTexture* cursor;
LTexture* optionSprites;
LTexture* soundSprites;
// sonido
jukebox* bach;
map<string, Mix_Chunk*>* soundBank; //sonidos
};
class intro{
public:
intro(juego*);
~intro();
bool isAlive();
void reset();
void step();
void draw(painter*);
private:
LTexture* introSprites;
bool alive;
double timer;
};
class outro{
public:
outro(juego*);
~outro();
bool isAlive();
void reset();
void step();
void draw(painter*);
private:
LTexture* outroSprites;
LTexture* mansionSprite;
LTexture* smokeSprites;
bool alive;
double timer, timer2;
int rnum;
vector<smokeCloud*> parts;
};
class smokeCloud{
public:
smokeCloud(int, int, LTexture*);
~smokeCloud();
bool isAlive();
void step();
void draw(painter*);
private:
LTexture* sprite;
int type;
int x, y;
int life, maxLife;
double angle;
bool alive;
};
class credits{
public:
credits(painter*);
~credits();
bool isAlive();
void step();
void draw(painter*);
private:
bool alive;
LTexture* text;
int currentText;
double timer;
};
#endif