fix: not exiting shooting gallery when clicking activity close button

Fixes #436
Fixes crash when replaying as well
This commit is contained in:
Aaron Kimbre
2023-05-10 19:26:04 -05:00
parent bf0ae6f181
commit 5af5b0f1c1
8 changed files with 70 additions and 39 deletions

View File

@@ -677,6 +677,9 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
case eGameMessageType::ZONE_SUMMARY_DISMISSED:
GameMessages::HandleZoneSummaryDismissed(inStream, entity);
break;
case eGameMessageType::REQUEST_ACTIVITY_EXIT:
GameMessages::HandleRequestActivityExit(inStream, entity);
break;
default:
// Game::logger->Log("GameMessageHandler", "Unknown game message ID: %i", messageID);
break;

View File

@@ -91,6 +91,7 @@
#include "eReplicaComponentType.h"
#include "eClientMessageType.h"
#include "eGameMessageType.h"
#include "ActivityManager.h"
#include "CDComponentsRegistryTable.h"
#include "CDObjectsTable.h"
@@ -6204,3 +6205,18 @@ void GameMessages::SendShowBillboardInteractIcon(const SystemAddress& sysAddr, L
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST
else SEND_PACKET
}
void GameMessages::HandleRequestActivityExit(RakNet::BitStream* inStream, Entity* entity) {
bool canceled = false;
inStream->Read(canceled);
if (!canceled) return;
LWOOBJID player_id = LWOOBJID_EMPTY;
inStream->Read(player_id);
auto player = EntityManager::Instance()->GetEntity(player_id);
if (!entity || !player) return;
for (auto* shootingGallery : EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::SHOOTING_GALLERY)) {
shootingGallery->RequestActivityExit(entity, player_id, true);
}
}

View File

@@ -648,6 +648,7 @@ namespace GameMessages {
void SendDeactivateBubbleBuffFromServer(LWOOBJID objectId, const SystemAddress& sysAddr);
void HandleZoneSummaryDismissed(RakNet::BitStream* inStream, Entity* entity);
void HandleRequestActivityExit(RakNet::BitStream* inStream, Entity* entity);
};
#endif // GAMEMESSAGES_H