From 1ff03f8ee9c7a21319a37c24cc6176f4cc8ad414 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 27 Nov 2021 15:17:41 +0000 Subject: [PATCH] De-virtualise calls to Vehicle::OnNewDay --- src/vehicle.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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; + } } }