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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1477,7 +1477,7 @@ namespace RCT1
|
||||
{
|
||||
campaign.ShopItemType = ShopItem(_s4.MarketingAssoc[i]);
|
||||
}
|
||||
gMarketingCampaigns.push_back(campaign);
|
||||
gameState.MarketingCampaigns.push_back(campaign);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2164,7 +2164,7 @@ namespace RCT2
|
||||
{
|
||||
campaign.ShopItemType = ShopItem(_s6.CampaignRideIndex[i]);
|
||||
}
|
||||
gMarketingCampaigns.push_back(campaign);
|
||||
GetGameState().MarketingCampaigns.push_back(campaign);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user