void MainMenu::CursorEvent( OguiButtonEvent* eve ) { if( abortGame ) { MenuBaseImpl::CursorEvent( eve ); if( eve->eventType == OGUI_EMASK_CLICK ) { switch( eve->triggerButton->GetId() ) { case COMMANDS_YES: menuCollection->newMission(); break; case COMMANDS_NO: closeAbortMenu(); break; } } } else { MenuBaseImpl::CursorEvent( eve ); if( eve->eventType == OGUI_EMASK_CLICK ) { if( currentActive && eve->triggerButton->GetId() != COMMANDS_CONTINUE ) { currentActive->SetFont( fonts->medium.normal ); if( currentActive == eve->triggerButton ) { menuCollection->closeMenu(); return; } else { menuCollection->closeMenu(); } } currentActive = eve->triggerButton; if( currentActive ) currentActive->SetFont( fonts->medium.highlighted ); switch( eve->triggerButton->GetId() ) { case COMMANDS_RESUME: menuResume(); break; case COMMANDS_CONTINUE: menuContinue(); break; case COMMANDS_NEW_GAME: menuNewGame(); break; case COMMANDS_LOAD_GAME: menuLoadGame(); break; #ifdef PROJECT_SURVIVOR case COMMANDS_SURVIVAL: menuSurvival(); break; case COMMANDS_COOP: menuCoop(); break; #endif case COMMANDS_PROFILES: menuProfiles(); break; case COMMANDS_OPTIONS: menuOptions(); break; case COMMANDS_CREDITS: menuCredits(); break; case COMMANDS_QUIT: menuQuit(); break; case COMMANDS_EASY: case COMMANDS_NORMAL: case COMMANDS_HARD: selectDifficultButton( eve->triggerButton->GetId() ); break; default: // This should not happen assert( false ); break; }; } } }
void Menu::clicOn(string name, bool leftClic) { Gsounds::getInstance()->play("../data/sounds/hover.mp3"); if(leftClic && name=="start") { curMenu="start"; menuStart(&m_buttons); } if(leftClic && name=="single") { Config::getInstance()->mode="server"; Online::getInstance()->setActive(false); command="play"; mapSelected=""; curMenu=name; menuSingle(&m_buttons); //fadingToLeave=true; } if(leftClic && curMenu=="single" && name!="single" && name!="linkocraftcom" && name!="back" && name!="title") { Config::getInstance()->mode="server"; Online::getInstance()->setActive(false); command="play "+name; mapSelected=name; fadingToLeave=true; } if(leftClic && name=="join") { Config::getInstance()->mode="client"; Online::getInstance()->setActive(true); Online::getInstance()->ini(); Online::getInstance()->startThreads(); if(!Online::getInstance()->m_server) { Online::getInstance()->setIncontrol(false); GTime start_try_connect; start_try_connect.reset(); while(!Online::getInstance()->m_connectionEstablished && !start_try_connect.ecouler(2500)) { start_try_connect.couler(); Online::getInstance()->update(); SDL_Delay(50); } } if(Online::getInstance()->m_connectionEstablished) { command="play"; fadingToLeave=true; } else//fail connection { Online::getInstance()->closeOnline(); messageError("Connection to server failed."); } } if(leftClic && name=="create") { Config::getInstance()->mode="server"; Online::getInstance()->setActive(true); Online::getInstance()->ini(); command="play"; fadingToLeave=true; } if(leftClic && name=="multi") { curMenu=name; menuMultiplayer(&m_buttons); } if(leftClic && name=="editor") { mapSelected=""; curMenu=name; menuEditor(&m_buttons,"../data/"+Config::getInstance()->editorpath+"/"); } if(curMenu=="editor" && (name=="patterns" || name=="levels")) { mapSelected=""; Config::getInstance()->editorpath=name; Config::getInstance()->save(); menuEditor(&m_buttons,"../data/"+Config::getInstance()->editorpath+"/"); } if(name.find("../data/patterns/")!=string::npos || name.find("../data/levels/")!=string::npos) { if(leftClic) { mapSelected=name; for(unsigned int i=0;i<m_buttons.size();i++) { if(m_buttons[i].getName()==name) m_buttons[i].select(true); else m_buttons[i].select(false); } } else//right clic: open map with editor { command="editor "+name; fadingToLeave=true; } } if(leftClic && name=="open") { if(curMenu=="editor") { if(mapSelected!="") { command="editor "+mapSelected; cerr<<"going editor "<< command<<endl; fadingToLeave=true; } } } if(leftClic && name=="delete") { if(curMenu=="editor") { if(mapSelected!="") { if(messageSure()) { cerr<<"deleting "<< mapSelected<<endl; char* tempChar=stringtochar(mapSelected); remove(tempChar); delete tempChar; mapSelected=""; menuEditor(&m_buttons,"../data/"+Config::getInstance()->editorpath+"/"); } } } } if(leftClic && name=="test") { if(curMenu=="editor") { if(mapSelected!="") { Config::getInstance()->mode="server"; Online::getInstance()->setActive(false); command="play "+mapSelected; cerr<<"going play "<< command<<endl; fadingToLeave=true; } } } if(leftClic && name=="new") { if(curMenu=="editor") { string inputName=inputString("","Enter Name:"); if(inputName!="") { inputName="../data/patterns/"+inputName+".txt"; command="editor "+inputName; cerr<<"going editor "<< command<<endl; fadingToLeave=true; } } } if(leftClic && name=="options") { curMenu=name; menuOptions(&m_buttons); } if(leftClic && name=="audio") { curMenu=name; menuAudio(&m_buttons); } if(leftClic && name=="sound") { Config::getInstance()->toggleSound(); Config::getInstance()->save(); Gsounds::getInstance()->on=Config::getInstance()->sound; Gsounds::getInstance()->pauseSounds(Gsounds::getInstance()->on); menuAudio(&m_buttons); } if(leftClic && name=="music") { Config::getInstance()->toggleMusic(); Config::getInstance()->save(); Gsounds::getInstance()->music=Config::getInstance()->music; Gsounds::getInstance()->pauseMusic(Gsounds::getInstance()->music); menuAudio(&m_buttons); } if(leftClic && name=="video") { curMenu=name; menuVideo(&m_buttons); } if(leftClic && name=="fullscreen") { Config::getInstance()->toggleFullscreen(); Config::getInstance()->save(); menuVideo(&m_buttons); } if(name=="resolution") { Vector3D next=Vector3D(0,0,0); if(leftClic) next=Video::getInstance()->nextResolution(Config::getInstance()->width,Config::getInstance()->height); else next=Video::getInstance()->previousResolution(Config::getInstance()->width,Config::getInstance()->height); Config::getInstance()->width=next.X; Config::getInstance()->height=next.Y; Config::getInstance()->save(); menuVideo(&m_buttons); } if(leftClic && name=="host") { curMenu=name; menuHost(&m_buttons); } if(leftClic && name=="joingame") { curMenu=name; menuJoin(&m_buttons); } if(leftClic && name=="name") { Config::getInstance()->name=inputString(Config::getInstance()->name,"Enter Name:"); Config::getInstance()->save(); menuMultiplayer(&m_buttons); } if(leftClic && name=="ip") { Config::getInstance()->ip=inputString(Config::getInstance()->ip,"Enter ip:"); Config::getInstance()->save(); menuJoin(&m_buttons); } if(leftClic && name=="port") { std::stringstream ss; ss << Config::getInstance()->port; istringstream buffer(inputString(ss.str(),"Enter Port:",true)); int value; buffer >> value; Config::getInstance()->port=value; Config::getInstance()->save(); if(curMenu=="joingame") menuJoin(&m_buttons); else if(curMenu=="host") menuHost(&m_buttons); }