mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-28 01:04:50 +01:00
Fix #15566: Litter age underflow
This commit is contained in:
@@ -126,3 +126,8 @@ rct_string_id Litter::GetName() const
|
||||
return STR_NONE;
|
||||
return litterNames[EnumValue(SubType)];
|
||||
}
|
||||
|
||||
uint32_t Litter::GetAge() const
|
||||
{
|
||||
return gCurrentTicks - creationTick;
|
||||
}
|
||||
|
||||
@@ -40,4 +40,5 @@ struct Litter : EntityBase
|
||||
static void RemoveAt(const CoordsXYZ& litterPos);
|
||||
void Serialise(DataSerialiser& stream);
|
||||
rct_string_id GetName() const;
|
||||
uint32_t GetAge() const;
|
||||
};
|
||||
|
||||
@@ -464,13 +464,15 @@ int32_t Park::CalculateParkRating() const
|
||||
// Litter
|
||||
{
|
||||
int32_t litterCount = 0;
|
||||
for (auto litter : EntityList<Litter>())
|
||||
for (auto* litter : EntityList<Litter>())
|
||||
{
|
||||
// Ignore recently dropped litter
|
||||
if (litter->creationTick - gCurrentTicks >= 7680)
|
||||
if (litter->GetAge() < 7680)
|
||||
{
|
||||
litterCount++;
|
||||
// Ignore recently dropped litter.
|
||||
continue;
|
||||
}
|
||||
|
||||
litterCount++;
|
||||
}
|
||||
result -= 600 - (4 * (150 - std::min<int32_t>(150, litterCount)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user