treewars/game.h

73 lines
1.4 KiB
C++

/* This is the heart of the application - the main game state where we are
actually playing.
This contains the basic game logic.
*/
#ifndef _GAME_H_
#define _GAME_H_
#include "gamedata.h"
#include "gamestate.h"
#include "menubutton.h"
#include "label.h"
#include <SDL_ttf.h>
#include <list>
#include <stack>
#include <map>
using std::list;
using std::stack;
using std::map;
class Game : public GameState
{
public:
Game(stack<GameState*>* state_stack, SDL_Surface* display);
~Game();
bool init();
protected:
void render();
void iterate();
// event handlers
void on_lbutton_down(int x, int y);
void on_rbutton_down(int mX, int mY);
void on_key_down(SDLKey sym, SDLMod mod, Uint16 unicode);
void on_mouse_move(int mX, int mY, int relX, int relY, bool left,
bool right, bool middle);
private:
void draw_stats(GameVertex* v);
void draw_player_info();
void draw_menu_bars();
void handle_button_press(ButtonAction action);
void mode_changed();
// data
GameData data;
// the x,y position of the mouse cursor
int cursor_x;
int cursor_y;
// surfaces containing textures to draw
SDL_Surface* background;
TTF_Font* font;
list<MenuButton*> buttons; // the buttons!
map<VertexType,Label*> costs; // simple renderables
static int NODE_RADIUS;
#ifdef DEBUG
void print_debug_info();
#endif
};
#endif