00001 #include <stdlib.h>
00002 #include <vector>
00003
00004 #include "opengl.h"
00005 #include "input/Input.h"
00006 #include "resources/resources.h"
00007
00008 #include "mainmenu.h"
00009 #include "configuremenu.h"
00010 #include "connectmenu.h"
00011 #include "client.h"
00012
00013 #include "LobbyGS.h"
00014
00015 #include "textures.h"
00016
00017 #include "menu/widgets.h"
00018 #include "Music.h"
00019
00020 static GameState *thisGS;
00021
00022 using namespace MMGUI;
00023
00024 static void quit(const char *str) {
00025 exit(0);
00026 }
00027
00028 static void configure(const char *str) {
00029 setGameState(new ConfigureMenu(thisGS->client));
00030 }
00031 static void connectMenu(const char *str) {
00032 setGameState(new ConnectMenu(thisGS->client));
00033 }
00034
00035 void MainMenu::init() {
00036 thisGS = this;
00037 playMusic();
00038 MMGUI::menuInit();
00039
00040 Frame *root = MMGUI::getRoot();
00041
00042 root->setBackgroundColor(0,0,0,1);
00043 root->setBorderColor(0, 0.5, 0);
00044 root->setBorder(3);
00045
00046 glEnable(GL_BLEND);
00047 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00048 glColor4f(1.0, 1.0, 1.0, 1.0);
00049 MMGUI::Image *backGround = new MMGUI::Image(TEXTURE_TITLE_BACKGROUND, WidgetAlignCenter, 1024, 768);
00050 MMGUI::Frame *menu = new MMGUI::Frame(WidgetAlignCenter, 800, 600);
00051 root->addChild(backGround);
00052 root->addChild(menu);
00053
00054
00055 MMGUI::Image *banner = new MMGUI::Image(TEXTURE_BANNER, WidgetAlignTop, 600, 200);
00056
00057 menu->addChild(banner);
00058
00059 MMGUI::Button *b = new MMGUI::Button(WidgetAlignCenter, 200, 100);
00060 b->setUpImage(TEXTURE_MULTIPLAYER_BUTTON);
00061 b->setDownImage(TEXTURE_MULTIPLAYER_BUTTON_ON);
00062 b->setOverImage(TEXTURE_MULTIPLAYER_BUTTON_OVER);
00063 b->setClickFunction(connectMenu);
00064 menu->addChild(b);
00065
00066 b = new MMGUI::Button(WidgetAlignBottom, 200, 100);
00067 b->setUpImage(TEXTURE_EXIT_BUTTON);
00068 b->setDownImage(TEXTURE_EXIT_BUTTON_ON);
00069 b->setOverImage(TEXTURE_EXIT_BUTTON_OVER);
00070 b->setClickFunction(quit);
00071 menu->addChild(b);
00072
00073 glutPostRedisplay();
00074 }
00075
00076 void MainMenu::display(void) {
00077 glClearColor(0,0,0,1);
00078 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00079
00080 glDisable(GL_DEPTH_TEST);
00081 MMGUI::menuDraw();
00082 glEnable(GL_DEPTH_TEST);
00083
00084 glutSwapBuffers();
00085 }
00086
00087 void MainMenu::update(void) { }
00088
00089
00090 void MainMenu::exit() {
00091 MMGUI::menuClear();
00092 }
00093
00094