@@ -36,22 +36,12 @@ void EmitSoundFilter(int playerid, std::string sound_name, float pitch, float vo
3636MenuRenderer::MenuRenderer (Player* player)
3737{
3838 m_player = player;
39-
40- CPlayerSlot slot = player->GetSlot ();
41-
42- centerMessageEvent = g_gameEventManager->CreateEvent (" show_survival_respawn_status" , true );
43- centerMessageEvent->SetUint64 (" duration" , 1 );
44- centerMessageEvent->SetInt (" userid" , slot.Get ());
45-
46- playerListener = g_GameData.FetchSignature <GetLegacyGameEventListener>(" LegacyGameEventListener" )(slot);
47-
4839 menu = nullptr ;
4940}
5041
5142MenuRenderer::~MenuRenderer ()
5243{
5344 HideMenu ();
54- g_gameEventManager->FreeEvent (centerMessageEvent);
5545}
5646
5747void MenuRenderer::ShowMenu (std::string menu_id)
@@ -101,24 +91,23 @@ void MenuRenderer::HideMenu()
10191 selected = 0 ;
10292
10393 std::string kind = menu->GetKind ();
104- if (menu->IsTemporary ()) {
105- std::string menuID = menu->GetID ();
106- g_MenuManager.UnregisterMenu (menuID);
107- }
108-
109- menu = nullptr ;
110-
11194 if (kind == " center" ) {
11295 if (centerMessageEvent) {
11396 centerMessageEvent->SetString (" loc_token" , " Exiting..." );
114- playerListener->FireGameEvent (centerMessageEvent);
97+ g_GameData.FetchSignature <GetLegacyGameEventListener>(" LegacyGameEventListener" )(m_player->GetSlot ())->FireGameEvent (centerMessageEvent);
98+ g_gameEventManager->FreeEvent (centerMessageEvent);
11599 }
116100 }
117101 else if (kind == " screen" ) {
118102 g_VGUI.DeleteScreenText (menuTextID);
119-
120103 menuTextID = 0 ;
121104 }
105+
106+ if (menu->IsTemporary ()) {
107+ std::string menuID = menu->GetID ();
108+ g_MenuManager.UnregisterMenu (menuID);
109+ }
110+ menu = nullptr ;
122111}
123112
124113bool MenuRenderer::HasMenuShown ()
@@ -167,6 +156,9 @@ void MenuRenderer::RenderMenu() {
167156 if (!menu) return ;
168157 std::string kind = menu->GetKind ();
169158 if (kind == " center" ) {
159+ centerMessageEvent = g_gameEventManager->CreateEvent (" show_survival_respawn_status" , true );
160+ centerMessageEvent->SetUint64 (" duration" , 1 );
161+ centerMessageEvent->SetInt (" userid" , m_player->GetSlot ());
170162 centerMessageEvent->SetString (" loc_token" , menu->GeneratedItems (m_player->GetSlot (), page).c_str ());
171163 }
172164 else if (kind == " screen" ) {
@@ -184,9 +176,10 @@ void MenuRenderer::RenderMenuTick()
184176
185177 std::string kind = menu->GetKind ();
186178 if (kind == " center" ) {
187- if (!playerListener) return ;
179+ auto listener = g_GameData.FetchSignature <GetLegacyGameEventListener>(" LegacyGameEventListener" )(m_player->GetSlot ());
180+ if (!listener) return ;
188181 if (!centerMessageEvent) return ;
189- playerListener ->FireGameEvent (centerMessageEvent);
182+ listener ->FireGameEvent (centerMessageEvent);
190183 }
191184}
192185
0 commit comments