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"); }
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 ); } }
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); } }
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 ); } }
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); } }
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"); }