diff --git a/src/openrct2/world/Litter.cpp b/src/openrct2/world/Litter.cpp index c3348056a0..a5310d9f42 100644 --- a/src/openrct2/world/Litter.cpp +++ b/src/openrct2/world/Litter.cpp @@ -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; +} diff --git a/src/openrct2/world/Litter.h b/src/openrct2/world/Litter.h index 2aafcfeecf..52c8381f60 100644 --- a/src/openrct2/world/Litter.h +++ b/src/openrct2/world/Litter.h @@ -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; }; diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index c8ff39b4bd..709269153c 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -464,13 +464,15 @@ int32_t Park::CalculateParkRating() const // Litter { int32_t litterCount = 0; - for (auto litter : EntityList()) + for (auto* litter : EntityList()) { - // 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(150, litterCount))); }