diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 12acd3b85f..a62ae71e1d 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1241,6 +1241,12 @@ void VehicleEnteredDepotThisTick(Vehicle *v) v->vehstatus |= VS_STOPPED; } +template +void CallVehicleOnNewDay(Vehicle *v) +{ + T::From(v)->T::OnNewDay(); +} + /** * Increases the day counter for all vehicles and calls 1-day and 32-day handlers. * Each tick, it processes vehicles with "index % DAY_TICKS == _date_fract", @@ -1274,7 +1280,22 @@ static void RunVehicleDayProc() } /* This is called once per day for each vehicle, but not in the first tick of the day */ - v->OnNewDay(); + switch (v->type) { + case VEH_TRAIN: + CallVehicleOnNewDay(v); + break; + case VEH_ROAD: + CallVehicleOnNewDay(v); + break; + case VEH_SHIP: + CallVehicleOnNewDay(v); + break; + case VEH_AIRCRAFT: + CallVehicleOnNewDay(v); + break; + default: + break; + } } }