home *** CD-ROM | disk | FTP | other *** search
- #include "InGameMenu.h"
-
- #include "GuiInfo.h"
- #include "Gui.h"
- #include "Game.h"
- #include "Renderer.h"
- #include "System.h"
- #include "TextureHandler.h"
- #include "Display.h"
- #include "ConsoleFrontEnd.h"
- #include "Network.h"
- #include "log.h"
-
- void CB_IGM_serverButton(){
- Gui::inGameMenu->closeAllSubmenus();
- Gui::inGameMenu->serverMenu->open();
- }
- void CB_IGM_equipmentButton(){
- Gui::inGameMenu->closeAllSubmenus();
- Gui::inGameMenu->equipmentMenu->open();
- }
- void CB_IGM_optionsButton(){
- Gui::inGameMenu->closeAllSubmenus();
- Gui::optionsMenu->open();
- }
- void CB_IGM_continueButton(){
- Input::hideMouseCursor();
- Input::grabInput();
-
- Gui::inGameMenu->close();
- }
- void CB_IGM_quitButton(){
- Gui::inGameMenu->closeAllSubmenus();
- Gui::inGameMenu->quitMenu->open();
- }
-
-
- InGameMenu::InGameMenu():Menu("InGameMenu"){
- //backgroundTexture=TextureHandler::getTexture("gui/textures/in_game_menu_background.tga");
-
- addSubmenu(Gui::optionsMenu);
-
- serverMenu=new IGMServerMenu();
- addSubmenu(serverMenu);
-
- equipmentMenu=new IGMEquipmentMenu();
- addSubmenu(equipmentMenu);
-
- quitMenu=new IGMQuitMenu();
- addSubmenu(quitMenu);
-
- TextButton* voteButton=new TextButton(20, 565, 120, 25, "vote");
- addMenuItem(voteButton);
- voteButton->deactivate();
-
- TextButton* serverButton=new TextButton(150, 565, 120, 25, "server");
- serverButton->setCallbackFunction(CB_IGM_serverButton);
- addMenuItem(serverButton);
- //serverButton->deactivate();
-
- TextButton* equipmentButton=new TextButton(280, 565, 120, 25, "equipment");
- equipmentButton->setCallbackFunction(&CB_IGM_equipmentButton);
- addMenuItem(equipmentButton);
- // equipmentButton->deactivate();
-
- TextButton* optionsButton=new TextButton(410, 565, 120, 25, "options");
- optionsButton->setCallbackFunction(&CB_IGM_optionsButton);
- addMenuItem(optionsButton);
- //optionsButton->deactivate();
-
- TextButton* continueButton=new TextButton(540, 565, 120, 25, "continue");
- continueButton->setCallbackFunction(&CB_IGM_continueButton);
- addMenuItem(continueButton);
-
- TextButton* quitButton=new TextButton(670, 565, 120, 25, "quit");
- quitButton->setCallbackFunction(&CB_IGM_quitButton);
- addMenuItem(quitButton);
-
- }
-
- InGameMenu::~InGameMenu(){
- delete quitMenu;
- delete serverMenu;
- delete equipmentMenu;
- }
-
- bool InGameMenu::open(){
- // showMouseCursor();
- // freeInput();
-
- return Menu::open();
- }
-
- bool InGameMenu::close(){
- // hideMouseCursor();
- // grabInput();
-
- return Menu::close();
- }
-
-
- void InGameMenu::draw(){ // THINKABOUTME: brauchen wir eigentlich nicht...
- int i;
-
- Renderer::beginDrawing();
-
- drawBackground();
-
- for(i=0;i<MENU_MAX_MENU_ITEMS;i++){
- if(menuItems[i]!=NULL){
- menuItems[i]->draw();
- }
- }
-
- Renderer::endDrawing();
-
- for(i=0;i<MENU_MAX_SUBMENUS;i++){
- if(submenus[i]!=NULL && submenus[i]->isOpened()){
- submenus[i]->draw();
- }
- }
- }
-
- void InGameMenu::drawBackground(){
-
- int x=0;
- int y=555;
- int w=799;
- int h=44;
-
- Renderer::drawQuad(x, y, x+w, y+h, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
-
- }
-
-
-
-
-
-
-
-
-
-
-
- // IGM_EQUIPMENT MENU /////////////////////////////////////////////////////////////////////
-
-
-
-
- static void CB_IGM_EM_cancelButton(){
- Gui::inGameMenu->equipmentMenu->close();
- }
-
- static void CB_IGM_EM_changeNowButton(){
- Gui::inGameMenu->equipmentMenu->applySettings();
- Gui::inGameMenu->equipmentMenu->close();
-
- Gui::inGameMenu->close();
- Input::hideMouseCursor();
- Input::grabInput();
-
- if( Network::client->vehicle != NULL ){
- Network::client->sendClientKill();
- }
- }
-
- static void CB_IGM_EM_acceptButton(){
- Gui::inGameMenu->equipmentMenu->applySettings();
- Gui::inGameMenu->equipmentMenu->close();
-
- Gui::inGameMenu->close();
- Input::hideMouseCursor();
- Input::grabInput();
-
- log("Changes will take effect after next respawn!\n");
- }
-
- static const char* teamToggleButtonItems_tm[] = {"spectators", "auto", "red", "blue"};
- static int teamToggleButtonNumItems_tm = 4;
-
- static const char* teamToggleButtonItems_sm[] = {"spectators", "players"};
- static int teamToggleButtonNumItems_sm = 2;
-
- static const char* vehicleToggleButtonItems[] = {"dragonfly", "alleycat"};
- static int vehicleToggleButtonNumItems = GAME_NUM_VEHICLES;
- static Texture* vehicleThumbnails[GAME_NUM_VEHICLES];
-
- static const char* weaponToggleButtonItems[] = {"none", "laser", "chaingun", "railgun", "rocketlauncher", "plasmagun"};
- static int weaponToggleButtonNumItems = 6;
- static Texture* weaponThumbnails[GAME_NUM_WEAPONS];
- static Texture* weaponNotAvailableThumbnail = NULL;
-
-
- IGMEquipmentMenu::IGMEquipmentMenu():Menu("IGMEquipmentMenu"){
- mouseX = 0;
- mouseY = 0;
-
- TextButton* acceptButton = new TextButton(620, 110, 120, 25, "accept");
- acceptButton->setCallbackFunction(&CB_IGM_EM_acceptButton);
- addMenuItem(acceptButton);
- // backButton->deactivate();
-
- TextButton* changeNowButton = new TextButton(320, 110, 160, 25, "change now!");
- changeNowButton->setCallbackFunction(&CB_IGM_EM_changeNowButton);
- addMenuItem(changeNowButton);
- // backButton->deactivate();
-
- TextButton* cancelButton = new TextButton(60, 110, 120, 25, "cancel");
- cancelButton->setCallbackFunction(&CB_IGM_EM_cancelButton);
- addMenuItem(cancelButton);
- // resetButton->deactivate();
-
-
- teamToggleButton = new ToggleButton(280, 480, teamToggleButtonItems_sm, teamToggleButtonNumItems_sm, "team: ");
- addMenuItem(teamToggleButton);
-
- vehicleToggleButton = new ToggleButton(280, 460, vehicleToggleButtonItems, vehicleToggleButtonNumItems, "vehicle: ");
- addMenuItem(vehicleToggleButton);
- vehicleThumbnails[0] = TextureHandler::getTexture("vehicles/dragonfly/dragonfly_thumbnail.jpg");
- vehicleThumbnails[1] = TextureHandler::getTexture("vehicles/alleycat/alleycat_thumbnail.jpg");
- // vehicleThumbnails[2] = TextureHandler::getTexture("vehicles/sledgehammer/sledgehammer_thumbnail.jpg");
-
-
- weapon1ToggleButton = new ToggleButton(60, 160, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon1: ");
- addMenuItem(weapon1ToggleButton);
-
- weapon2ToggleButton = new ToggleButton(60, 140, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon2: ");
- addMenuItem(weapon2ToggleButton);
-
- weapon3ToggleButton = new ToggleButton(410, 160, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon3: ");
- addMenuItem(weapon3ToggleButton);
-
- weapon4ToggleButton = new ToggleButton(410, 140, weaponToggleButtonItems, weaponToggleButtonNumItems, "weapon4: ");
- addMenuItem(weapon4ToggleButton);
-
- weaponNotAvailableThumbnail = TextureHandler::getTexture("weapons/shared/not_available_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_NO_WEAPON] = TextureHandler::getTexture("weapons/shared/no_weapon_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_LASER] = TextureHandler::getTexture("weapons/laser/laser_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_CHAINGUN] = TextureHandler::getTexture("weapons/chaingun/chaingun_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_RAILGUN] = TextureHandler::getTexture("weapons/railgun/railgun_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_ROCKETLAUNCHER] = TextureHandler::getTexture("weapons/rocketlauncher/rocketlauncher_thumbnail.jpg");
- weaponThumbnails[GAME_WEAPON_PLASMAGUN] = TextureHandler::getTexture("weapons/plasmagun/plasmagun_thumbnail.jpg");
- // weaponThumbnails[GAME_WEAPON_GRENADELAUNCHER] = TextureHandler::getTexture("weapons/grenadelauncher/grenadelauncher_thumbnail.jpg");
-
- }
-
- void IGMEquipmentMenu::drawBackground(){
- // if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
- // weapon3ToggleButton->activate();
- // weapon4ToggleButton->activate();
- // }else{
- weapon3ToggleButton->deactivate();
- weapon4ToggleButton->deactivate();
- // }
-
-
- Renderer::drawQuad(50, 100, 750, 535, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
-
- glColor4fv(Gui::info.var.menu_normalColor);
- drawScaledAndAlignedString(400, 500, 0.7f, 0.7f, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER,
- "< EQUIPMENT >");
-
- drawVehicleThumbnail();
- drawWeaponThumbnails();
- }
-
- void IGMEquipmentMenu::drawVehicleThumbnail(){
- if( (mouseX >= 275 && mouseX <= 525 && mouseY >= 200 && mouseY <= 450 ) || vehicleToggleButton->highlighted){
- glColor4fv(Gui::info.var.menu_activeColor);
- }else{
- glColor4fv(Gui::info.var.menu_normalColor);
- }
- Renderer::drawTexturedQuad(275, 200, 525, 450, vehicleThumbnails[vehicleToggleButton->getIndex()]);
- }
-
- void IGMEquipmentMenu::drawWeaponThumbnails(){
- if( (mouseX >= 140 && mouseX <= 260 && mouseY >= 330 && mouseY <= 450 ) || weapon1ToggleButton->highlighted){
- glColor4fv(Gui::info.var.menu_activeColor);
- }else{
- glColor4fv(Gui::info.var.menu_normalColor);
- }
- Renderer::drawTexturedQuad(140, 330, 260, 450, weaponThumbnails[weapon1ToggleButton->getIndex()]);
-
-
- if( (mouseX >= 140 && mouseX <= 260 && mouseY >= 200 && mouseY <= 320 ) || weapon2ToggleButton->highlighted){
- glColor4fv(Gui::info.var.menu_activeColor);
- }else{
- glColor4fv(Gui::info.var.menu_normalColor);
- }
- Renderer::drawTexturedQuad(140, 200, 260, 320, weaponThumbnails[weapon2ToggleButton->getIndex()]);
-
- // if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
- // if( (mouseX >= 540 && mouseX <= 660 && mouseY >= 330 && mouseY <= 450 ) || weapon3ToggleButton->highlighted){
- // glColor4fv(Gui::info.var.menu_activeColor);
- // }else{
- // glColor4fv(Gui::info.var.menu_normalColor);
- // }
- // Renderer::drawTexturedQuad(540, 330, 660, 450, weaponThumbnails[weapon3ToggleButton->getIndex()]);
- //
- // if( (mouseX >= 540 && mouseX <= 660 && mouseY >= 200 && mouseY <= 320 ) || weapon4ToggleButton->highlighted){
- // glColor4fv(Gui::info.var.menu_activeColor);
- // }else{
- // glColor4fv(Gui::info.var.menu_normalColor);
- // }
- // Renderer::drawTexturedQuad(540, 200, 660, 320, weaponThumbnails[weapon4ToggleButton->getIndex()]);
- // }else{
- glColor4fv(Gui::info.var.menu_passiveColor);
- Renderer::drawTexturedQuad(540, 330, 660, 450, weaponNotAvailableThumbnail);
- Renderer::drawTexturedQuad(540, 200, 660, 320, weaponNotAvailableThumbnail);
- // }
- }
-
- bool IGMEquipmentMenu::open(){
- updateSettings();
- return Menu::open();
- }
-
-
- void IGMEquipmentMenu::handleMouseMotionEvent(SDL_MouseMotionEvent* event){
- Menu::handleMouseMotionEvent(event);
-
- mouseX = (int)(event->x/Display::info.var.scaleX);
- mouseY = (int)((Display::info.var.height - event->y)/Display::info.var.scaleY);
-
- }
-
- void IGMEquipmentMenu::handleMouseButtonEvent(SDL_MouseButtonEvent* event){
- Menu::handleMouseButtonEvent(event);
-
- if(allowConsole && consoleFrontEnd->isActive)
- return;
-
- int button=event->button;
- if(button != MOUSE_BUTTON1 && button != MOUSE_BUTTON3)
- return;
-
- if(event->type==SDL_MOUSEBUTTONUP){
- int x = (int)(event->x/Display::info.var.scaleX);
- int y = (int)((Display::info.var.height - event->y)/Display::info.var.scaleY);
-
- if( mouseX >= 275 && mouseX <= 525 && mouseY >= 200 && mouseY <= 450 ){
- if(button == MOUSE_BUTTON3)
- vehicleToggleButton->clickedRight();
- else
- vehicleToggleButton->clicked();
- }
-
-
- if( x >= 140 && x <= 260 && y >= 330 && y <= 450 ){
- if(button == MOUSE_BUTTON3)
- weapon1ToggleButton->clickedRight();
- else
- weapon1ToggleButton->clicked();
- }
- if( x >= 140 && x <= 260 && y >= 200 && y <= 320 ){
- if(button == MOUSE_BUTTON3)
- weapon2ToggleButton->clickedRight();
- else
- weapon2ToggleButton->clicked();
- }
-
- // if(vehicleToggleButton->getIndex() == GAME_VEHICLE_SLEDGEHAMMER){
- // if( x >= 540 && x <= 660 && y >= 330 && y <= 450 ){
- // if(button == MOUSE_BUTTON3)
- // weapon3ToggleButton->clickedRight();
- // else
- // weapon3ToggleButton->clicked();
- // }
- // if( x >= 540 && x <= 660 && y >= 200 && y <= 320 ){
- // if(button == MOUSE_BUTTON3)
- // weapon4ToggleButton->clickedRight();
- // else
- // weapon4ToggleButton->clicked();
- // }
- // }
- }else if(event->type==SDL_MOUSEBUTTONDOWN){
- // THINKABOUTME: play a sound??
- }
- }
-
-
-
- void IGMEquipmentMenu::updateSettings(){
- if(Game::info.var.mode == GAME_MODE_TEAM_DEATHMATCH /*|| Game::info.var.mode == GAME_MODE_TEAM_SURVIVOR*/ ){
- teamToggleButton->changeItems(teamToggleButtonItems_tm, teamToggleButtonNumItems_tm);
- teamToggleButton->setIndex(Game::info.cvar.game_player_team->getVal());
- }else{
- teamToggleButton->changeItems(teamToggleButtonItems_sm, teamToggleButtonNumItems_sm);
- teamToggleButton->setIndex( Game::info.cvar.game_player_team->getVal() == GAME_TEAM_SPECTATORS ? GAME_TEAM_SPECTATORS : GAME_TEAM_PLAYERS );
- }
-
- vehicleToggleButton->setIndex(Game::info.cvar.game_player_vehicle->getVal());
-
- weapon1ToggleButton->setIndex(Game::info.cvar.game_player_weapon1->getVal());
- weapon2ToggleButton->setIndex(Game::info.cvar.game_player_weapon2->getVal());
- weapon3ToggleButton->setIndex(Game::info.cvar.game_player_weapon3->getVal());
- weapon4ToggleButton->setIndex(Game::info.cvar.game_player_weapon4->getVal());
-
- }
-
-
- void IGMEquipmentMenu::applySettings(){
- Game::info.cvar.game_player_team->setVal(teamToggleButton->getIndex());
- Game::info.cvar.game_player_vehicle->setVal(vehicleToggleButton->getIndex());
-
- Game::info.cvar.game_player_weapon1->setVal(weapon1ToggleButton->getIndex());
- Game::info.cvar.game_player_weapon2->setVal(weapon2ToggleButton->getIndex());
- Game::info.cvar.game_player_weapon3->setVal(weapon3ToggleButton->getIndex());
- Game::info.cvar.game_player_weapon4->setVal(weapon4ToggleButton->getIndex());
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- // IGM_SERVER MENU /////////////////////////////////////////////////////////////////////
-
-
-
-
- static void CB_IGM_SM_closeButton(){
- Gui::inGameMenu->serverMenu->close();
- }
-
- IGMServerMenu::IGMServerMenu():Menu("IGMServerMenu"){
-
- TextButton* closeButton = new TextButton(350, 150, 100, 25, "close");
- closeButton->setCallbackFunction(CB_IGM_SM_closeButton);
- addMenuItem(closeButton);
-
- }
-
- void IGMServerMenu::drawBackground(){
-
- Renderer::drawQuad(90, 140, 710, 535, Gui::info.var.menu_normalColor, Gui::info.var.menu_backgroundColor);
-
- glColor4fv(Gui::info.var.menu_normalColor);
- drawScaledAndAlignedString(400, 500, 0.7f, 0.7f, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER,
- "< SERVER >");
-
- int y = 470;
- drawScaledAndAlignedString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, Network::info.var.server_name);
- y -= 20;
- drawScaledAndAlignedString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, Network::info.var.server_description);
-
- y -= 40;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "hostname: %s", Network::info.var.server_hostName);
- y -= 20;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "ip: %s", Network::info.var.server_ip);
- y -= 20;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "(%s)", Game::info.var.clientGame ? "remote server" : "local server");
-
-
- y -= 40;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "arena: %s", Game::info.var.arena);
- y -= 20;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "gamemode: %s", Game::getModeName(Game::info.var.mode));
- y -= 20;
- drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "option flags: %s | %s"
- , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) == PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) ? "FF_ENABLED" : "FF_DISABLED"
- , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) == PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) ? "AC_ENABLED" : "AC_DISABLED"
- );
-
- y -= 20;
- 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);
-
- // y -= 40;
- // drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "players: %i/%i", Network::server->getNumClients(), Network::server->maxClients);
- // for(int i=0;i<Network::server->maxClients;i++){
- // if( Network::server->clients[i] != NULL ){
- // y -= 20;
- // drawScaledAndAlignedFormatString(400, y, 1.0f, 1.0f, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, " %i : '%s'", i, Network::server->clients[i]->name);
- // }
- // }
- }
-
- bool IGMServerMenu::open(){
- updateSettings();
- return Menu::open();
- }
-
- void IGMServerMenu::updateSettings(){
- }
-
-
- void IGMServerMenu::applySettings(){
-
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
- // IGM_QUIT MENU /////////////////////////////////////////////////////////////////////
-
- void CB_IGM_QM_toMainMenuButton(){
- Gui::inGameMenu->close();
-
- Game::shutdown();
-
- Gui::mainMenu->open();
- }
- void CB_IGM_QM_quitGameButton(){
- Game::shutdown();
-
- Gui::creditsMenu->open();
-
- System::normalQuit();
- }
- void CB_IGM_QM_cancelButton(){
- Gui::inGameMenu->quitMenu->close();
- }
-
-
- IGMQuitMenu::IGMQuitMenu():Menu("IGMQuitMenu"){
-
- TextButton* toMainMenuButton=new TextButton(670, 510, 120, 25, "main menu");
- toMainMenuButton->setCallbackFunction(&CB_IGM_QM_toMainMenuButton);
- addMenuItem(toMainMenuButton);
-
- TextButton* quitGameButton=new TextButton(670, 475, 120, 25, "quit game");
- addMenuItem(quitGameButton);
- quitGameButton->setCallbackFunction(&CB_IGM_QM_quitGameButton);
-
- TextButton* cancelButton=new TextButton(670, 440, 120, 25, "cancel");
- addMenuItem(cancelButton);
- cancelButton->setCallbackFunction(&CB_IGM_QM_cancelButton);
-
-
- }
-
-