示例#1
0
void CUIMenuEvents::InitEventSystem()
{
	if (!pFlashUI) return;

	// events to send from this class to UI flowgraphs
	m_pUIFunctions = pFlashUI->CreateEventSystem("MenuEvents", IUIEventSystem::eEST_SYSTEM_TO_UI);
	m_eventSender.Init(m_pUIFunctions);

	{
		SUIEventDesc eventDesc("OnStartIngameMenu", "Triggered if the IngameMenu should be displayed");
		m_eventSender.RegisterEvent<eUIE_StartIngameMenu>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("OnStopIngameMenu", "Triggered if the IngameMenu should be hidden");
		m_eventSender.RegisterEvent<eUIE_StopIngameMenu>(eventDesc);
	}


	// events that can be sent from UI flowgraphs to this class
	m_pUIEvents = pFlashUI->CreateEventSystem("MenuEvents", IUIEventSystem::eEST_UI_TO_SYSTEM);
	m_eventDispatcher.Init(m_pUIEvents, this, "CUIMenuEvents");
	{
		SUIEventDesc eventDesc("DisplayIngameMenu", "Call this to Display or Hide the IngameMenu");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("Display", "True or false");
		m_eventDispatcher.RegisterEvent(eventDesc, &CUIMenuEvents::DisplayIngameMenu);
	}

	pFlashUI->RegisterModule(this, "CUIMenuEvents");
}
示例#2
0
void CUIGameEvents::InitEventSystem()
{
	if (!gEnv->pFlashUI)
		return;

	m_pGameFramework = gEnv->pGame->GetIGameFramework();
	m_pLevelSystem = m_pGameFramework ? m_pGameFramework->GetILevelSystem() : NULL;

	assert(m_pLevelSystem && m_pGameFramework);
	if (!m_pLevelSystem || !m_pGameFramework)
		return;

	// events that can be sent from UI flowgraphs to this class
	m_pUIEvents = gEnv->pFlashUI->CreateEventSystem("Game", IUIEventSystem::eEST_UI_TO_SYSTEM);
	m_eventDispatcher.Init(m_pUIEvents, this, "CUIGameEvents");
	{
		SUIEventDesc eventDesc("LoadLevel", "Loads a level");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Level", "Name of the Level");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>  ("Server", "If true, load as Server");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("GameRules", "Name of the gamerules that should be used");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnLoadLevel );
	}

	{
		SUIEventDesc eventDesc("ReloadLevel", "Reload current level");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnReloadLevel );
	}

	{
		SUIEventDesc eventDesc("SaveGame", "Quicksave current game");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("Resume", "If true, game will be resumed if game was paused");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnSaveGame );
	}

	{
		SUIEventDesc eventDesc("LoadGame", "Quickload current game");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("Resume", "If true, game will be resumed if game was paused");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnLoadGame );
	}

	{
		SUIEventDesc eventDesc("PauseGame", "Pause the game (does not pause in mp)");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnPauseGame );
	}

	{
		SUIEventDesc eventDesc("ResumeGame", "Resumes the game (does not pause in mp)");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnResumeGame );
	}

	{
		SUIEventDesc eventDesc("ExitGame", "Quit the game");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnExitGame );
	}

	{
		SUIEventDesc eventDesc("StartGame", "Starts the current game (sends the GAMEPLAY START event)");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIGameEvents::OnStartGame );
	}
}
示例#3
0
void GMEventManager::HandleGMEventCommand(MsgEntry* me, Client* client)
{
    psGMEventInfoMessage msg(me);
    PID RequestingPlayerID = client->GetPID();

    if (msg.command == psGMEventInfoMessage::CMD_QUERY)
    {
        GMEvent* theEvent;
        if ((theEvent = GetGMEventByID(msg.id)) == NULL)
        {
            Error3("Client %s requested unavailable GM Event %d", client->GetName(), msg.id);
            return;
        }

        csString eventDesc(theEvent->eventDescription);

        if (theEvent->status != EMPTY)
        {
            ClientConnectionSet* clientConnections = psserver->GetConnections();
            Client* target;

            // if this client is the GM, list the participants too
            if (RequestingPlayerID == theEvent->gmID)
            {
                eventDesc.AppendFmt(". Participants: %zu. Online: ", theEvent->Player.GetSize());
                csArray<PlayerData>::Iterator iter = theEvent->Player.GetIterator();
                while (iter.HasNext())
                {
                    if ((target = clientConnections->FindPlayer(iter.Next().PlayerID)))
                    {
                        eventDesc.AppendFmt("%s, ", target->GetName());
                    }
                }
            }
            else if (theEvent->status == RUNNING) // and name the running GM
            {
                if (theEvent->gmID == UNDEFINED_GMID)
                {
                    eventDesc.AppendFmt(" (No GM)");
                }
                if ((target = clientConnections->FindPlayer(theEvent->gmID)))
                {
                    eventDesc.AppendFmt(" (%s)", target->GetName());
                }
            }
            
            psGMEventInfoMessage response(me->clientnum,
                                          psGMEventInfoMessage::CMD_INFO,
                                          msg.id,
                                          theEvent->eventName.GetDataSafe(),
                                          eventDesc.GetDataSafe(), 
                                          CheckEvalStatus(RequestingPlayerID, theEvent));
            response.SendMessage();
        }
        else
        {
            Error3("Client %s requested unavailable GM Event %d", client->GetName(), msg.id);
        }
    }
    else if (msg.command == psGMEventInfoMessage::CMD_EVAL)
    {
        GMEvent* Event;
        if ((Event = GetGMEventByID(msg.id)) != NULL)
        {
            // check if we should allow to comment this event. Running Gm can't evaluate it
            if(CheckEvalStatus(RequestingPlayerID, Event))
            {
                WriteGMEventEvaluation(client, Event, msg.xml);
                psserver->SendSystemOK(client->GetClientNum(), "Thanks. Your evaluation was stored in the database.");
                SetEvalStatus(RequestingPlayerID, Event, false);
            }
            else
            {
                psserver->SendSystemError(client->GetClientNum(), "You can't evaluate this event.");
            }
        }
        else
        {
            Error3("Client %s evaluated an unavailable GM Event %d", client->GetName(), msg.id);
        }
    }
    else if (msg.command == psGMEventInfoMessage::CMD_DISCARD)
    {
        DiscardGMEvent(client, msg.id);
    }
}
示例#4
0
文件: UIInput.cpp 项目: nhnam/Seasons
void CUIInput::InitEventSystem()
{
	if ( !gEnv->pFlashUI
		|| !g_pGame->GetIGameFramework() 
		|| !g_pGame->GetIGameFramework()->GetIActionMapManager() )
	{
		assert( false );
		return;
	}

	IActionMapManager* pAmMgr = g_pGame->GetIGameFramework()->GetIActionMapManager();
	pAmMgr->AddExtraActionListener( this );

	// set up the handlers
	if (s_actionHandler.GetNumHandlers() == 0)
	{
		#define ADD_HANDLER(action, func) s_actionHandler.AddHandler(actions.action, &CUIInput::func)
		const CGameActions& actions = g_pGame->Actions();

		ADD_HANDLER(ui_toggle_pause, OnActionTogglePause);
		ADD_HANDLER(ui_start_pause, OnActionStartPause);

		ADD_HANDLER(ui_up, OnActionUp);
		ADD_HANDLER(ui_down, OnActionDown);
		ADD_HANDLER(ui_left, OnActionLeft);	
		ADD_HANDLER(ui_right, OnActionRight);

		ADD_HANDLER(ui_click, OnActionClick);	
		ADD_HANDLER(ui_back, OnActionBack);	

		ADD_HANDLER(ui_confirm, OnActionConfirm);	
		ADD_HANDLER(ui_reset, OnActionReset);	

		#undef ADD_HANDLER
	}

	// ui events (sent to ui)
	m_pUIFunctions = gEnv->pFlashUI->CreateEventSystem( "Input", IUIEventSystem::eEST_SYSTEM_TO_UI );
	m_eventSender.Init(m_pUIFunctions);
	{
		SUIEventDesc eventDesc("OnKeyboardDone", "triggered once keyboard is done");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("String", "String of keyboard input");
		m_eventSender.RegisterEvent<eUIE_OnVirtKeyboardDone>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("OnKeyboardCancelled", "triggered once keyboard is cancelled");
		m_eventSender.RegisterEvent<eUIE_OnVirtKeyboardCancelled>(eventDesc);
	}

	// ui events (called from ui)
	m_pUIEvents = gEnv->pFlashUI->CreateEventSystem( "Input", IUIEventSystem::eEST_UI_TO_SYSTEM );
	m_eventDispatcher.Init(m_pUIEvents, this, "UIInput");
	{
		SUIEventDesc eventDesc("ShowVirualKeyboard", "Displays the virtual keyboard");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Title for the virtual keyboard");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Value", "Initial string of virtual keyboard");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("MaxChars", "Maximum chars");
		m_eventDispatcher.RegisterEvent( eventDesc, &CUIInput::OnDisplayVirtualKeyboard );
	}
}
示例#5
0
void CUIDialogs::InitEventSystem()
{
	if (!gEnv->pFlashUI) return;

	// events to send from this class to UI flowgraphs
	m_pUIFunctions = gEnv->pFlashUI->CreateEventSystem("Dialogs", IUIEventSystem::eEST_SYSTEM_TO_UI);
	m_eventSender.Init(m_pUIFunctions);

	{
		SUIEventDesc eventDesc("ShowDialogAsset", "Displays error dialog flash asset");
		m_eventSender.RegisterEvent<eUIE_DisplayDialogAsset>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("HideDialogAsset", "Hides error dialog flash asset");
		m_eventSender.RegisterEvent<eUIE_HideDialogAsset>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayWaitDialog", "Display wait dialog - this dialog should stay until it is removed via RemoveDialog event");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		m_eventSender.RegisterEvent<eUIE_AddDialogWait>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayWarning", "Display error dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button1", "Button1 String");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button2", "Button2 String");
		m_eventSender.RegisterEvent<eUIE_AddDialogWarning>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayError", "Display error dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button1", "Button1 String");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button2", "Button2 String");
		m_eventSender.RegisterEvent<eUIE_AddDialogError>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayAcceptDecline", "Display accept/decline dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button1", "Button1 String");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button2", "Button2 String");
		m_eventSender.RegisterEvent<eUIE_AddDialogAcceptDecline>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayConfirm", "Display confirm dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button1", "Button1 String");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button2", "Button2 String");
		m_eventSender.RegisterEvent<eUIE_AddDialogConfirm>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayOk", "Display ok dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button1", "Button1 String");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Button2", "Button2 String");
		m_eventSender.RegisterEvent<eUIE_AddDialogOkay>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("DisplayInputDialog", "Display input dialog");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Title", "Dialog title");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog message");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Default", "Input field default value");
		m_eventSender.RegisterEvent<eUIE_AddDialogInput>(eventDesc);
	}

	{
		SUIEventDesc eventDesc("RemoveDialog", "Removes a dialog from screen");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		m_eventSender.RegisterEvent<eUIE_RemoveDialog>(eventDesc);
	}


	// events that can be sent from UI flowgraphs to this class
	m_pUIEvents = gEnv->pFlashUI->CreateEventSystem("Dialogs", IUIEventSystem::eEST_UI_TO_SYSTEM);
	m_eventDispatcher.Init(m_pUIEvents, this, "UIDialogs");

	{
		SUIEventDesc eventDesc("DialogResult", "Call this to return a dialog result");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogId", "Dialog ID");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("DialogResult", "Result (0=Yes/Ok/Confirm, 1=No/Cancel/Decline)");
		eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("Message", "Dialog Message (e.g. for input dialog)");
		m_eventDispatcher.RegisterEvent(eventDesc, &CUIDialogs::OnDialogResult);
	}
}
示例#6
0
void CUISettings::InitEventSystem()
{
    if(!gEnv->pFlashUI) return;

    // CVars
    m_pRXVar = gEnv->pConsole->GetCVar("r_Width");
    m_pRYVar = gEnv->pConsole->GetCVar("r_Height");
    m_pFSVar = gEnv->pConsole->GetCVar("r_Fullscreen");
    m_pMusicVar = gEnv->pConsole->GetCVar("s_MusicVolume");
    m_pSFxVar = gEnv->pConsole->GetCVar("s_SFXVolume");
    m_pVideoVar = gEnv->pConsole->GetCVar("sys_flash_video_soundvolume");
    m_pVideoVar = m_pVideoVar ? m_pVideoVar : m_pMusicVar; // tmp fix to allow using music var as dummy fallback if GFX_VIDEO is not enabled (FreeSDK)
    m_pMouseSensitivity = gEnv->pConsole->GetCVar("cl_sensitivity");
    m_pInvertMouse = gEnv->pConsole->GetCVar("cl_invertMouse");
    m_pInvertController = gEnv->pConsole->GetCVar("cl_invertController");

    assert(m_pRXVar
           && m_pRYVar
           && m_pFSVar
           && m_pMusicVar
           && m_pSFxVar
           && m_pVideoVar
           && m_pMouseSensitivity
           && m_pInvertMouse
           && m_pInvertController);

    if(!(m_pRXVar
            && m_pRYVar
            && m_pFSVar
            && m_pMusicVar
            && m_pSFxVar
            && m_pVideoVar
            && m_pMouseSensitivity
            && m_pInvertMouse
            && m_pInvertController)) return;


    m_Resolutions.push_back(std::make_pair(1024,768));
    m_Resolutions.push_back(std::make_pair(1280,720));
    m_Resolutions.push_back(std::make_pair(1280,1050));
    m_Resolutions.push_back(std::make_pair(1680,1050));
    m_Resolutions.push_back(std::make_pair(1920,1080));


    // events to send from this class to UI flowgraphs
    m_pUIFunctions = gEnv->pFlashUI->CreateEventSystem("Settings", IUIEventSystem::eEST_SYSTEM_TO_UI);
    m_eventSender.Init(m_pUIFunctions);

    {
        SUIEventDesc eventDesc("OnGraphicChanged", "Triggered on graphic settings change");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("Resolution", "Resolution ID");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("ResX", "Screen X resolution");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("ResY", "Screen Y resolution");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("FullScreen", "Fullscreen");
        m_eventSender.RegisterEvent<eUIE_GraphicSettingsChanged>(eventDesc);
    }

    {
        SUIEventDesc eventDesc("OnSoundChanged", "Triggered if sound volume changed");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("Music", "Music volume");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("SFx", "SFx volume");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("Video", "Video volume");
        m_eventSender.RegisterEvent<eUIE_SoundSettingsChanged>(eventDesc);
    }

    {
        SUIEventDesc eventDesc("OnGameSettingsChanged", "Triggered if game settings changed");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("MouseSensitivity", "Mouse Sensitivity");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("InvertMouse", "Invert Mouse");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("InvertController", "Invert Controller");
        m_eventSender.RegisterEvent<eUIE_GameSettingsChanged>(eventDesc);
    }

    {
        SUIEventDesc eventDesc("OnResolutions", "Triggered if resolutions were requested.");
        eventDesc.SetDynamic("Resolutions", "UI array with all resolutions (x1,y1,x2,y2,...)");
        m_eventSender.RegisterEvent<eUIE_OnGetResolutions>(eventDesc);
    }

    {
        SUIEventDesc eventDesc("OnResolutionItem", "Triggered once per each resolution if resolutions were requested.");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("ResString", "Resolution as string (X x Y)");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("ID", "Resolution ID");
        m_eventSender.RegisterEvent<eUIE_OnGetResolutionItems>(eventDesc);
    }

    {
        SUIEventDesc eventDesc("OnLevelItem", "Triggered once per level if levels were requested.");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("LevelLabel", "@ui_<level> for localization");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_String>("LevelName", "name of the level");
        m_eventSender.RegisterEvent<eUIE_OnGetLevelItems>(eventDesc);
    }


    // events that can be sent from UI flowgraphs to this class
    m_pUIEvents = gEnv->pFlashUI->CreateEventSystem("Settings", IUIEventSystem::eEST_UI_TO_SYSTEM);
    m_eventDispatcher.Init(m_pUIEvents, this, "UISettings");

    {
        SUIEventDesc eventDesc("SetGraphics", "Call this to set graphic modes");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("Resolution", "Resolution ID");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("Fullscreen", "Fullscreen (True/False)");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnSetGraphicSettings);
    }

    {
        SUIEventDesc eventDesc("SetResolution", "Call this to set resolution");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("ResX", "Screen X resolution");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Int>("ResY", "Screen Y resolution");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("Fullscreen", "Fullscreen (True/False)");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnSetResolution);
    }

    {
        SUIEventDesc eventDesc("SetSound", "Call this to set sound settings");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("Music", "Music volume");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("SFx", "SFx volume");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("Video", "Video volume");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnSetSoundSettings);
    }

    {
        SUIEventDesc eventDesc("SetGameSettings", "Call this to set game settings");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Float>("MouseSensitivity", "Mouse Sensitivity");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("InvertMouse", "Invert Mouse");
        eventDesc.AddParam<SUIParameterDesc::eUIPT_Bool>("InvertController", "Invert Controller");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnSetGameSettings);
    }

    {
        SUIEventDesc eventDesc("GetResolutionList", "Execute this node will trigger the \"Events:Settings:OnResolutions\" node.");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnGetResolutions);
    }

    {
        SUIEventDesc eventDesc("GetCurrGraphics", "Execute this node will trigger the \"Events:Settings:OnGraphicChanged\" node.");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnGetCurrGraphicsSettings);
    }

    {
        SUIEventDesc eventDesc("GetCurrSound", "Execute this node will trigger the \"Events:Settings:OnSoundChanged\" node.");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnGetCurrSoundSettings);
    }

    {
        SUIEventDesc eventDesc("GetCurrGameSettings", "Execute this node will trigger the \"Events:Settings:OnGameSettingsChanged\" node.");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnGetCurrGameSettings);
    }

    {
        SUIEventDesc eventDesc("GetLevels", "Execute this node will trigger the \"Events:Settings:OnLevelItem\" node once per level.");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnGetLevels);
    }

    {
        SUIEventDesc eventDesc("LogoutUser", "Execute this node to save settings and logout user");
        m_eventDispatcher.RegisterEvent(eventDesc, &CUISettings::OnLogoutUser);
    }

    gEnv->pFlashUI->RegisterModule(this, "CUISettings");
}