From ef8618209e92e973e05ac7c9e48d449cb40d974e Mon Sep 17 00:00:00 2001 From: Harry Hopkinson <63599884+Harry-Hopkinson@users.noreply.github.com> Date: Fri, 17 May 2024 20:20:27 +0100 Subject: [PATCH] Move gMarketingCampaigns to GameState_t --- src/openrct2-ui/windows/Finances.cpp | 2 +- src/openrct2/GameState.h | 3 +++ src/openrct2/management/Marketing.cpp | 16 ++++++++-------- src/openrct2/management/Marketing.h | 3 --- src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/scenario/Scenario.cpp | 2 +- src/openrct2/world/Park.cpp | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index a1420ca323..6e6716379c 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -805,7 +805,7 @@ static Widget _windowFinancesResearchWidgets[] = void OnPrepareDrawMarketing() { // Count number of active campaigns - int32_t numActiveCampaigns = static_cast(gMarketingCampaigns.size()); + int32_t numActiveCampaigns = static_cast(GetGameState().MarketingCampaigns.size()); int32_t y = std::max(1, numActiveCampaigns) * kListRowHeight + 92; // Update group box positions diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 8be137ecd6..a40cd553be 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -16,6 +16,7 @@ #include "interface/ZoomLevel.h" #include "management/Award.h" #include "management/Finance.h" +#include "management/Marketing.h" #include "management/NewsItem.h" #include "ride/Ride.h" #include "ride/RideRatings.h" @@ -131,6 +132,8 @@ namespace OpenRCT2 std::vector CurrentAwards; + std::vector MarketingCampaigns; + /** * Probability out of 65535, of gaining a new guest per game tick. * new guests per second = 40 * (probability / 65535) diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index e33289e09b..848ffc2f75 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -40,8 +40,6 @@ static constexpr uint16_t AdvertisingCampaignGuestGenerationProbabilities[] = { 400, 300, 200, 200, 250, 200, }; -std::vector gMarketingCampaigns; - uint16_t MarketingGetCampaignGuestGenerationProbability(int32_t campaignType) { auto campaign = MarketingGetCampaign(campaignType); @@ -103,10 +101,12 @@ void MarketingUpdate() { PROFILED_FUNCTION(); - if (GetGameState().Cheats.NeverendingMarketing) + auto& gameState = GetGameState(); + + if (gameState.Cheats.NeverendingMarketing) return; - for (auto it = gMarketingCampaigns.begin(); it != gMarketingCampaigns.end();) + for (auto it = gameState.MarketingCampaigns.begin(); it != gameState.MarketingCampaigns.end();) { auto& campaign = *it; if (campaign.Flags & MarketingCampaignFlags::FIRST_WEEK) @@ -123,7 +123,7 @@ void MarketingUpdate() if (campaign.WeeksLeft == 0) { MarketingRaiseFinishedNotification(campaign); - it = gMarketingCampaigns.erase(it); + it = gameState.MarketingCampaigns.erase(it); } else { @@ -222,7 +222,7 @@ bool MarketingIsCampaignTypeApplicable(int32_t campaignType) MarketingCampaign* MarketingGetCampaign(int32_t campaignType) { - for (auto& campaign : gMarketingCampaigns) + for (auto& campaign : GetGameState().MarketingCampaigns) { if (campaign.Type == campaignType) { @@ -242,7 +242,7 @@ void MarketingNewCampaign(const MarketingCampaign& campaign) } else { - gMarketingCampaigns.push_back(campaign); + GetGameState().MarketingCampaigns.push_back(campaign); } } @@ -256,7 +256,7 @@ void MarketingCancelCampaignsForRide(const RideId rideId) return false; }; - auto& v = gMarketingCampaigns; + auto& v = GetGameState().MarketingCampaigns; auto removedIt = std::remove_if(v.begin(), v.end(), isCampaignForRideFn); v.erase(removedIt, v.end()); } diff --git a/src/openrct2/management/Marketing.h b/src/openrct2/management/Marketing.h index c3f9e475de..6013a609c9 100644 --- a/src/openrct2/management/Marketing.h +++ b/src/openrct2/management/Marketing.h @@ -14,8 +14,6 @@ #include "../ride/RideTypes.h" #include "../ride/ShopItem.h" -#include - struct Guest; enum @@ -61,7 +59,6 @@ namespace MarketingCampaignFlags } extern const money64 AdvertisingCampaignPricePerWeek[ADVERTISING_CAMPAIGN_COUNT]; -extern std::vector gMarketingCampaigns; uint16_t MarketingGetCampaignGuestGenerationProbability(int32_t campaign); void MarketingUpdate(); diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 149bfd3eb2..71e0c5cec2 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -846,7 +846,7 @@ namespace OpenRCT2 cs.ReadWrite(gameState.HistoricalProfit); // Marketing - cs.ReadWriteVector(gMarketingCampaigns, [&cs](MarketingCampaign& campaign) { + cs.ReadWriteVector(gameState.MarketingCampaigns, [&cs](MarketingCampaign& campaign) { cs.ReadWrite(campaign.Type); cs.ReadWrite(campaign.WeeksLeft); cs.ReadWrite(campaign.Flags); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 90a8e754bd..899a94537a 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1477,7 +1477,7 @@ namespace RCT1 { campaign.ShopItemType = ShopItem(_s4.MarketingAssoc[i]); } - gMarketingCampaigns.push_back(campaign); + gameState.MarketingCampaigns.push_back(campaign); } } } diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index ec021b60c9..30c1177201 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -2164,7 +2164,7 @@ namespace RCT2 { campaign.ShopItemType = ShopItem(_s6.CampaignRideIndex[i]); } - gMarketingCampaigns.push_back(campaign); + GetGameState().MarketingCampaigns.push_back(campaign); } } } diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 7f91d2496e..979e965050 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -160,7 +160,7 @@ void ScenarioReset(GameState_t& gameState) gameState.LastEntranceStyle = 0; } - gMarketingCampaigns.clear(); + gameState.MarketingCampaigns.clear(); gameState.Park.RatingCasualtyPenalty = 0; // Open park with free entry when there is no money diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index 28abebe80a..dc74db8c30 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -228,7 +228,7 @@ namespace OpenRCT2::Park } // Extra guests generated by advertising campaigns - for (const auto& campaign : gMarketingCampaigns) + for (const auto& campaign : gameState.MarketingCampaigns) { // Random chance of guest generation auto probability = MarketingGetCampaignGuestGenerationProbability(campaign.Type); @@ -275,7 +275,7 @@ namespace OpenRCT2::Park gameState.TotalRideValueForMoney = 0; gameState.SuggestedGuestMaximum = 0; gameState.ResearchLastItem = std::nullopt; - gMarketingCampaigns.clear(); + gameState.MarketingCampaigns.clear(); ResearchResetItems(gameState); FinanceInit();