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

172 lines
4.8 KiB
C++

#include "MainMenu.h"
MainMenu::MainMenu(void) {
Button* btnNewGame = new Button();
btnNewGame->SetOutRGB(200, 200, 200);
btnNewGame->SetOverRGB(255, 255, 255);
btnNewGame->SetTextRGB(0, 0, 0);
btnNewGame->SetText("New Game");
btnNewGame->SetXY(100, 150);
btnNewGame->SetHighlightRGB(255, 128, 0);
btnNewGame->SetHighlighted(false);
Button* btnLoadGame = new Button();
btnLoadGame->SetOutRGB(200, 200, 200);
btnLoadGame->SetOverRGB(255, 255, 255);
btnLoadGame->SetTextRGB(0, 0, 0);
btnLoadGame->SetText("Load Game");
btnLoadGame->SetHighlightRGB(255, 128, 0);
btnLoadGame->SetHighlighted(false);
btnLoadGame->SetXY(100, 200);
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(100, 250);
Button* btnExit = new Button();
btnExit->SetOutRGB(200, 200, 200);
btnExit->SetOverRGB(255, 255, 255);
btnExit->SetTextRGB(0, 0, 0);
btnExit->SetText("Exit");
btnExit->SetHighlightRGB(255, 128, 0);
btnExit->SetHighlighted(false);
btnExit->SetXY(100, 300);
grpMain.AddButton(btnNewGame);
grpMain.AddButton(btnLoadGame);
grpMain.AddButton(btnOptions);
grpMain.AddButton(btnExit);
btnNewGameActive = false;
lblNewGame.SetXY(275, 160);
lblNewGame.SetTextBlended("This will delete your current game, are you sure?", vsmall, 0, 0, 0);
rectNewGame.SetRGB(200, 200, 200);
rectNewGame.SetXY(250, 150);
rectNewGame.SetWidthHeight(lblNewGame.GetWidth() + 50, 90);
lblMenu.SetXY(100, 75);
lblMenu.SetTextBlended("Unuk", vlarge, 0, 0, 0);
Button* btnNewGameYes = new Button();
btnNewGameYes->SetOutRGB(20, 150, 20);
btnNewGameYes->SetOverRGB(20, 255, 20);
btnNewGameYes->SetTextRGB(0, 0, 0);
btnNewGameYes->SetText("Yes");
btnNewGameYes->SetHighlightRGB(255, 128, 0);
btnNewGameYes->SetHighlighted(false);
btnNewGameYes->SetXY(rectNewGame.GetX() + rectNewGame.GetWidth() / 2 - 40 - btnNewGameYes->GetWidth(), 190);
Button* btnNewGameNo = new Button();
btnNewGameNo->SetOutRGB(150, 20, 20);
btnNewGameNo->SetOverRGB(255, 20, 20);
btnNewGameNo->SetTextRGB(0, 0, 0);
btnNewGameNo->SetText("No");
btnNewGameNo->SetHighlightRGB(255, 128, 0);
btnNewGameNo->SetHighlighted(false);
btnNewGameNo->SetXY(rectNewGame.GetX() + rectNewGame.GetWidth() / 2 + 40 - btnNewGameNo->GetWidth(), 190);
grpNewGame.AddButton(btnNewGameYes);
grpNewGame.AddButton(btnNewGameNo);
//m_background.Load("MainMenu");
camera.x = 0;
camera.y = 0;
}
MainMenu::~MainMenu(void) {
}
mainMenuNavVal_t MainMenu::Run(void) {
FPS fpsLimiter(20);
bool running = true;
while(running) {
Render();
SDL_Flip(screen);
while(SDL_PollEvent(&event)) {
grpMain.CheckMouseOverDummy();
if(btnNewGameActive) {
grpNewGame.CheckMouseOverDummy();
}
if(event.key.type == SDL_KEYDOWN) {
if(event.key.keysym.sym == SDLK_DOWN) {
if(btnNewGameActive) {
grpNewGame.SelectNext();
} else {
grpMain.SelectNext();
}
} else if(event.key.keysym.sym == SDLK_UP) {
if(btnNewGameActive) {
grpNewGame.SelectPrevious();
} else {
grpMain.SelectPrevious();
}
} else if(event.key.keysym.sym == SDLK_RETURN) {
if(btnNewGameActive) {
switch(grpNewGame.GetSelectedButton()) {
case 0: return mainMenuNewGame; break;
case 1: btnNewGameActive = false; break;
}
} else {
switch(grpMain.GetSelectedButton()) {
case 0: btnNewGameActive = !btnNewGameActive; break;
case 1: return mainMenuLoadGame;
case 2: return mainMenuOptions;
case 3: return mainMenuExitGame;
}
}
}
}
else if(event.type == SDL_MOUSEBUTTONUP) {
if(event.button.button == SDL_BUTTON_LEFT) {
switch(grpMain.CheckMouseOver()) {
case 0: btnNewGameActive = !btnNewGameActive; break;
case 1: return mainMenuLoadGame;
case 2: return mainMenuOptions;
case 3: return mainMenuExitGame;
}
if(btnNewGameActive) {
switch(grpNewGame.CheckMouseOver()) {
case 0: return mainMenuNewGame; break;
case 1: btnNewGameActive = false; break;
}
}
}
}
else if(event.type == SDL_QUIT) {
return mainMenuExitGame;
}
}
fpsLimiter.LimitFPS();
}
return mainMenuExitGame;
}
void MainMenu::Render(void) {
//m_background.Render();
lblMenu.Render();
grpMain.RenderLiteral();
if(btnNewGameActive) {
rectNewGame.Draw();
lblNewGame.Render();
grpNewGame.RenderLiteral();
}
}