コード例 #1
0
ファイル: Mainmenu.cpp プロジェクト: sopyer/Shadowgrounds
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;
			};
		}
	}

}
コード例 #2
0
ファイル: Menu.cpp プロジェクト: AlIako/PSNBL
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);
    }