mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #16925
This commit is contained in:
commit
ddffa9e892
|
@ -3676,8 +3676,7 @@ STR_6484 :See-Through vegetation toggle
|
|||
STR_6485 :See-Through vehicles toggle
|
||||
STR_6486 :See-Through guests toggle
|
||||
STR_6487 :See-Through staff toggle
|
||||
STR_6488 :Remove queue line cap
|
||||
STR_6489 :This cheat removes the normal cap of 1000 peeps on ride queue lines
|
||||
STR_6488 :{RED}Guests are complaining about the length of the queues in your park.{NEWLINE}Consider shortening problematic queues, or increase the ride’s throughput.
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
- Feature: [#16806] Parkobj can load sprites from RCT image archives.
|
||||
- Feature: [#16831] Allow ternary colours for small and large scenery objects.
|
||||
- Feature: [#16872] [Plugin] Add support for custom images.
|
||||
- Feature: [#16855] Added new cheat to remove the cap on queue lengths.
|
||||
- Improved: [#3517] Cheats are now saved with the park.
|
||||
- Improved: [#10150] Ride stations are now properly checked if they’re sheltered.
|
||||
- Improved: [#10664, #16072] Visibility status can be modified directly in the Tile Inspector's list.
|
||||
|
@ -36,6 +35,7 @@
|
|||
- Improved: [#16408] Improve --version cli option to report more compatibility information.
|
||||
- Improved: [#16740] Allow staff patrol areas to be defined with individual tiles rather than groups of 4x4.
|
||||
- Improved: [#16764] [Plugin] Add hook 'map.save', called before the map is about is saved.
|
||||
- Improved: [#16925] The queue length of 1000 guests is lifted, and a warning for too long queues is added instead.
|
||||
- Change: [#14484] Make the Heartline Twister coaster ratings a little bit less hateful.
|
||||
- Change: [#16077] When importing SV6 files, the RCT1 land types are only added when they were actually used.
|
||||
- Change: [#16424] Following an entity in the title sequence no longer toggles underground view when it's underground.
|
||||
|
|
|
@ -166,7 +166,6 @@ enum WindowCheatsWidgetIdx
|
|||
WIDX_DISABLE_BRAKES_FAILURE,
|
||||
WIDX_DISABLE_ALL_BREAKDOWNS,
|
||||
WIDX_DISABLE_RIDE_VALUE_AGING,
|
||||
WIDX_NO_CAP_ON_QUEUE_LENGTH,
|
||||
WIDX_TRACK_PIECES_GROUP,
|
||||
WIDX_ENABLE_ARBITRARY_RIDE_TYPE_CHANGES,
|
||||
WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES,
|
||||
|
@ -298,18 +297,17 @@ static rct_widget window_cheats_rides_widgets[] =
|
|||
MakeWidget({ 11, 153}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_ENABLE_ALL_DRAWABLE_TRACK_PIECES, STR_CHEAT_ENABLE_ALL_DRAWABLE_TRACK_PIECES_TIP ), // Show all drawable track pieces
|
||||
MakeWidget({ 11, 174}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_ENABLE_CHAIN_LIFT_ON_ALL_TRACK, STR_CHEAT_ENABLE_CHAIN_LIFT_ON_ALL_TRACK_TIP ), // Enable chain lift on all track
|
||||
MakeWidget({ 11, 195}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_ALLOW_TRACK_PLACE_INVALID_HEIGHTS, STR_CHEAT_ALLOW_TRACK_PLACE_INVALID_HEIGHTS_TIP), // Allow track place at invalid heights
|
||||
MakeWidget({ 5, 221}, {238, 143}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GROUP_OPERATION ), // Operation group
|
||||
MakeWidget({ 5, 221}, {238, 122}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GROUP_OPERATION ), // Construction group
|
||||
MakeWidget({ 11, 237}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_SHOW_ALL_OPERATING_MODES ), // Show all operating modes
|
||||
MakeWidget({ 11, 258}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_UNLOCK_OPERATING_LIMITS, STR_CHEAT_UNLOCK_OPERATING_LIMITS_TIP ), // 410 km/h lift hill etc.
|
||||
MakeWidget({ 11, 279}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_DISABLE_BRAKES_FAILURE, STR_CHEAT_DISABLE_BRAKES_FAILURE_TIP ), // Disable brakes failure
|
||||
MakeWidget({ 11, 300}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_DISABLE_BREAKDOWNS, STR_CHEAT_DISABLE_BREAKDOWNS_TIP ), // Disable all breakdowns
|
||||
MakeWidget({ 11, 321}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_DISABLE_RIDE_VALUE_AGING, STR_CHEAT_DISABLE_RIDE_VALUE_AGING_TIP ), // Disable ride ageing
|
||||
MakeWidget({ 11, 342}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_NO_CAP_ON_QUEUE_LENGTH, STR_CHEAT_NO_CAP_ON_QUEUE_LENGTH_TOOLTIP ), // No cap on ride queue lengths
|
||||
MakeWidget({ 5, 368}, {238, 101}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GROUP_AVAILABILITY ), // Availability group
|
||||
MakeWidget({ 11, 384}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES, STR_CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES_TIP), // Allow arbitrary ride type changes
|
||||
MakeWidget({ 11, 405}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES ), // Show vehicles from other track types
|
||||
MakeWidget({ 11, 426}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_DISABLE_TRAIN_LENGTH_LIMIT, STR_CHEAT_DISABLE_TRAIN_LENGTH_LIMIT_TIP ), // Disable train length limits
|
||||
MakeWidget({ 11, 447}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_IGNORE_RESEARCH_STATUS, STR_CHEAT_IGNORE_RESEARCH_STATUS_TIP ), // Ignore Research Status
|
||||
MakeWidget({ 5, 347}, {238, 101}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GROUP_AVAILABILITY ), // Construction group
|
||||
MakeWidget({ 11, 363}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES, STR_CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES_TIP), // Allow arbitrary ride type changes
|
||||
MakeWidget({ 11, 384}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES ), // Show vehicles from other track types
|
||||
MakeWidget({ 11, 405}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_DISABLE_TRAIN_LENGTH_LIMIT, STR_CHEAT_DISABLE_TRAIN_LENGTH_LIMIT_TIP ), // Disable train length limits
|
||||
MakeWidget({ 11, 426}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CHEAT_IGNORE_RESEARCH_STATUS, STR_CHEAT_IGNORE_RESEARCH_STATUS_TIP ), // Ignore Research Status
|
||||
WIDGETS_END,
|
||||
};
|
||||
|
||||
|
@ -492,7 +490,6 @@ public:
|
|||
SetCheckboxValue(WIDX_IGNORE_RESEARCH_STATUS, gCheatsIgnoreResearchStatus);
|
||||
SetCheckboxValue(WIDX_ENABLE_ALL_DRAWABLE_TRACK_PIECES, gCheatsEnableAllDrawableTrackPieces);
|
||||
SetCheckboxValue(WIDX_ALLOW_TRACK_PLACE_INVALID_HEIGHTS, gCheatsAllowTrackPlaceInvalidHeights);
|
||||
SetCheckboxValue(WIDX_NO_CAP_ON_QUEUE_LENGTH, gCheatsNoCapOnQueueLength);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1085,9 +1082,6 @@ private:
|
|||
case WIDX_DISABLE_RIDE_VALUE_AGING:
|
||||
CheatsSet(CheatType::DisableRideValueAging, !gCheatsDisableRideValueAging);
|
||||
break;
|
||||
case WIDX_NO_CAP_ON_QUEUE_LENGTH:
|
||||
CheatsSet(CheatType::NoCapOnQueueLength, !gCheatsNoCapOnQueueLength);
|
||||
break;
|
||||
case WIDX_IGNORE_RESEARCH_STATUS:
|
||||
CheatsSet(CheatType::IgnoreResearchStatus, !gCheatsIgnoreResearchStatus);
|
||||
break;
|
||||
|
|
|
@ -52,7 +52,6 @@ bool gCheatsDisableRideValueAging = false;
|
|||
bool gCheatsIgnoreResearchStatus = false;
|
||||
bool gCheatsEnableAllDrawableTrackPieces = false;
|
||||
bool gCheatsAllowTrackPlaceInvalidHeights = false;
|
||||
bool gCheatsNoCapOnQueueLength = false;
|
||||
|
||||
void CheatsReset()
|
||||
{
|
||||
|
@ -78,7 +77,6 @@ void CheatsReset()
|
|||
gCheatsIgnoreResearchStatus = false;
|
||||
gCheatsEnableAllDrawableTrackPieces = false;
|
||||
gCheatsAllowTrackPlaceInvalidHeights = false;
|
||||
gCheatsNoCapOnQueueLength = false;
|
||||
}
|
||||
|
||||
void CheatsSet(CheatType cheatType, int32_t param1 /* = 0*/, int32_t param2 /* = 0*/)
|
||||
|
@ -127,7 +125,6 @@ void CheatsSerialise(DataSerialiser& ds)
|
|||
CheatEntrySerialise(ds, CheatType::IgnoreResearchStatus, gCheatsIgnoreResearchStatus, count);
|
||||
CheatEntrySerialise(ds, CheatType::EnableAllDrawableTrackPieces, gCheatsEnableAllDrawableTrackPieces, count);
|
||||
CheatEntrySerialise(ds, CheatType::AllowTrackPlaceInvalidHeights, gCheatsAllowTrackPlaceInvalidHeights, count);
|
||||
CheatEntrySerialise(ds, CheatType::NoCapOnQueueLength, gCheatsNoCapOnQueueLength, count);
|
||||
|
||||
// Remember current position and update count.
|
||||
uint64_t endOffset = stream.GetPosition();
|
||||
|
@ -147,6 +144,8 @@ void CheatsSerialise(DataSerialiser& ds)
|
|||
int32_t type = 0;
|
||||
ds << type;
|
||||
|
||||
static bool dummyBool;
|
||||
|
||||
switch (static_cast<CheatType>(type))
|
||||
{
|
||||
case CheatType::SandboxMode:
|
||||
|
@ -215,8 +214,8 @@ void CheatsSerialise(DataSerialiser& ds)
|
|||
case CheatType::AllowTrackPlaceInvalidHeights:
|
||||
ds << gCheatsAllowTrackPlaceInvalidHeights;
|
||||
break;
|
||||
case CheatType::NoCapOnQueueLength:
|
||||
ds << gCheatsNoCapOnQueueLength;
|
||||
case CheatType::NoCapOnQueueLengthDummy:
|
||||
ds << dummyBool;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -321,8 +320,6 @@ const char* CheatsGetName(CheatType cheatType)
|
|||
return language_get_string(STR_CHEAT_ENABLE_ALL_DRAWABLE_TRACK_PIECES);
|
||||
case CheatType::AllowTrackPlaceInvalidHeights:
|
||||
return language_get_string(STR_CHEAT_ALLOW_TRACK_PLACE_INVALID_HEIGHTS);
|
||||
case CheatType::NoCapOnQueueLength:
|
||||
return language_get_string(STR_CHEAT_NO_CAP_ON_QUEUE_LENGTH);
|
||||
default:
|
||||
return "Unknown Cheat";
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ extern bool gCheatsAllowArbitraryRideTypeChanges;
|
|||
extern bool gCheatsIgnoreResearchStatus;
|
||||
extern bool gCheatsEnableAllDrawableTrackPieces;
|
||||
extern bool gCheatsAllowTrackPlaceInvalidHeights;
|
||||
extern bool gCheatsNoCapOnQueueLength;
|
||||
|
||||
enum class CheatType : int32_t
|
||||
{
|
||||
|
@ -86,7 +85,7 @@ enum class CheatType : int32_t
|
|||
CreateDucks,
|
||||
RemoveDucks,
|
||||
AllowTrackPlaceInvalidHeights,
|
||||
NoCapOnQueueLength,
|
||||
NoCapOnQueueLengthDummy, // Removed; this dummy exists only for deserialisation parks that had it saved
|
||||
Count,
|
||||
};
|
||||
|
||||
|
|
|
@ -240,9 +240,6 @@ GameActions::Result SetCheatAction::Execute() const
|
|||
case CheatType::AllowTrackPlaceInvalidHeights:
|
||||
gCheatsAllowTrackPlaceInvalidHeights = _param1 != 0;
|
||||
break;
|
||||
case CheatType::NoCapOnQueueLength:
|
||||
gCheatsNoCapOnQueueLength = _param1 != 0;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
log_error("Unabled cheat: %d", _cheatType.id);
|
||||
|
@ -308,8 +305,6 @@ ParametersRange SetCheatAction::GetParameterRange(CheatType cheatType) const
|
|||
[[fallthrough]];
|
||||
case CheatType::EnableAllDrawableTrackPieces:
|
||||
[[fallthrough]];
|
||||
case CheatType::NoCapOnQueueLength:
|
||||
[[fallthrough]];
|
||||
case CheatType::OpenClosePark:
|
||||
return { { 0, 1 }, { 0, 0 } };
|
||||
case CheatType::AddMoney:
|
||||
|
|
|
@ -1947,12 +1947,6 @@ bool Guest::ShouldGoOnRide(Ride* ride, StationIndex entranceNum, bool atQueue, b
|
|||
if (peepAtRide)
|
||||
{
|
||||
auto& station = ride->GetStation(entranceNum);
|
||||
// Peeps won't join a queue that has 1000 peeps already in it.
|
||||
if (station.QueueLength >= MAX_RIDE_QUEUE_LENGTH && !gCheatsNoCapOnQueueLength)
|
||||
{
|
||||
peep_tried_to_enter_full_queue(this, ride);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Rides without queues can only have one peep waiting at a time.
|
||||
if (!atQueue)
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#define PEEP_VANDALISM_WARNING_THRESHOLD 15
|
||||
#define PEEP_NOEXIT_WARNING_THRESHOLD 8
|
||||
#define PEEP_LOST_WARNING_THRESHOLD 8
|
||||
#define PEEP_TOO_LONG_QUEUE_THRESHOLD 25
|
||||
|
||||
#define PEEP_MAX_HAPPINESS 255
|
||||
#define PEEP_MAX_HUNGER 255
|
||||
|
|
|
@ -1008,153 +1008,191 @@ void Peep::Update()
|
|||
void peep_problem_warnings_update()
|
||||
{
|
||||
Ride* ride;
|
||||
uint32_t hunger_counter = 0, lost_counter = 0, noexit_counter = 0, thirst_counter = 0, litter_counter = 0,
|
||||
disgust_counter = 0, toilet_counter = 0, vandalism_counter = 0;
|
||||
uint8_t* warning_throttle = gPeepWarningThrottle;
|
||||
uint32_t hungerCounter = 0, lostCounter = 0, noexitCounter = 0, thirstCounter = 0, litterCounter = 0, disgustCounter = 0,
|
||||
toiletCounter = 0, vandalismCounter = 0;
|
||||
uint8_t* warningThrottle = gPeepWarningThrottle;
|
||||
|
||||
int32_t inQueueCounter = 0;
|
||||
int32_t tooLongQueueCounter = 0;
|
||||
std::map<RideId, int32_t> queueComplainingGuestsMap;
|
||||
|
||||
for (auto peep : EntityList<Guest>())
|
||||
{
|
||||
if (peep->OutsideOfPark || peep->Thoughts[0].freshness > 5)
|
||||
if (peep->OutsideOfPark)
|
||||
continue;
|
||||
|
||||
if (peep->State == PeepState::Queuing || peep->State == PeepState::QueuingFront)
|
||||
inQueueCounter++;
|
||||
|
||||
if (peep->Thoughts[0].freshness > 5)
|
||||
continue;
|
||||
|
||||
switch (peep->Thoughts[0].type)
|
||||
{
|
||||
case PeepThoughtType::Lost: // 0x10
|
||||
lost_counter++;
|
||||
lostCounter++;
|
||||
break;
|
||||
|
||||
case PeepThoughtType::Hungry: // 0x14
|
||||
if (peep->GuestHeadingToRideId.IsNull())
|
||||
{
|
||||
hunger_counter++;
|
||||
hungerCounter++;
|
||||
break;
|
||||
}
|
||||
ride = get_ride(peep->GuestHeadingToRideId);
|
||||
if (ride != nullptr && !ride->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_FLAT_RIDE))
|
||||
hunger_counter++;
|
||||
hungerCounter++;
|
||||
break;
|
||||
|
||||
case PeepThoughtType::Thirsty:
|
||||
if (peep->GuestHeadingToRideId.IsNull())
|
||||
{
|
||||
thirst_counter++;
|
||||
thirstCounter++;
|
||||
break;
|
||||
}
|
||||
ride = get_ride(peep->GuestHeadingToRideId);
|
||||
if (ride != nullptr && !ride->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_SELLS_DRINKS))
|
||||
thirst_counter++;
|
||||
thirstCounter++;
|
||||
break;
|
||||
|
||||
case PeepThoughtType::Toilet:
|
||||
if (peep->GuestHeadingToRideId.IsNull())
|
||||
{
|
||||
toilet_counter++;
|
||||
toiletCounter++;
|
||||
break;
|
||||
}
|
||||
ride = get_ride(peep->GuestHeadingToRideId);
|
||||
if (ride != nullptr && !ride->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
|
||||
toilet_counter++;
|
||||
toiletCounter++;
|
||||
break;
|
||||
|
||||
case PeepThoughtType::BadLitter: // 0x1a
|
||||
litter_counter++;
|
||||
litterCounter++;
|
||||
break;
|
||||
case PeepThoughtType::CantFindExit: // 0x1b
|
||||
noexit_counter++;
|
||||
noexitCounter++;
|
||||
break;
|
||||
case PeepThoughtType::PathDisgusting: // 0x1f
|
||||
disgust_counter++;
|
||||
disgustCounter++;
|
||||
break;
|
||||
case PeepThoughtType::Vandalism: // 0x21
|
||||
vandalism_counter++;
|
||||
vandalismCounter++;
|
||||
break;
|
||||
case PeepThoughtType::QueuingAges:
|
||||
tooLongQueueCounter++;
|
||||
queueComplainingGuestsMap[peep->Thoughts[0].rideId]++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// could maybe be packed into a loop, would lose a lot of clarity though
|
||||
if (warning_throttle[0])
|
||||
--warning_throttle[0];
|
||||
else if (hunger_counter >= PEEP_HUNGER_WARNING_THRESHOLD && hunger_counter >= gNumGuestsInPark / 16)
|
||||
if (warningThrottle[0])
|
||||
--warningThrottle[0];
|
||||
else if (hungerCounter >= PEEP_HUNGER_WARNING_THRESHOLD && hungerCounter >= gNumGuestsInPark / 16)
|
||||
{
|
||||
warning_throttle[0] = 4;
|
||||
warningThrottle[0] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_ARE_HUNGRY, 20, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::Hungry);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_ARE_HUNGRY, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[1])
|
||||
--warning_throttle[1];
|
||||
else if (thirst_counter >= PEEP_THIRST_WARNING_THRESHOLD && thirst_counter >= gNumGuestsInPark / 16)
|
||||
if (warningThrottle[1])
|
||||
--warningThrottle[1];
|
||||
else if (thirstCounter >= PEEP_THIRST_WARNING_THRESHOLD && thirstCounter >= gNumGuestsInPark / 16)
|
||||
{
|
||||
warning_throttle[1] = 4;
|
||||
warningThrottle[1] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_ARE_THIRSTY, 21, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::Thirsty);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_ARE_THIRSTY, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[2])
|
||||
--warning_throttle[2];
|
||||
else if (toilet_counter >= PEEP_TOILET_WARNING_THRESHOLD && toilet_counter >= gNumGuestsInPark / 16)
|
||||
if (warningThrottle[2])
|
||||
--warningThrottle[2];
|
||||
else if (toiletCounter >= PEEP_TOILET_WARNING_THRESHOLD && toiletCounter >= gNumGuestsInPark / 16)
|
||||
{
|
||||
warning_throttle[2] = 4;
|
||||
warningThrottle[2] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_CANT_FIND_TOILET, 22, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::Toilet);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_CANT_FIND_TOILET, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[3])
|
||||
--warning_throttle[3];
|
||||
else if (litter_counter >= PEEP_LITTER_WARNING_THRESHOLD && litter_counter >= gNumGuestsInPark / 32)
|
||||
if (warningThrottle[3])
|
||||
--warningThrottle[3];
|
||||
else if (litterCounter >= PEEP_LITTER_WARNING_THRESHOLD && litterCounter >= gNumGuestsInPark / 32)
|
||||
{
|
||||
warning_throttle[3] = 4;
|
||||
warningThrottle[3] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISLIKE_LITTER, 26, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::BadLitter);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISLIKE_LITTER, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[4])
|
||||
--warning_throttle[4];
|
||||
else if (disgust_counter >= PEEP_DISGUST_WARNING_THRESHOLD && disgust_counter >= gNumGuestsInPark / 32)
|
||||
if (warningThrottle[4])
|
||||
--warningThrottle[4];
|
||||
else if (disgustCounter >= PEEP_DISGUST_WARNING_THRESHOLD && disgustCounter >= gNumGuestsInPark / 32)
|
||||
{
|
||||
warning_throttle[4] = 4;
|
||||
warningThrottle[4] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISGUSTED_BY_PATHS, 31, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::PathDisgusting);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISGUSTED_BY_PATHS, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[5])
|
||||
--warning_throttle[5];
|
||||
else if (vandalism_counter >= PEEP_VANDALISM_WARNING_THRESHOLD && vandalism_counter >= gNumGuestsInPark / 32)
|
||||
if (warningThrottle[5])
|
||||
--warningThrottle[5];
|
||||
else if (vandalismCounter >= PEEP_VANDALISM_WARNING_THRESHOLD && vandalismCounter >= gNumGuestsInPark / 32)
|
||||
{
|
||||
warning_throttle[5] = 4;
|
||||
warningThrottle[5] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISLIKE_VANDALISM, 33, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::Vandalism);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_DISLIKE_VANDALISM, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warning_throttle[6])
|
||||
--warning_throttle[6];
|
||||
else if (noexit_counter >= PEEP_NOEXIT_WARNING_THRESHOLD)
|
||||
if (warningThrottle[6])
|
||||
--warningThrottle[6];
|
||||
else if (noexitCounter >= PEEP_NOEXIT_WARNING_THRESHOLD)
|
||||
{
|
||||
warning_throttle[6] = 4;
|
||||
warningThrottle[6] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_GETTING_LOST_OR_STUCK, 27, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::CantFindExit);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_GETTING_LOST_OR_STUCK, thoughtId, {});
|
||||
}
|
||||
}
|
||||
else if (lost_counter >= PEEP_LOST_WARNING_THRESHOLD)
|
||||
else if (lostCounter >= PEEP_LOST_WARNING_THRESHOLD)
|
||||
{
|
||||
warning_throttle[6] = 4;
|
||||
warningThrottle[6] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_GETTING_LOST_OR_STUCK, 16, {});
|
||||
constexpr auto thoughtId = static_cast<uint32_t>(PeepThoughtType::Lost);
|
||||
News::AddItemToQueue(News::ItemType::Peeps, STR_PEEPS_GETTING_LOST_OR_STUCK, thoughtId, {});
|
||||
}
|
||||
}
|
||||
|
||||
if (warningThrottle[7])
|
||||
--warningThrottle[7];
|
||||
else if (tooLongQueueCounter > PEEP_TOO_LONG_QUEUE_THRESHOLD && tooLongQueueCounter > inQueueCounter / 20)
|
||||
{ // The amount of guests complaining about queue duration is at least 5% of the amount of queuing guests.
|
||||
// This includes guests who are no longer queuing.
|
||||
warningThrottle[7] = 4;
|
||||
if (gConfigNotifications.guest_warnings)
|
||||
{
|
||||
auto rideWithMostQueueComplaints = std::max_element(
|
||||
queueComplainingGuestsMap.begin(), queueComplainingGuestsMap.end(),
|
||||
[](auto& lhs, auto& rhs) { return lhs.second < rhs.second; });
|
||||
auto rideId = rideWithMostQueueComplaints->first.ToUnderlying();
|
||||
News::AddItemToQueue(News::ItemType::Ride, STR_PEEPS_COMPLAINING_ABOUT_QUEUE_LENGTH_WARNING, rideId, {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3946,8 +3946,7 @@ enum : uint16_t
|
|||
STR_SHORTCUT_SEE_THROUGH_GUESTS_TOGGLE = 6486,
|
||||
STR_SHORTCUT_SEE_THROUGH_STAFF_TOGGLE = 6487,
|
||||
|
||||
STR_CHEAT_NO_CAP_ON_QUEUE_LENGTH = 6488,
|
||||
STR_CHEAT_NO_CAP_ON_QUEUE_LENGTH_TOOLTIP = 6489,
|
||||
STR_PEEPS_COMPLAINING_ABOUT_QUEUE_LENGTH_WARNING = 6488,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
/* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings
|
||||
|
|
|
@ -879,8 +879,6 @@ enum
|
|||
constexpr uint32_t CONSTRUCTION_LIFT_HILL_SELECTED = 1 << 0;
|
||||
constexpr uint32_t CONSTRUCTION_INVERTED_TRACK_SELECTED = 1 << 1;
|
||||
|
||||
constexpr uint16_t MAX_RIDE_QUEUE_LENGTH = 1000;
|
||||
|
||||
Ride* get_ride(RideId index);
|
||||
|
||||
struct RideManager
|
||||
|
|
Loading…
Reference in New Issue