home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / InGameMenu.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2005-01-21  |  17.4 KB  |  548 lines

  1. #include "InGameMenu.h"
  2.  
  3. #include "GuiInfo.h"
  4. #include "Gui.h"
  5. #include "Game.h"
  6. #include "Renderer.h"
  7. #include "System.h"
  8. #include "TextureHandler.h"
  9. #include "Display.h"
  10. #include "ConsoleFrontEnd.h"
  11. #include "Network.h"
  12. #include "log.h"
  13.  
  14. void CB_IGM_serverButton(){
  15.     Gui::inGameMenu->closeAllSubmenus();
  16.     Gui::inGameMenu->serverMenu->open();
  17. }
  18. void CB_IGM_equipmentButton(){
  19.     Gui::inGameMenu->closeAllSubmenus();
  20.     Gui::inGameMenu->equipmentMenu->open();
  21. }
  22. void CB_IGM_optionsButton(){
  23.     Gui::inGameMenu->closeAllSubmenus();
  24.     Gui::optionsMenu->open();
  25. }
  26. void CB_IGM_continueButton(){
  27.     Input::hideMouseCursor();
  28.     Input::grabInput();
  29.  
  30.     Gui::inGameMenu->close();
  31. }
  32. void CB_IGM_quitButton(){
  33.     Gui::inGameMenu->closeAllSubmenus();
  34.     Gui::inGameMenu->quitMenu->open();
  35. }
  36.  
  37.  
  38. InGameMenu::InGameMenu():Menu("InGameMenu"){
  39.     //backgroundTexture=TextureHandler::getTexture("gui/textures/in_game_menu_background.tga");
  40.  
  41.     addSubmenu(Gui::optionsMenu);
  42.  
  43.     serverMenu=new IGMServerMenu();
  44.     addSubmenu(serverMenu);
  45.  
  46.     equipmentMenu=new IGMEquipmentMenu();
  47.     addSubmenu(equipmentMenu);
  48.  
  49.     quitMenu=new IGMQuitMenu();
  50.     addSubmenu(quitMenu);
  51.  
  52.     TextButton* voteButton=new TextButton(20, 565, 120, 25, "vote");
  53.     addMenuItem(voteButton);
  54.     voteButton->deactivate();
  55.  
  56.     TextButton* serverButton=new TextButton(150, 565, 120, 25, "server");
  57.     serverButton->setCallbackFunction(CB_IGM_serverButton);
  58.     addMenuItem(serverButton);
  59.     //serverButton->deactivate();
  60.  
  61.     TextButton* equipmentButton=new TextButton(280, 565, 120, 25, "equipment");
  62.     equipmentButton->setCallbackFunction(&CB_IGM_equipmentButton);
  63.     addMenuItem(equipmentButton);
  64. //    equipmentButton->deactivate();
  65.  
  66.     TextButton* optionsButton=new TextButton(410, 565, 120, 25, "options");
  67.     optionsButton->setCallbackFunction(&CB_IGM_optionsButton);
  68.     addMenuItem(optionsButton);
  69.     //optionsButton->deactivate();
  70.  
  71.     TextButton* continueButton=new TextButton(540, 565, 120, 25, "continue");
  72.     continueButton->setCallbackFunction(&CB_IGM_continueButton);
  73.     addMenuItem(continueButton);
  74.  
  75.     TextButton* quitButton=new TextButton(670, 565, 120, 25, "quit");
  76.     quitButton->setCallbackFunction(&CB_IGM_quitButton);
  77.     addMenuItem(quitButton);
  78.  
  79. }
  80.  
  81. InGameMenu::~InGameMenu(){
  82.     delete quitMenu;
  83.     delete serverMenu;
  84.     delete equipmentMenu;
  85. }
  86.  
  87. bool InGameMenu::open(){
  88. //    showMouseCursor();
  89. //    freeInput();
  90.  
  91.     return Menu::open();
  92. }
  93.  
  94. bool InGameMenu::close(){
  95. //    hideMouseCursor();
  96. //    grabInput();
  97.  
  98.     return Menu::close();
  99. }
  100.  
  101.  
  102. void InGameMenu::draw(){    // THINKABOUTME: brauchen wir eigentlich nicht...
  103.     int i;
  104.  
  105.     Renderer::beginDrawing();
  106.  
  107.     drawBackground();
  108.  
  109.     for(i=0;i<MENU_MAX_MENU_ITEMS;i++){
  110.         if(menuItems[i]!=NULL){
  111.             menuItems[i]->draw();
  112.         }
  113.     }
  114.  
  115.     Renderer::endDrawing();
  116.  
  117.     for(i=0;i<MENU_MAX_SUBMENUS;i++){
  118.         if(submenus[i]!=NULL && submenus[i]->isOpened()){
  119.             submenus[i]->draw();
  120.         }
  121.     }
  122. }
  123.  
  124. void InGameMenu::drawBackground(){
  125.  
  126.     int x=0;
  127.     int y=555;
  128.     int w=799;
  129.     int h=44;
  130.  
  131.     Renderer::drawQuad(x, y, x+w, y+h, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
  132.  
  133. }
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145. // IGM_EQUIPMENT MENU /////////////////////////////////////////////////////////////////////
  146.  
  147.  
  148.  
  149.  
  150. static void CB_IGM_EM_cancelButton(){
  151.     Gui::inGameMenu->equipmentMenu->close();
  152. }
  153.  
  154. static void CB_IGM_EM_changeNowButton(){
  155.     Gui::inGameMenu->equipmentMenu->applySettings();
  156.     Gui::inGameMenu->equipmentMenu->close();
  157.  
  158.     Gui::inGameMenu->close();
  159.     Input::hideMouseCursor();
  160.     Input::grabInput();
  161.  
  162.     if( Network::client->vehicle != NULL ){
  163.         Network::client->sendClientKill();
  164.     }
  165. }
  166.  
  167. static void CB_IGM_EM_acceptButton(){
  168.     Gui::inGameMenu->equipmentMenu->applySettings();
  169.     Gui::inGameMenu->equipmentMenu->close();
  170.  
  171.     Gui::inGameMenu->close();
  172.     Input::hideMouseCursor();
  173.     Input::grabInput();
  174.  
  175.     log("Changes will take effect after next respawn!\n");
  176. }
  177.  
  178. static const char* teamToggleButtonItems_tm[] = {"spectators", "auto", "red", "blue"};
  179. static int teamToggleButtonNumItems_tm = 4;
  180.  
  181. static const char* teamToggleButtonItems_sm[] = {"spectators", "players"};
  182. static int teamToggleButtonNumItems_sm = 2;
  183.  
  184. static const char* vehicleToggleButtonItems[] = {"dragonfly", "alleycat"};
  185. static int vehicleToggleButtonNumItems = GAME_NUM_VEHICLES;
  186. static Texture* vehicleThumbnails[GAME_NUM_VEHICLES];
  187.  
  188. static const char* weaponToggleButtonItems[] = {"none", "laser", "chaingun", "railgun", "rocketlauncher", "plasmagun"};
  189. static int weaponToggleButtonNumItems = 6;
  190. static Texture* weaponThumbnails[GAME_NUM_WEAPONS];
  191. static Texture* weaponNotAvailableThumbnail = NULL;
  192.  
  193.  
  194. IGMEquipmentMenu::IGMEquipmentMenu():Menu("IGMEquipmentMenu"){
  195.     mouseX = 0;
  196.     mouseY = 0;
  197.  
  198.     TextButton* acceptButton = new TextButton(620, 110, 120, 25, "accept");
  199.     acceptButton->setCallbackFunction(&CB_IGM_EM_acceptButton);
  200.     addMenuItem(acceptButton);
  201. //    backButton->deactivate();
  202.  
  203.     TextButton* changeNowButton = new TextButton(320, 110, 160, 25, "change now!");
  204.     changeNowButton->setCallbackFunction(&CB_IGM_EM_changeNowButton);
  205.     addMenuItem(changeNowButton);
  206. //    backButton->deactivate();
  207.  
  208.     TextButton* cancelButton = new TextButton(60, 110, 120, 25, "cancel");
  209.     cancelButton->setCallbackFunction(&CB_IGM_EM_cancelButton);
  210.     addMenuItem(cancelButton);
  211. //    resetButton->deactivate();
  212.  
  213.  
  214.     teamToggleButton = new ToggleButton(280, 480, teamToggleButtonItems_sm, teamToggleButtonNumItems_sm, "team:    ");
  215.     addMenuItem(teamToggleButton);
  216.  
  217.     vehicleToggleButton = new ToggleButton(280, 460, vehicleToggleButtonItems, vehicleToggleButtonNumItems, "vehicle: ");
  218.     addMenuItem(vehicleToggleButton);
  219.     vehicleThumbnails[0] = TextureHandler::getTexture("vehicles/dragonfly/dragonfly_thumbnail.jpg");
  220.     vehicleThumbnails[1] = TextureHandler::getTexture("vehicles/alleycat/alleycat_thumbnail.jpg");
  221. //    vehicleThumbnails[2] = TextureHandler::getTexture("vehicles/sledgehammer/sledgehammer_thumbnail.jpg");
  222.  
  223.     
  224.     weapon1ToggleButton = new ToggleButton(60, 160, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon1: ");
  225.     addMenuItem(weapon1ToggleButton);
  226.  
  227.     weapon2ToggleButton = new ToggleButton(60, 140, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon2: ");
  228.     addMenuItem(weapon2ToggleButton);
  229.  
  230.     weapon3ToggleButton = new ToggleButton(410, 160, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon3: ");
  231.     addMenuItem(weapon3ToggleButton);
  232.     
  233.     weapon4ToggleButton = new ToggleButton(410, 140, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon4: ");
  234.     addMenuItem(weapon4ToggleButton);
  235.  
  236.     weaponNotAvailableThumbnail = TextureHandler::getTexture("weapons/shared/not_available_thumbnail.jpg");
  237.     weaponThumbnails[GAME_WEAPON_NO_WEAPON] = TextureHandler::getTexture("weapons/shared/no_weapon_thumbnail.jpg");
  238.     weaponThumbnails[GAME_WEAPON_LASER] = TextureHandler::getTexture("weapons/laser/laser_thumbnail.jpg");
  239.     weaponThumbnails[GAME_WEAPON_CHAINGUN] = TextureHandler::getTexture("weapons/chaingun/chaingun_thumbnail.jpg");
  240.     weaponThumbnails[GAME_WEAPON_RAILGUN] = TextureHandler::getTexture("weapons/railgun/railgun_thumbnail.jpg");
  241.     weaponThumbnails[GAME_WEAPON_ROCKETLAUNCHER] = TextureHandler::getTexture("weapons/rocketlauncher/rocketlauncher_thumbnail.jpg");
  242.     weaponThumbnails[GAME_WEAPON_PLASMAGUN] = TextureHandler::getTexture("weapons/plasmagun/plasmagun_thumbnail.jpg");
  243. //    weaponThumbnails[GAME_WEAPON_GRENADELAUNCHER] = TextureHandler::getTexture("weapons/grenadelauncher/grenadelauncher_thumbnail.jpg");
  244.  
  245. }
  246.  
  247. void IGMEquipmentMenu::drawBackground(){
  248. //    if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
  249. //        weapon3ToggleButton->activate();
  250. //        weapon4ToggleButton->activate();
  251. //    }else{
  252.         weapon3ToggleButton->deactivate();
  253.         weapon4ToggleButton->deactivate();
  254. //    }
  255.  
  256.  
  257.     Renderer::drawQuad(50, 100, 750, 535, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
  258.  
  259.     glColor4fv(Gui::info.var.menu_normalColor);
  260.     drawScaledAndAlignedString(400, 500, 0.7f, 0.7f, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER,
  261.         "< EQUIPMENT >");
  262.  
  263.     drawVehicleThumbnail();
  264.     drawWeaponThumbnails();
  265. }
  266.  
  267. void IGMEquipmentMenu::drawVehicleThumbnail(){
  268.     if( (mouseX >= 275 && mouseX <= 525 && mouseY >= 200 && mouseY <= 450 ) || vehicleToggleButton->highlighted){
  269.         glColor4fv(Gui::info.var.menu_activeColor);
  270.     }else{
  271.         glColor4fv(Gui::info.var.menu_normalColor);
  272.     }
  273.     Renderer::drawTexturedQuad(275, 200, 525, 450, vehicleThumbnails[vehicleToggleButton->getIndex()]);
  274. }
  275.  
  276. void IGMEquipmentMenu::drawWeaponThumbnails(){
  277.     if( (mouseX >= 140 && mouseX <= 260 && mouseY >= 330 && mouseY <= 450 ) || weapon1ToggleButton->highlighted){
  278.         glColor4fv(Gui::info.var.menu_activeColor);
  279.     }else{
  280.         glColor4fv(Gui::info.var.menu_normalColor);
  281.     }
  282.     Renderer::drawTexturedQuad(140, 330, 260, 450, weaponThumbnails[weapon1ToggleButton->getIndex()]);
  283.  
  284.  
  285.     if( (mouseX >= 140 && mouseX <= 260 && mouseY >= 200 && mouseY <= 320 ) || weapon2ToggleButton->highlighted){
  286.         glColor4fv(Gui::info.var.menu_activeColor);
  287.     }else{
  288.         glColor4fv(Gui::info.var.menu_normalColor);
  289.     }
  290.     Renderer::drawTexturedQuad(140, 200, 260, 320, weaponThumbnails[weapon2ToggleButton->getIndex()]);
  291.  
  292. //    if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
  293. //        if( (mouseX >= 540 && mouseX <= 660 && mouseY >= 330 && mouseY <= 450 ) || weapon3ToggleButton->highlighted){
  294. //            glColor4fv(Gui::info.var.menu_activeColor);
  295. //        }else{
  296. //            glColor4fv(Gui::info.var.menu_normalColor);
  297. //        }
  298. //        Renderer::drawTexturedQuad(540, 330, 660, 450, weaponThumbnails[weapon3ToggleButton->getIndex()]);
  299. //
  300. //        if( (mouseX >= 540 && mouseX <= 660 && mouseY >= 200 && mouseY <= 320 ) || weapon4ToggleButton->highlighted){
  301. //            glColor4fv(Gui::info.var.menu_activeColor);
  302. //        }else{
  303. //            glColor4fv(Gui::info.var.menu_normalColor);
  304. //        }
  305. //        Renderer::drawTexturedQuad(540, 200, 660, 320, weaponThumbnails[weapon4ToggleButton->getIndex()]);
  306. //    }else{
  307.         glColor4fv(Gui::info.var.menu_passiveColor);
  308.         Renderer::drawTexturedQuad(540, 330, 660, 450, weaponNotAvailableThumbnail);
  309.         Renderer::drawTexturedQuad(540, 200, 660, 320, weaponNotAvailableThumbnail);
  310. //    }
  311. }
  312.  
  313. bool IGMEquipmentMenu::open(){
  314.     updateSettings();
  315.     return Menu::open();
  316. }
  317.  
  318.  
  319. void IGMEquipmentMenu::handleMouseMotionEvent(SDL_MouseMotionEvent* event){
  320.     Menu::handleMouseMotionEvent(event);
  321.  
  322.     mouseX = (int)(event->x/Display::info.var.scaleX);
  323.     mouseY = (int)((Display::info.var.height - event->y)/Display::info.var.scaleY);
  324.  
  325. }
  326.  
  327. void IGMEquipmentMenu::handleMouseButtonEvent(SDL_MouseButtonEvent* event){
  328.     Menu::handleMouseButtonEvent(event);
  329.  
  330.     if(allowConsole && consoleFrontEnd->isActive)
  331.         return;
  332.  
  333.     int button=event->button;
  334.     if(button != MOUSE_BUTTON1 && button != MOUSE_BUTTON3)
  335.         return;
  336.  
  337.     if(event->type==SDL_MOUSEBUTTONUP){
  338.         int x = (int)(event->x/Display::info.var.scaleX);
  339.         int y = (int)((Display::info.var.height - event->y)/Display::info.var.scaleY);
  340.  
  341.         if( mouseX >= 275 && mouseX <= 525 && mouseY >= 200 && mouseY <= 450 ){
  342.             if(button == MOUSE_BUTTON3)
  343.                 vehicleToggleButton->clickedRight();
  344.             else
  345.                 vehicleToggleButton->clicked();
  346.         }
  347.  
  348.  
  349.         if( x >= 140 && x <= 260 && y >= 330 && y <= 450 ){
  350.             if(button == MOUSE_BUTTON3)
  351.                 weapon1ToggleButton->clickedRight();
  352.             else
  353.                 weapon1ToggleButton->clicked();
  354.         }
  355.         if( x >= 140 && x <= 260 && y >= 200 && y <= 320 ){
  356.             if(button == MOUSE_BUTTON3)
  357.                 weapon2ToggleButton->clickedRight();
  358.             else
  359.                 weapon2ToggleButton->clicked();
  360.         }
  361.  
  362. //        if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
  363. //            if( x >= 540 && x <= 660 && y >= 330 && y <= 450 ){
  364. //                if(button == MOUSE_BUTTON3)
  365. //                    weapon3ToggleButton->clickedRight();
  366. //                else
  367. //                    weapon3ToggleButton->clicked();
  368. //            }
  369. //            if( x >= 540 && x <= 660 && y >= 200 && y <= 320 ){
  370. //                if(button == MOUSE_BUTTON3)
  371. //                    weapon4ToggleButton->clickedRight();
  372. //                else
  373. //                    weapon4ToggleButton->clicked();
  374. //            }
  375. //        }
  376.     }else if(event->type==SDL_MOUSEBUTTONDOWN){
  377.         // THINKABOUTME: play a sound??
  378.     }
  379. }
  380.  
  381.  
  382.  
  383. void IGMEquipmentMenu::updateSettings(){
  384.     if(Game::info.var.mode == GAME_MODE_TEAM_DEATHMATCH /*|| Game::info.var.mode == GAME_MODE_TEAM_SURVIVOR*/ ){
  385.         teamToggleButton->changeItems(teamToggleButtonItems_tm, teamToggleButtonNumItems_tm);
  386.         teamToggleButton->setIndex(Game::info.cvar.game_player_team->getVal());
  387.     }else{
  388.         teamToggleButton->changeItems(teamToggleButtonItems_sm, teamToggleButtonNumItems_sm);
  389.         teamToggleButton->setIndex( Game::info.cvar.game_player_team->getVal() == GAME_TEAM_SPECTATORS ? GAME_TEAM_SPECTATORS : GAME_TEAM_PLAYERS );
  390.     }
  391.  
  392.     vehicleToggleButton->setIndex(Game::info.cvar.game_player_vehicle->getVal());
  393.  
  394.     weapon1ToggleButton->setIndex(Game::info.cvar.game_player_weapon1->getVal());
  395.     weapon2ToggleButton->setIndex(Game::info.cvar.game_player_weapon2->getVal());
  396.     weapon3ToggleButton->setIndex(Game::info.cvar.game_player_weapon3->getVal());
  397.     weapon4ToggleButton->setIndex(Game::info.cvar.game_player_weapon4->getVal());
  398.  
  399. }
  400.  
  401.  
  402. void IGMEquipmentMenu::applySettings(){
  403.     Game::info.cvar.game_player_team->setVal(teamToggleButton->getIndex());    
  404.     Game::info.cvar.game_player_vehicle->setVal(vehicleToggleButton->getIndex());    
  405.  
  406.     Game::info.cvar.game_player_weapon1->setVal(weapon1ToggleButton->getIndex());    
  407.     Game::info.cvar.game_player_weapon2->setVal(weapon2ToggleButton->getIndex());    
  408.     Game::info.cvar.game_player_weapon3->setVal(weapon3ToggleButton->getIndex());    
  409.     Game::info.cvar.game_player_weapon4->setVal(weapon4ToggleButton->getIndex());    
  410. }
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424. // IGM_SERVER MENU /////////////////////////////////////////////////////////////////////
  425.  
  426.  
  427.  
  428.  
  429. static void CB_IGM_SM_closeButton(){
  430.     Gui::inGameMenu->serverMenu->close();
  431. }
  432.  
  433. IGMServerMenu::IGMServerMenu():Menu("IGMServerMenu"){
  434.  
  435.     TextButton* closeButton = new TextButton(350, 150, 100, 25, "close");
  436.     closeButton->setCallbackFunction(CB_IGM_SM_closeButton);
  437.     addMenuItem(closeButton);
  438.  
  439. }
  440.  
  441. void IGMServerMenu::drawBackground(){
  442.  
  443.     Renderer::drawQuad(90, 140, 710, 535, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
  444.  
  445.     glColor4fv(Gui::info.var.menu_normalColor);
  446.     drawScaledAndAlignedString(400, 500, 0.7f, 0.7f, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER,
  447.         "< SERVER >");
  448.  
  449.     int y = 470;
  450.     drawScaledAndAlignedString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, Network::info.var.server_name);
  451.     y -= 20;
  452.     drawScaledAndAlignedString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, Network::info.var.server_description);
  453.  
  454.     y -= 40;
  455.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "hostname: %s", Network::info.var.server_hostName);
  456.     y -= 20;
  457.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "ip: %s", Network::info.var.server_ip);
  458.     y -= 20;
  459.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "(%s)", Game::info.var.clientGame ? "remote server" : "local server");
  460.     
  461.  
  462.     y -= 40;
  463.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "arena: %s", Game::info.var.arena);
  464.     y -= 20;
  465.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "gamemode: %s", Game::getModeName(Game::info.var.mode));
  466.     y -= 20;
  467.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "option flags: %s | %s"
  468.         , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) == PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) ? "FF_ENABLED" : "FF_DISABLED"
  469.         , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) == PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) ? "AC_ENABLED" : "AC_DISABLED"
  470.         );
  471.  
  472.     y -= 20;
  473.     drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "players: %i/%i", Network::server->si.numClients, Network::server->si.maxClients);
  474.  
  475. //    y -= 40;
  476. //    drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "players: %i/%i", Network::server->getNumClients(), Network::server->maxClients);
  477. //    for(int i=0;i<Network::server->maxClients;i++){
  478. //        if( Network::server->clients[i] != NULL ){
  479. //            y -= 20;
  480. //            drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, " %i : '%s'", i, Network::server->clients[i]->name);
  481. //        }
  482. //    }
  483. }
  484.  
  485. bool IGMServerMenu::open(){
  486.     updateSettings();
  487.     return Menu::open();
  488. }
  489.  
  490. void IGMServerMenu::updateSettings(){
  491. }
  492.  
  493.  
  494. void IGMServerMenu::applySettings(){
  495.     
  496.  
  497. }
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510. // IGM_QUIT MENU /////////////////////////////////////////////////////////////////////
  511.  
  512. void CB_IGM_QM_toMainMenuButton(){
  513.     Gui::inGameMenu->close();
  514.  
  515.     Game::shutdown();
  516.  
  517.     Gui::mainMenu->open();
  518. }
  519. void CB_IGM_QM_quitGameButton(){
  520.     Game::shutdown();
  521.  
  522.     Gui::creditsMenu->open();
  523.  
  524.     System::normalQuit();
  525. }
  526. void CB_IGM_QM_cancelButton(){
  527.     Gui::inGameMenu->quitMenu->close();
  528. }
  529.  
  530.  
  531. IGMQuitMenu::IGMQuitMenu():Menu("IGMQuitMenu"){
  532.  
  533.     TextButton* toMainMenuButton=new TextButton(670, 510, 120, 25, "main menu");
  534.     toMainMenuButton->setCallbackFunction(&CB_IGM_QM_toMainMenuButton);
  535.     addMenuItem(toMainMenuButton);
  536.  
  537.     TextButton* quitGameButton=new TextButton(670, 475, 120, 25, "quit game");
  538.     addMenuItem(quitGameButton);
  539.     quitGameButton->setCallbackFunction(&CB_IGM_QM_quitGameButton);
  540.  
  541.     TextButton* cancelButton=new TextButton(670, 440, 120, 25, "cancel");
  542.     addMenuItem(cancelButton);
  543.     cancelButton->setCallbackFunction(&CB_IGM_QM_cancelButton);
  544.  
  545.  
  546. }
  547.  
  548.