Unuk/src/libUnuk/UI/IngameMenu.cpp
2012-01-14 03:39:10 +00:00

99 lines
3.2 KiB
C++

#include "IngameMenu.h"
IngameMenu::IngameMenu(void) {
_active = false;
Button* btnResume = new Button();
btnResume->SetOutRGB(200, 200, 200);
btnResume->SetOverRGB(255, 255, 255);
btnResume->SetTextRGB(0, 0, 0);
btnResume->SetText("Resume Game");
btnResume->SetHighlightRGB(255, 128, 0);
btnResume->SetHighlighted(false);
btnResume->SetXY(SCREEN_WIDTH / 2 - btnResume->GetWidth() / 2, 50);
Button* btnSaveGame = new Button();
btnSaveGame->SetOutRGB(200, 200, 200);
btnSaveGame->SetOverRGB(255, 255, 255);
btnSaveGame->SetTextRGB(0, 0, 0);
btnSaveGame->SetText("SaveGame");
btnSaveGame->SetHighlightRGB(255, 128, 0);
btnSaveGame->SetHighlighted(false);
btnSaveGame->SetXY(SCREEN_WIDTH / 2 - btnSaveGame->GetWidth() / 2, 100);
Button* btnLoadGame = new Button();
btnLoadGame->SetOutRGB(200, 200, 200);
btnLoadGame->SetOverRGB(255, 255, 255);
btnLoadGame->SetTextRGB(0, 0, 0);
btnLoadGame->SetText("LoadGame");
btnLoadGame->SetHighlightRGB(255, 128, 0);
btnLoadGame->SetHighlighted(false);
btnLoadGame->SetXY(SCREEN_WIDTH / 2 - btnLoadGame->GetWidth() / 2, 150);
Button* btnOptions = new Button();
btnOptions->SetOutRGB(200, 200, 200);
btnOptions->SetOverRGB(255, 255, 255);
btnOptions->SetTextRGB(0, 0, 0);
btnOptions->SetText("Options");
btnOptions->SetHighlightRGB(255, 128, 0);
btnOptions->SetHighlighted(false);
btnOptions->SetXY(SCREEN_WIDTH / 2 - btnOptions->GetWidth() / 2, 200);
Button* btnExitToMenu = new Button();
btnExitToMenu->SetOutRGB(200, 200, 200);
btnExitToMenu->SetOverRGB(255, 255, 255);
btnExitToMenu->SetTextRGB(0, 0, 0);
btnExitToMenu->SetText("Exit To Main Menu");
btnExitToMenu->SetHighlightRGB(255, 128, 0);
btnExitToMenu->SetHighlighted(false);
btnExitToMenu->SetXY(SCREEN_WIDTH / 2 - btnExitToMenu->GetWidth() / 2, 250);
_buttons.AddButton(btnResume);
_buttons.AddButton(btnSaveGame);
_buttons.AddButton(btnLoadGame);
_buttons.AddButton(btnOptions);
_buttons.AddButton(btnExitToMenu);
}
IngameMenu::~IngameMenu(void) {
}
ingameMenuNavVal_t IngameMenu::HandleInput(void) {
while(SDL_PollEvent(&event)) {
_buttons.CheckMouseOverDummy();
if(event.key.type == SDL_KEYDOWN) {
if(event.key.keysym.sym == SDLK_ESCAPE) {
return ingameMenuResume;
} else if(event.key.keysym.sym == SDLK_DOWN) {
_buttons.SelectNext();
} else if(event.key.keysym.sym == SDLK_UP) {
_buttons.SelectPrevious();
} else if(event.key.keysym.sym == SDLK_RETURN) {
switch(_buttons.GetSelectedButton()) {
case 0: return ingameMenuResume;
case 1: return ingameMenuSaveGame;
case 2: return ingameMenuLoadGame;
case 3: return ingameMenuOptions;
case 4: return ingameMenuMainMenu;
}
}
}
else if(event.type == SDL_MOUSEBUTTONUP) {
if(event.button.button == SDL_BUTTON_LEFT) {
switch(_buttons.CheckMouseOver()) {
case 0: return ingameMenuResume;
case 1: return ingameMenuSaveGame;
case 2: return ingameMenuLoadGame;
case 3: return ingameMenuOptions;
case 4: return ingameMenuMainMenu;
}
}
}
}
return ingameMenuNothing;
}
void IngameMenu::Render(void) {
_buttons.RenderLiteral();
}