home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / MainMenu.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-12-06  |  4.7 KB  |  186 lines

  1. #include "MainMenu.h"
  2.  
  3. #include "GuiInfo.h"
  4. #include "Gui.h"
  5. #include "SoundInfo.h"
  6. #include "TextureHandler.h"
  7. #include "Game.h"
  8. #include "System.h"
  9. #include "version.h"
  10. #include "Display.h"
  11. #include "Renderer.h"
  12.  
  13.  
  14. void CB_MM_playButton(){
  15.     Gui::mainMenu->closeAllSubmenus();
  16.  
  17.     Gui::mainMenu->playMenu->open();
  18. }
  19. void CB_MM_optionsButton(){
  20.     Gui::mainMenu->closeAllSubmenus();
  21.  
  22.     Gui::optionsMenu->openFromMainMenu();
  23. }
  24. void CB_MM_quitButton(){
  25.     Gui::mainMenu->closeAllSubmenus();
  26.  
  27.     Gui::mainMenu->quitMenu->open();
  28. }
  29. /*
  30. void CB_MM_quicklaunchButton(){
  31. //    Gui::mainMenu->close();
  32.  
  33.     Game::init();
  34.  
  35. //    Gui::mainMenu->open();
  36. }
  37. */
  38.  
  39. MainMenu::MainMenu():Menu("MainMenu"){
  40.     backgroundTexture = TextureHandler::getTexture("gui/menu/main_menu_background.jpg");
  41.     backgroundMusic = Sound::loadMusic("gui/menu/main_menu_background.ogg");
  42.  
  43.     addSubmenu(Gui::optionsMenu);
  44.     
  45.     playMenu = new MMPlayMenu();
  46.     addSubmenu(playMenu);
  47.  
  48.     quitMenu = new MMQuitMenu();
  49.     addSubmenu(quitMenu);
  50.  
  51.     TextButton* playButton = new TextButton(40, 500, 120, 25, "play");
  52.     playButton->setCallbackFunction(&CB_MM_playButton);
  53.     addMenuItem(playButton);
  54.  
  55.     TextButton* optionsButton = new TextButton(40, 450, 120, 25, "options");
  56.     optionsButton->setCallbackFunction(&CB_MM_optionsButton);
  57.     addMenuItem(optionsButton);
  58.  
  59.     TextButton* quitButton = new TextButton(40, 350, 120, 25, "quit");
  60.     quitButton->setCallbackFunction(&CB_MM_quitButton);
  61.     addMenuItem(quitButton);
  62.  
  63.     
  64. //    TextButton* quicklaunchButton = new TextButton(40, 300, 120, 25, "test");
  65. //    quicklaunchButton->setCallbackFunction(&CB_MM_quicklaunchButton);
  66. //    addMenuItem(quicklaunchButton);
  67.  
  68.     allowConsole = true;
  69. }
  70.  
  71. MainMenu::~MainMenu(){
  72.     if(backgroundMusic!=NULL)
  73.         Mix_FreeMusic(backgroundMusic);
  74.  
  75.     if(backgroundTexture!=NULL)
  76.         TextureHandler::releaseTexture(backgroundTexture);
  77.  
  78.     delete playMenu;
  79.     delete quitMenu;
  80. }
  81.  
  82. bool MainMenu::open(){
  83.     if(backgroundMusic!=NULL && Sound::info.var.enabled && Sound::info.var.playMusic)
  84.         Sound::playMusic(backgroundMusic, -1);
  85.  
  86.     opened=true;
  87.     mainLoop();    // waits until menu is closed again
  88.     return true;
  89. }
  90.  
  91. bool MainMenu::close(){
  92.  
  93.     if(backgroundMusic!=NULL && Sound::info.var.enabled)
  94.         Sound::stopMusic();
  95.  
  96.     return Menu::close();
  97. }
  98.  
  99. void MainMenu::drawBackground(){
  100.     glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
  101.     Renderer::drawTexturedQuad(0, 0, DISPLAY_VSCREEN_WIDTH, DISPLAY_VSCREEN_HEIGHT, backgroundTexture);
  102. /*
  103.     int x=30;
  104.     int y=340;
  105.     int w=140;
  106.     int h=245;
  107.  
  108.     Renderer::drawQuad(x, y, x+w, y+h, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
  109. */
  110.     glColor4fv(Gui::info.var.menu_normalColor);
  111.     drawScaledAndAlignedFormatString(DISPLAY_VSCREEN_WIDTH, 0, 0.8f, 0.8f, Gui::info.var.menu_smallFont, TEXT_ALIGN_RIGHT, 
  112.         "FIGHT WIN PREVAIL v%s (%s)   %s ", FWP_VERSION_STRING, FWP_OS_STRING, FWP_COPYRIGHT_NOTE);
  113.  
  114.     Menu::drawBackground();
  115. }
  116.  
  117.  
  118.  
  119.  
  120. // PLAY MENU /////////////////////////////////////////////////////////////////////
  121.  
  122.  
  123.  
  124.  
  125. void CB_PM_startDedicatedServerButton(){
  126. }
  127. void CB_PM_startServerButton(){
  128.     Gui::mainMenu->closeAllSubmenus();
  129.  
  130.     Gui::startServerMenu->open();
  131.  
  132. }
  133. void CB_PM_joinServerButton(){
  134.     Gui::mainMenu->closeAllSubmenus();
  135.  
  136.     Gui::connectToServerMenu->open();
  137. }
  138.  
  139.  
  140. MMPlayMenu::MMPlayMenu():Menu("MMPlayMenu"){
  141.  
  142.     TextButton* startServerButton=new TextButton(190, 500, 280, 25, "host multiplayer game");
  143.     startServerButton->setCallbackFunction(&CB_PM_startServerButton);
  144.     addMenuItem(startServerButton);
  145. //    startServerButton->deactivate();
  146.  
  147.     TextButton* joinServerButton=new TextButton(190, 450, 280, 25, "join multiplayer game");
  148.     joinServerButton->setCallbackFunction(&CB_PM_joinServerButton);
  149.     addMenuItem(joinServerButton);
  150. //    joinServerButton->deactivate();
  151.  
  152.     TextButton* startDedicatedServerButton=new TextButton(190, 400, 280, 25, "start dedicated server");
  153.     startDedicatedServerButton->setCallbackFunction(&CB_PM_startDedicatedServerButton);
  154.     addMenuItem(startDedicatedServerButton);
  155.     startDedicatedServerButton->deactivate();
  156.  
  157. }
  158.  
  159. // QUIT MENU /////////////////////////////////////////////////////////////////////
  160.  
  161.  
  162. void CB_QM_quitButton(){
  163.     Gui::mainMenu->quitMenu->close();
  164.     //mainMenu->close();
  165.  
  166.     Gui::creditsMenu->open();
  167.  
  168.     System::normalQuit();
  169. }
  170. void CB_QM_cancelButton(){
  171.     Gui::mainMenu->quitMenu->close();
  172. }
  173.  
  174.  
  175. MMQuitMenu::MMQuitMenu():Menu("MMQuitMenu"){
  176.  
  177.     TextButton* quitButton=new TextButton(190, 350, 120, 25, "yes, quit");
  178.     addMenuItem(quitButton);
  179.     quitButton->setCallbackFunction(&CB_QM_quitButton);
  180.  
  181.     TextButton* cancelButton=new TextButton(190, 300, 120, 25, "cancel");
  182.     addMenuItem(cancelButton);
  183.     cancelButton->setCallbackFunction(&CB_QM_cancelButton);
  184.  
  185. }
  186.