Newer
Older
#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED
#include "Button.h"
#include "InputBox.h"
#include "common.h"
#define RGB_WHITE 0x00FFFFFF
#define RGB_GREEN 0x0000FF00
#define RGB_GREY 0x00BEBEBE
#define RGB_RED 0x00FF0000
#define RGB_BLUE 0x000000FF
/*
#define PERUDO_FPS_DELAY 10
//#define PERUDO_KEY_REPEAT_DELAY 10
#define PERUDO_BACKGROUND_WIDTH 600
#define PERUDO_MAP_HEIGHT 480
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
typedef struct stack{
unsigned int stack[BACKGROUND_STACK_SIZE];
unsigned short stackPointer;
}stack;
typedef struct perudo{
SDL_Surface* background_screen;
SDL_Rect background_pos;
SDL_Surface* save_background;
SDL_Surface* tools_image;
SDL_Rect tools_pos;
SDL_Surface* palette_image;
SDL_Rect palette_pos;
SDL_Surface* water;
SDL_Rect water_pos;
SDL_Surface* brightness_image[PERUDO_BRIGHTNESS_CELLS];
SDL_Rect brightness_pos[PERUDO_BRIGHTNESS_CELLS];
Boolean left_click;
Boolean right_click;
Boolean is_active;
short pencil_width;
short tool;
stack stack;
SDL_InputBox input_box;
SDL_Surface* input_surf[PERUDO_NB_INPUTS];
SDL_Rect input_pos[PERUDO_NB_INPUTS];
TTF_Font* font;
SDL_Color text_color;
Uint32 draw_color;
Uint32 draw_color_bright;
Uint32 save_color;
Boolean input_active[PERUDO_ACTIVE_BUTTONS];
SDL_Button buttons[PERUDO_NB_BUTTONS];
SDL_Surface* preview_image;
SDL_Rect preview_pos;
SDL_Rect preview_pos2;
SDL_Rect width_pos;
SDL_Surface* text;
SDL_Rect text_pos;
SDL_Surface* button_state;
SDL_Rect button_state_pos;
SDL_Surface* background_error;
SDL_Rect background_error_pos;
Uint32 background_color;
SDL_Surface* white;
SDL_Rect white_pos;
SDL_Surface* separator;
SDL_Rect separator_pos;
short nb_spawn, pos_spawn,save_spawn;
int spawn_x[MAX_WORMS];
int spawn_y[MAX_WORMS];
short nb_mines, pos_mine,save_mines;
int mines_x[MAX_MINES];
int mines_y[MAX_MINES];
short nb_boxes, pos_box,save_boxes;
int boxes_x[MAX_BOXES];
int boxes_y[MAX_BOXES];
SDL_Surface* spawn;
SDL_Surface* spawn2;
SDL_Surface* spawn3;
SDL_Rect spawn_pos;
SDL_Surface* mine;
SDL_Surface* mine2;
SDL_Surface* mine3;
SDL_Rect mine_pos;
SDL_Surface* box;
SDL_Surface* box2;
SDL_Surface* box3;
SDL_Rect box_pos;
Boolean on_background;
Boolean draw_worm;
Boolean draw_mine;
Boolean draw_box;
Boolean remove_worm;
Boolean remove_mine;
Boolean remove_box;
Boolean spawn_over,spawn_over2;
Boolean mines_over,mines_over2;
Boolean boxes_over,boxes_over2;
Boolean error;
SDL_Surface* palette_color;
SDL_Surface* bright_color;
SDL_Rect palette_color_pos;
SDL_Rect bright_color_pos;
Boolean left_button_released;
unsigned short map_counter;
}perudo;
enum inputs{pen,line,rect,square,circle,ellipse,floodfill,picker,
worm,boxes,mines,clear,previous,save,cancel,load,plus,minus,refresh,map_name};
void Perudo_launch(SDL_Surface* screen);
void Perudo_init(SDL_Surface* screen, perudo* background);
void Perudo_initBackground(perudo* background);
void Perudo_free(perudo* background);
void Perudo_createBackground(SDL_Surface* screen, perudo* map, SDL_Event* event);
void Perudo_setMapName(perudo* map, char* map_name);
void Perudo_setMapNameToInputbox(perudo* map);
void Perudo_GetMapNameFromInputbox(perudo* map);
void Perudo_drawTool(SDL_Surface* screen, perudo* map, SDL_Event* event, Uint32 color);
void Perudo_drawImage(perudo* map, SDL_Event* event);
Boolean Perudo_onSurface(short surfx, short surfy,short surfw, short surfh, short x, short y);
void SetPixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
Uint32 GetPixel(SDL_Surface *surface, int x, int y);
void SetPixelSquare(SDL_Surface* surface, short sx0, short sy0, short x, short y, short widht, Uint32 pixel);
void perudo_drawRect(perudo* map, SDL_Surface* surface, short xb, short yb, short xf, short yf, Uint32 color);
void perudo_drawSquare(perudo* map, SDL_Surface* surface, short xb, short yb, short xf, short yf, Uint32 color);
void perudo_drawCircle(perudo* map, SDL_Surface* surface, short x, short y, short r, Uint32 color );
void perudo_ellipsePlotPoints(perudo* map, SDL_Surface* surface, int xCenter, int yCenter, int x, int y, Uint32 color);
void perudo_drawEllipse(perudo* map, SDL_Surface* surface, int x0, int y0, int a, int b, Uint32 color);
void perudo_drawLine(perudo*map, SDL_Surface* surface, short xb, short yb, short xf, short yf, short widht, Uint32 color);
void perudo_switchImage(perudo* map);
void perudo_saveImageForSwitch(perudo* map);
void Mouse_Move(perudo* map, SDL_Event* event, int* xf, int* yf);
Boolean perudo_needRepetition(perudo* map);
void perudo_changePencilWidht(perudo* map, int op);
void perudo_saveMapToFile(SDL_Surface* screen, perudo* map, SDL_Event* event);
short Sqrt(short x, short y, short xf, short yf);
Boolean perudo_fill(perudo* map, short x, short y,Uint32 color);
void perudo_inBoundries(perudo* map, short* xb, short* yb);
void perudo_loadMap(SDL_Surface* screen, perudo* map, SDL_Event* event);
void perudo_inBoundriesI(perudo* map, int* x, int* y);
void perudo_updateToolBox(SDL_Surface* screen, perudo* map, SDL_Event* event);
void perudo_initToolBox(perudo* map);
void perudo_freeToolBox(perudo* map);
void perudo_initPalette(perudo* map);
void perudo_getPaletteColor(perudo* map, SDL_Event* event, Uint32* color, Uint32* bright_color);
void perudo_colorPicker(perudo* map, SDL_Event* event, Uint32 *color, Uint32* bright_color);
void perudo_updatePreview(perudo* map);
void perudo_initBrightnessSelector(perudo* map);
void perudo_updateBrightnessSelector(perudo* map);
void perudo_setWater(SDL_Surface* screen, perudo* map);
void perudo_buttonActive(perudo* map);
void perudo_initSpawn(perudo* map);
void perudo_putEntity(perudo* map, short x, short y, short entity);
void perudo_drawEntity(SDL_Surface* screen, perudo* map);
Boolean perudo_entityDrawAllowed(SDL_Surface* screen, perudo* map, short x, short y, short entity);
void perudo_removeEntity(perudo* map, short x, short y, short entity);
Boolean perudo_entityRemoveAllowed(perudo* map, short x, short y, short entity, short* nb);
void perudo_cursor(SDL_Surface* screen, perudo* map, SDL_Event* event);
void perudo_setTransparancy(perudo* map);
void perudo_writeMapDataFile(perudo* map, char* path);
void perudo_readMapDataFromFile(perudo* map, char* path);
void perudo_unsetTransparancy(perudo* map);
void perudo_error(SDL_Surface* screen, perudo* map);
void perudo_updatePosButtons(perudo* map);
void perudo_changeMapName(perudo* map);
void perudo_initMapNames(perudo* map);
unsigned short perudo_searchMapName(perudo* map, char* map_name);
void perudo_saveMapNames(perudo* map);
void perudo_freeMapNames(perudo* map);
void Stack_emptyStack(stack* s,short h);
Boolean Stack_push(short x, short y, stack* s,short h);
Boolean Stack_pop(short* x, short* y, stack* s,short h);