Now the buttons actually do something - also added a build_type

This commit is contained in:
2011-07-03 10:12:47 -04:00
parent d04cde49c8
commit 793d6bd9a2
4 changed files with 67 additions and 15 deletions

View File

@ -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);
}