@@ -856,6 +856,9 @@ class Game {
856856 Hud *hud = nullptr ;
857857 Minimap *mapper = nullptr ;
858858
859+ // Map server hud ids to client hud ids
860+ std::unordered_map<u32 , u32 > m_hud_server_to_client;
861+
859862 GameRunData runData;
860863 Flags m_flags;
861864
@@ -2602,12 +2605,11 @@ void Game::handleClientEvent_HandleParticleEvent(ClientEvent *event,
26022605void Game::handleClientEvent_HudAdd (ClientEvent *event, CameraOrientation *cam)
26032606{
26042607 LocalPlayer *player = client->getEnv ().getLocalPlayer ();
2605- auto &hud_server_to_client = client->getHUDTranslationMap ();
26062608
26072609 u32 server_id = event->hudadd .server_id ;
26082610 // ignore if we already have a HUD with that ID
2609- auto i = hud_server_to_client .find (server_id);
2610- if (i != hud_server_to_client .end ()) {
2611+ auto i = m_hud_server_to_client .find (server_id);
2612+ if (i != m_hud_server_to_client .end ()) {
26112613 delete event->hudadd .pos ;
26122614 delete event->hudadd .name ;
26132615 delete event->hudadd .scale ;
@@ -2635,7 +2637,7 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam)
26352637 e->size = *event->hudadd .size ;
26362638 e->z_index = event->hudadd .z_index ;
26372639 e->text2 = *event->hudadd .text2 ;
2638- hud_server_to_client [server_id] = player->addHud (e);
2640+ m_hud_server_to_client [server_id] = player->addHud (e);
26392641
26402642 delete event->hudadd .pos ;
26412643 delete event->hudadd .name ;
@@ -2651,18 +2653,28 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam)
26512653void Game::handleClientEvent_HudRemove (ClientEvent *event, CameraOrientation *cam)
26522654{
26532655 LocalPlayer *player = client->getEnv ().getLocalPlayer ();
2654- HudElement *e = player->removeHud (event->hudrm .id );
2655- delete e;
2656+
2657+ auto i = m_hud_server_to_client.find (event->hudrm .id );
2658+ if (i != m_hud_server_to_client.end ()) {
2659+ HudElement *e = player->removeHud (i->second );
2660+ delete e;
2661+ m_hud_server_to_client.erase (i);
2662+ }
2663+
26562664}
26572665
26582666void Game::handleClientEvent_HudChange (ClientEvent *event, CameraOrientation *cam)
26592667{
26602668 LocalPlayer *player = client->getEnv ().getLocalPlayer ();
26612669
2662- u32 id = event->hudchange .id ;
2663- HudElement *e = player->getHud (id);
2670+ HudElement *e = nullptr ;
2671+
2672+ auto i = m_hud_server_to_client.find (event->hudchange .id );
2673+ if (i != m_hud_server_to_client.end ()) {
2674+ e = player->getHud (i->second );
2675+ }
26642676
2665- if (e == NULL ) {
2677+ if (e == nullptr ) {
26662678 delete event->hudchange .v3fdata ;
26672679 delete event->hudchange .v2fdata ;
26682680 delete event->hudchange .sdata ;
0 commit comments