Now the buttons actually do something - also added a build_type
This commit is contained in:
60
game.cpp
60
game.cpp
@ -20,6 +20,12 @@ Game::~Game()
|
||||
SDL_FreeSurface(background);
|
||||
if (font != NULL)
|
||||
TTF_CloseFont(font);
|
||||
|
||||
for (list<MenuButton*>::iterator cursor = buttons.begin();
|
||||
cursor != buttons.end(); cursor++)
|
||||
{
|
||||
delete *cursor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -41,11 +47,12 @@ bool Game::init()
|
||||
return false;
|
||||
}
|
||||
|
||||
move_button = MenuButton("Move", font, 155, display->h - 95, BUTTON_MOVE);
|
||||
attack_button = MenuButton("Attack", font, 260, display->h - 95,
|
||||
BUTTON_ATTACK);
|
||||
build_button = MenuButton("Build", font, 155, display->h - 50,
|
||||
BUTTON_BUILD);
|
||||
buttons.push_back(new MenuButton("Move", font, 155, display->h - 95,
|
||||
BUTTON_MOVE));
|
||||
buttons.push_back(new MenuButton("Attack", font, 260, display->h - 95,
|
||||
BUTTON_ATTACK));
|
||||
buttons.push_back(new MenuButton("Build", font, 155, display->h - 50,
|
||||
BUTTON_BUILD));
|
||||
|
||||
|
||||
return GameState::init();
|
||||
@ -130,9 +137,12 @@ void Game::render()
|
||||
|
||||
if (data.get_current_vertex() != NULL)
|
||||
{
|
||||
draw_button(&move_button);
|
||||
draw_button(&build_button);
|
||||
draw_button(&attack_button);
|
||||
for (list<MenuButton*>::iterator cursor = buttons.begin();
|
||||
cursor != buttons.end(); cursor++)
|
||||
{
|
||||
MenuButton* button = *cursor;
|
||||
draw_button(button);
|
||||
}
|
||||
}
|
||||
|
||||
SDL_Flip(display);
|
||||
@ -156,6 +166,32 @@ void Game::draw_button(MenuButton* button)
|
||||
}
|
||||
|
||||
|
||||
void Game::handle_button_press(ButtonAction action)
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case BUTTON_BUILD:
|
||||
data.set_mode(MODE_BUILD);
|
||||
break;
|
||||
case BUTTON_ATTACK:
|
||||
data.set_mode(MODE_ATTACK);
|
||||
break;
|
||||
case BUTTON_MOVE:
|
||||
data.set_mode(MODE_MOVE);
|
||||
break;
|
||||
case BUTTON_BUILD_ATTACKER:
|
||||
data.set_build_type(VERTEX_ATTACKER);
|
||||
break;
|
||||
case BUTTON_BUILD_DEFENDER:
|
||||
data.set_build_type(VERTEX_DEFENDER);
|
||||
break;
|
||||
case BUTTON_BUILD_PRODUCER:
|
||||
data.set_build_type(VERTEX_PRODUCER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Game::draw_stats(Vertex* v)
|
||||
{
|
||||
int num_lines = 4;
|
||||
@ -181,8 +217,14 @@ void Game::draw_stats(Vertex* v)
|
||||
|
||||
void Game::on_lbutton_down(int x, int y)
|
||||
{
|
||||
if (y > display->h - 110) return;
|
||||
for (list<MenuButton*>::iterator cursor = buttons.begin();
|
||||
cursor != buttons.end(); cursor++)
|
||||
{
|
||||
MenuButton* button = *cursor;
|
||||
if (button->is_at(x, y)) handle_button_press(button->get_action());
|
||||
}
|
||||
|
||||
if (y > display->h - 110) return;
|
||||
if (!data.endgame()) data.handle_click(x, y);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user