mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-02-01 19:25:12 +01:00
Use uint16_t for marketing probability
This commit is contained in:
@@ -30,20 +30,20 @@ const money16 AdvertisingCampaignPricePerWeek[] = {
|
||||
MONEY(200, 00), // RIDE
|
||||
};
|
||||
|
||||
static constexpr const int32_t AdvertisingCampaignGuestGenerationProbabilities[] = {
|
||||
static constexpr const uint16_t AdvertisingCampaignGuestGenerationProbabilities[] = {
|
||||
400, 300, 200, 200, 250, 200,
|
||||
};
|
||||
|
||||
std::vector<MarketingCampaign> gMarketingCampaigns;
|
||||
|
||||
int32_t marketing_get_campaign_guest_generation_probability(int32_t campaignType)
|
||||
uint16_t marketing_get_campaign_guest_generation_probability(int32_t campaignType)
|
||||
{
|
||||
auto campaign = marketing_get_campaign(campaignType);
|
||||
if (campaign == nullptr)
|
||||
return 0;
|
||||
|
||||
// Lower probability of guest generation if price was already low
|
||||
int32_t probability = AdvertisingCampaignGuestGenerationProbabilities[campaign->Type];
|
||||
auto probability = AdvertisingCampaignGuestGenerationProbabilities[campaign->Type];
|
||||
switch (campaign->Type)
|
||||
{
|
||||
case ADVERTISING_CAMPAIGN_PARK_ENTRY_FREE:
|
||||
@@ -57,7 +57,7 @@ int32_t marketing_get_campaign_guest_generation_probability(int32_t campaignType
|
||||
case ADVERTISING_CAMPAIGN_RIDE_FREE:
|
||||
{
|
||||
auto ride = get_ride(campaign->RideId);
|
||||
if (ride->price < MONEY(0, 30))
|
||||
if (ride == nullptr || ride->price < MONEY(0, 30))
|
||||
probability /= 8;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace MarketingCampaignFlags
|
||||
extern const money16 AdvertisingCampaignPricePerWeek[ADVERTISING_CAMPAIGN_COUNT];
|
||||
extern std::vector<MarketingCampaign> gMarketingCampaigns;
|
||||
|
||||
int32_t marketing_get_campaign_guest_generation_probability(int32_t campaign);
|
||||
uint16_t marketing_get_campaign_guest_generation_probability(int32_t campaign);
|
||||
void marketing_update();
|
||||
void marketing_set_guest_campaign(rct_peep* peep, int32_t campaign);
|
||||
bool marketing_is_campaign_type_applicable(int32_t campaignType);
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "Surface.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
using namespace OpenRCT2;
|
||||
|
||||
@@ -966,7 +967,9 @@ void Park::GenerateGuests()
|
||||
for (const auto& campaign : gMarketingCampaigns)
|
||||
{
|
||||
// Random chance of guest generation
|
||||
if ((int32_t)scenario_rand_max(0xFFFF) < marketing_get_campaign_guest_generation_probability(campaign.Type))
|
||||
auto probability = marketing_get_campaign_guest_generation_probability(campaign.Type);
|
||||
auto random = scenario_rand_max(std::numeric_limits<uint16_t>::max());
|
||||
if (random < probability)
|
||||
{
|
||||
GenerateGuestFromCampaign(campaign.Type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user