Fix e4fd99a, Fix #11270: Vehicle max age is not subject to leap years (#11372)

This commit is contained in:
Tyler Trahan
2023-10-15 18:34:03 -04:00
committed by GitHub
parent 356a5d5773
commit f49ffaaaea
3 changed files with 36 additions and 35 deletions

View File

@@ -438,7 +438,8 @@ uint Engine::GetDisplayMaxTractiveEffort() const
*/
TimerGameCalendar::Date Engine::GetLifeLengthInDays() const
{
return TimerGameCalendar::DateAtStartOfYear(this->info.lifelength + _settings_game.vehicle.extend_vehicle_life);
/* Assume leap years; this gives the player a bit more than the given amount of years, but never less. */
return static_cast<int32_t>(this->info.lifelength + _settings_game.vehicle.extend_vehicle_life) * CalendarTime::DAYS_IN_LEAP_YEAR;
}
/**
@@ -663,7 +664,7 @@ void SetYearEngineAgingStops()
/* Base year ending date on half the model life */
TimerGameCalendar::YearMonthDay ymd;
TimerGameCalendar::ConvertDateToYMD(ei->base_intro + static_cast<int32_t>(TimerGameCalendar::DateAtStartOfYear(ei->lifelength)) / 2, &ymd);
TimerGameCalendar::ConvertDateToYMD(ei->base_intro + (static_cast<int32_t>(ei->lifelength) * CalendarTime::DAYS_IN_LEAP_YEAR) / 2, &ymd);
_year_engine_aging_stops = std::max(_year_engine_aging_stops, ymd.year);
}