Fix race exit dialogue always exiting (#1077)

Fixes #1048
Tested that closing the dialog via esc, the x in the top right, or the big red x doesn't exit the race
Tested that the green check button does exit the race
This commit is contained in:
Aaron Kimbrell 2023-05-09 00:40:00 -05:00 committed by GitHub
parent ce931c2cfe
commit 4ff5afd9f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 5 deletions

View File

@ -362,8 +362,7 @@ void RacingControlComponent::OnRacingPlayerInfoResetFinished(Entity* player) {
} }
} }
void RacingControlComponent::HandleMessageBoxResponse(Entity* player, void RacingControlComponent::HandleMessageBoxResponse(Entity* player, int32_t button, const std::string& id) {
const std::string& id) {
auto* data = GetPlayerData(player->GetObjectID()); auto* data = GetPlayerData(player->GetObjectID());
if (data == nullptr) { if (data == nullptr) {
@ -405,7 +404,7 @@ void RacingControlComponent::HandleMessageBoxResponse(Entity* player,
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::LAST_PLACE_FINISH); // Finished first place in specific world. missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::LAST_PLACE_FINISH); // Finished first place in specific world.
} }
} }
} else if (id == "ACT_RACE_EXIT_THE_RACE?" || id == "Exit") { } else if (id == "ACT_RACE_EXIT_THE_RACE?" && button == m_ActivityExitConfirm) {
auto* vehicle = EntityManager::Instance()->GetEntity(data->vehicleID); auto* vehicle = EntityManager::Instance()->GetEntity(data->vehicleID);
if (vehicle == nullptr) { if (vehicle == nullptr) {

View File

@ -144,7 +144,7 @@ public:
/** /**
* Invoked when the player responds to the GUI. * Invoked when the player responds to the GUI.
*/ */
void HandleMessageBoxResponse(Entity* player, const std::string& id); void HandleMessageBoxResponse(Entity* player, int32_t button, const std::string& id);
/** /**
* Get the racing data from a player's LWOOBJID. * Get the racing data from a player's LWOOBJID.
@ -246,4 +246,9 @@ private:
float m_EmptyTimer; float m_EmptyTimer;
bool m_SoloRacing; bool m_SoloRacing;
/**
* Value for message box response to know if we are exiting the race via the activity dialogue
*/
const int32_t m_ActivityExitConfirm = 1;
}; };

View File

@ -3891,7 +3891,7 @@ void GameMessages::HandleMessageBoxResponse(RakNet::BitStream* inStream, Entity*
auto* racingControlComponent = entity->GetComponent<RacingControlComponent>(); auto* racingControlComponent = entity->GetComponent<RacingControlComponent>();
if (racingControlComponent != nullptr) { if (racingControlComponent != nullptr) {
racingControlComponent->HandleMessageBoxResponse(userEntity, GeneralUtils::UTF16ToWTF8(identifier)); racingControlComponent->HandleMessageBoxResponse(userEntity, iButton, GeneralUtils::UTF16ToWTF8(identifier));
} }
for (auto* shootingGallery : EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::SHOOTING_GALLERY)) { for (auto* shootingGallery : EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::SHOOTING_GALLERY)) {