1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 20:43:04 +01:00

Move gMarketingCampaigns to GameState_t

This commit is contained in:
Harry Hopkinson
2024-05-17 20:20:27 +01:00
committed by GitHub
parent 8b51112a81
commit ef8618209e
9 changed files with 18 additions and 18 deletions

View File

@@ -805,7 +805,7 @@ static Widget _windowFinancesResearchWidgets[] =
void OnPrepareDrawMarketing()
{
// Count number of active campaigns
int32_t numActiveCampaigns = static_cast<int32_t>(gMarketingCampaigns.size());
int32_t numActiveCampaigns = static_cast<int32_t>(GetGameState().MarketingCampaigns.size());
int32_t y = std::max(1, numActiveCampaigns) * kListRowHeight + 92;
// Update group box positions

View File

@@ -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<Award> CurrentAwards;
std::vector<MarketingCampaign> MarketingCampaigns;
/**
* Probability out of 65535, of gaining a new guest per game tick.
* new guests per second = 40 * (probability / 65535)

View File

@@ -40,8 +40,6 @@ static constexpr uint16_t AdvertisingCampaignGuestGenerationProbabilities[] = {
400, 300, 200, 200, 250, 200,
};
std::vector<MarketingCampaign> 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());
}

View File

@@ -14,8 +14,6 @@
#include "../ride/RideTypes.h"
#include "../ride/ShopItem.h"
#include <vector>
struct Guest;
enum
@@ -61,7 +59,6 @@ namespace MarketingCampaignFlags
}
extern const money64 AdvertisingCampaignPricePerWeek[ADVERTISING_CAMPAIGN_COUNT];
extern std::vector<MarketingCampaign> gMarketingCampaigns;
uint16_t MarketingGetCampaignGuestGenerationProbability(int32_t campaign);
void MarketingUpdate();

View File

@@ -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);

View File

@@ -1477,7 +1477,7 @@ namespace RCT1
{
campaign.ShopItemType = ShopItem(_s4.MarketingAssoc[i]);
}
gMarketingCampaigns.push_back(campaign);
gameState.MarketingCampaigns.push_back(campaign);
}
}
}

View File

@@ -2164,7 +2164,7 @@ namespace RCT2
{
campaign.ShopItemType = ShopItem(_s6.CampaignRideIndex[i]);
}
gMarketingCampaigns.push_back(campaign);
GetGameState().MarketingCampaigns.push_back(campaign);
}
}
}

View File

@@ -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

View File

@@ -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();