git repos / blockattack-game

commit fc8e3d6a

sago007 · 2011-06-25 16:31
fc8e3d6acaf045508dda8cfe2b44392ec1a47cf4 patch · browse files
parent 00127e1a84e37face6d01fb23b04ab7ca81984a9

Something to the menusystem


git-svn-id: https://blockattack.svn.sourceforge.net/svnroot/blockattack/trunk@123 9d7177f8-192b-0410-8f35-a16a89829b06

Changed files

M source/code/MenuSystem.cc before
M source/code/MenuSystem.h before
M source/code/menudef.cpp before
diff --git a/source/code/MenuSystem.cc b/source/code/MenuSystem.cc index cc6b398..b3a182a 100644 --- a/source/code/MenuSystem.cc +++ b/source/code/MenuSystem.cc
@@ -123,21 +123,21 @@ void Button::drawTo(SDL_Surface **surface)
void Menu::drawSelf()
{
DrawIMG(backgroundImage,screen,0,0);
- vector<Button>::iterator it;
+ vector<Button*>::iterator it;
for(it = buttons.begin();it < buttons.end(); it++)
- (*it).drawTo(&screen);
+ (*it)->drawTo(&screen);
exit.drawTo(&screen);
mouse.PaintTo(screen,mousex,mousey);
}
void Menu::performClick(int x,int y)
{
- vector<Button>::iterator it;
+ vector<Button*>::iterator it;
for(it = buttons.begin();it < buttons.end(); it++)
{
- Button b = (*it);
- if(b.isClicked(x,y))
- b.doAction();
+ Button *b = (*it);
+ if(b->isClicked(x,y))
+ b->doAction();
}
if(exit.isClicked(x,y))
running = false;
@@ -147,28 +147,28 @@ void Menu::placeButtons()
{
int nextY = 50;
const int X = 50;
- vector<Button>::iterator it;
+ vector<Button*>::iterator it;
for(it = buttons.begin();it < buttons.end(); it++)
{
- (*it).x = X;
- (*it).y = nextY;
+ (*it)->x = X;
+ (*it)->y = nextY;
nextY += ButtonGfx::ysize+10;
}
exit.x = X;
exit.y = nextY;
}
-void Menu::addButton(Button b)
+void Menu::addButton(Button *b)
{
buttons.push_back(b);
- b.marked = false;
+ b->marked = false;
placeButtons();
}
Menu::Menu(SDL_Surface **screen)
{
this->screen = *screen;
- buttons = vector<Button>(10);
+ buttons = vector<Button*>(10);
isSubmenu = true;
exit.setLabel("Back");
}
@@ -176,7 +176,7 @@ Menu::Menu(SDL_Surface **screen)
Menu::Menu(SDL_Surface **screen,bool submenu)
{
this->screen = *screen;
- buttons = vector<Button>(0);
+ buttons = vector<Button*>(0);
isSubmenu = submenu;
if(isSubmenu)
exit.setLabel("Back");
@@ -223,7 +223,7 @@ void Menu::run()
if(event.key.keysym.sym == SDLK_RETURN || event.key.keysym.sym == SDLK_KP_ENTER ) {
if(marked < buttons.size())
- buttons.at(marked).doAction();
+ buttons.at(marked)->doAction();
if(marked == buttons.size())
running = false;
}
@@ -233,7 +233,7 @@ void Menu::run()
}
for(int i=0;i<buttons.size();i++) {
- buttons.at(i).marked = (i == marked);
+ buttons.at(i)->marked = (i == marked);
}
exit.marked = (marked == buttons.size());
SDL_GetMouseState(&mousex,&mousey);
diff --git a/source/code/MenuSystem.h b/source/code/MenuSystem.h index f97ff57..1af0fd0 100644 --- a/source/code/MenuSystem.h +++ b/source/code/MenuSystem.h
@@ -90,7 +90,7 @@ class Button {
class Menu {
private:
- vector<Button> buttons; //Vector holder the buttons
+ vector<Button*> buttons; //Vector holder the buttons
Button exit; //The exit button is special since it does not have a callback function
bool isSubmenu; //True if the menu is a submenu
int marked; //The index of the marked button (for keyboard up/down)
@@ -108,7 +108,7 @@ class Menu {
Menu(SDL_Surface **screen);
//Add a button to the menu
- void addButton(Button b);
+ void addButton(Button *b);
//Run the menu
void run();
diff --git a/source/code/menudef.cpp b/source/code/menudef.cpp index c3e1bca..a0faf2b 100644 --- a/source/code/menudef.cpp +++ b/source/code/menudef.cpp
@@ -85,15 +85,50 @@ public:
long ChangeKeysMenu::player;
+void ChangeKeysMenu::ChangeDownKey(Button* b) {
+
+}
+
+void ChangeKeysMenu::ChangeLeftKey(Button* b) {
+
+}
+
+void ChangeKeysMenu::ChangePushKey(Button* b) {
+
+}
+
+void ChangeKeysMenu::ChangeRightKey(Button* b) {
+
+}
+
+void ChangeKeysMenu::ChangeSwitchKey(Button* b) {
+
+}
+
+void ChangeKeysMenu::ChangeUpKey(Button* b) {
+
+}
+
static void ChangeKeysMenu(long playernumber) {
ChangeKeysMenu::player = playernumber;
+ Menu km(&screen,false);
Button bLeft, bRight, bUp, bDown, bPush, bSwitch, bJoypad, bMouse;
bLeft.setLabel("Left : ");
+ bLeft.setAction(ChangeKeysMenu::ChangeLeftKey);
bRight.setLabel("Right : ");
+ bRight.setAction(ChangeKeysMenu::ChangeRightKey);
bUp.setLabel("Up : ");
+ bUp.setAction(ChangeKeysMenu::ChangeUpKey);
bDown.setLabel("Down : ");
+ bDown.setAction(ChangeKeysMenu::ChangeDownKey);
+ km.addButton(&bLeft);
+ km.addButton(&bRight);
+ km.addButton(&bUp);
+ km.addButton(&bDown);
+ km.run();
}
+
void ConfigureMenu(Button *b) {
Menu cm(&screen,false);
Button bMusic,bSound,buttonFullscreen,bPlayer1Name,bPlayer2Name;
@@ -107,11 +142,11 @@ void ConfigureMenu(Button *b) {
bPlayer1Name.setLabel("Change player 1's name");
bPlayer2Name.setAction(buttonActionPlayer2Name);
bPlayer2Name.setLabel("Change player 2's name");
- cm.addButton(bMusic);
- cm.addButton(bSound);
- cm.addButton(buttonFullscreen);
- cm.addButton(bPlayer1Name);
- cm.addButton(bPlayer2Name);
+ cm.addButton(&bMusic);
+ cm.addButton(&bSound);
+ cm.addButton(&buttonFullscreen);
+ cm.addButton(&bPlayer1Name);
+ cm.addButton(&bPlayer2Name);
cm.run();
}
@@ -132,11 +167,11 @@ void MainMenu()
bConfigure.setAction(ConfigureMenu);
bHighscore.setLabel("Highscores");
bHighscore.setAction(buttonActionHighscores);
- m.addButton(bHi);
- m.addButton(bTimetrial1);
- m.addButton(bPuzzle);
- m.addButton(bVs1);
- m.addButton(bConfigure);
- m.addButton(bHighscore);
+ m.addButton(&bHi);
+ m.addButton(&bTimetrial1);
+ m.addButton(&bPuzzle);
+ m.addButton(&bVs1);
+ m.addButton(&bConfigure);
+ m.addButton(&bHighscore);
m.run();
}
\ No newline at end of file