From 20f7a8ff88c2ceedd4a5e0322aaa1252b4e0926b Mon Sep 17 00:00:00 2001 From: David Markowitz Date: Sat, 6 Jan 2024 01:44:11 -0800 Subject: [PATCH] patch activity id not using overridden id Update ActivityComponent.h --- dGame/dComponents/ActivityComponent.cpp | 40 ++++++++++++++----------- dGame/dComponents/ActivityComponent.h | 2 ++ 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/dGame/dComponents/ActivityComponent.cpp b/dGame/dComponents/ActivityComponent.cpp index 7ea7500b..454eee2d 100644 --- a/dGame/dComponents/ActivityComponent.cpp +++ b/dGame/dComponents/ActivityComponent.cpp @@ -30,23 +30,11 @@ #include "LeaderboardManager.h" ActivityComponent::ActivityComponent(Entity* parent, int32_t activityID) : Component(parent) { - if (activityID > 0) m_ActivityID = activityID; - else m_ActivityID = parent->GetVar(u"activityID"); - CDActivitiesTable* activitiesTable = CDClientManager::Instance().GetTable(); - std::vector activities = activitiesTable->Query([this](CDActivities entry) {return (entry.ActivityID == m_ActivityID); }); - - for (CDActivities activity : activities) { - m_ActivityInfo = activity; - if (static_cast(activity.leaderboardType) == Leaderboard::Type::Racing && Game::config->GetValue("solo_racing") == "1") { - m_ActivityInfo.minTeamSize = 1; - m_ActivityInfo.minTeams = 1; - } - if (m_ActivityInfo.instanceMapID == -1) { - const auto& transferOverride = parent->GetVarAsString(u"transferZoneID"); - if (!transferOverride.empty()) { - GeneralUtils::TryParse(transferOverride, m_ActivityInfo.instanceMapID); - } - } + m_ActivityID = activityID; + LoadActivityData(activityID); + if (m_Parent->HasVar(u"activityID")) { + m_ActivityID = parent->GetVar(u"activityID"); + LoadActivityData(m_ActivityID); } auto* destroyableComponent = m_Parent->GetComponent(); @@ -74,6 +62,24 @@ ActivityComponent::ActivityComponent(Entity* parent, int32_t activityID) : Compo } } } +void ActivityComponent::LoadActivityData(const int32_t activityId) { + CDActivitiesTable* activitiesTable = CDClientManager::Instance().GetTable(); + std::vector activities = activitiesTable->Query([activityId](CDActivities entry) {return (entry.ActivityID == activityId); }); + + for (CDActivities activity : activities) { + m_ActivityInfo = activity; + if (static_cast(activity.leaderboardType) == Leaderboard::Type::Racing && Game::config->GetValue("solo_racing") == "1") { + m_ActivityInfo.minTeamSize = 1; + m_ActivityInfo.minTeams = 1; + } + if (m_ActivityInfo.instanceMapID == -1) { + const auto& transferOverride = m_Parent->GetVarAsString(u"transferZoneID"); + if (!transferOverride.empty()) { + GeneralUtils::TryParse(transferOverride, m_ActivityInfo.instanceMapID); + } + } + } +} void ActivityComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) { outBitStream->Write(m_DirtyActivityInfo); diff --git a/dGame/dComponents/ActivityComponent.h b/dGame/dComponents/ActivityComponent.h index 96dbd5fb..de63b343 100644 --- a/dGame/dComponents/ActivityComponent.h +++ b/dGame/dComponents/ActivityComponent.h @@ -152,6 +152,8 @@ class ActivityComponent : public Component { public: ActivityComponent(Entity* parent, int32_t activityID); + void LoadActivityData(const int32_t activityId); + void Update(float deltaTime) override; void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate) override;