@@ -36,22 +36,12 @@ void EmitSoundFilter(int playerid, std::string sound_name, float pitch, float vo
36
36
MenuRenderer::MenuRenderer (Player* player)
37
37
{
38
38
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
-
48
39
menu = nullptr ;
49
40
}
50
41
51
42
MenuRenderer::~MenuRenderer ()
52
43
{
53
44
HideMenu ();
54
- g_gameEventManager->FreeEvent (centerMessageEvent);
55
45
}
56
46
57
47
void MenuRenderer::ShowMenu (std::string menu_id)
@@ -101,24 +91,23 @@ void MenuRenderer::HideMenu()
101
91
selected = 0 ;
102
92
103
93
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
-
111
94
if (kind == " center" ) {
112
95
if (centerMessageEvent) {
113
96
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);
115
99
}
116
100
}
117
101
else if (kind == " screen" ) {
118
102
g_VGUI.DeleteScreenText (menuTextID);
119
-
120
103
menuTextID = 0 ;
121
104
}
105
+
106
+ if (menu->IsTemporary ()) {
107
+ std::string menuID = menu->GetID ();
108
+ g_MenuManager.UnregisterMenu (menuID);
109
+ }
110
+ menu = nullptr ;
122
111
}
123
112
124
113
bool MenuRenderer::HasMenuShown ()
@@ -167,6 +156,9 @@ void MenuRenderer::RenderMenu() {
167
156
if (!menu) return ;
168
157
std::string kind = menu->GetKind ();
169
158
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 ());
170
162
centerMessageEvent->SetString (" loc_token" , menu->GeneratedItems (m_player->GetSlot (), page).c_str ());
171
163
}
172
164
else if (kind == " screen" ) {
@@ -184,9 +176,10 @@ void MenuRenderer::RenderMenuTick()
184
176
185
177
std::string kind = menu->GetKind ();
186
178
if (kind == " center" ) {
187
- if (!playerListener) return ;
179
+ auto listener = g_GameData.FetchSignature <GetLegacyGameEventListener>(" LegacyGameEventListener" )(m_player->GetSlot ());
180
+ if (!listener) return ;
188
181
if (!centerMessageEvent) return ;
189
- playerListener ->FireGameEvent (centerMessageEvent);
182
+ listener ->FireGameEvent (centerMessageEvent);
190
183
}
191
184
}
192
185
0 commit comments