Skip to content
Snippets Groups Projects
game.h 7.09 KiB
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
Jin Zijun's avatar
Jin Zijun committed
/*
#define PERUDO_FPS_DELAY 10
//#define PERUDO_KEY_REPEAT_DELAY 10
#define PERUDO_BACKGROUND_WIDTH 600
#define PERUDO_MAP_HEIGHT 480
Jin Zijun's avatar
Jin Zijun committed

Jin Zijun's avatar
Jin Zijun committed
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);
Jin Zijun's avatar
Jin Zijun committed

Jin Zijun's avatar
Jin Zijun committed
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);
Jin Zijun's avatar
Jin Zijun committed
#endif
Jin Zijun's avatar
Jin Zijun committed
*/