From 03910ce7e9010d7457e1088f22d78267554bd0cc Mon Sep 17 00:00:00 2001 From: tron Date: Sat, 11 Dec 2004 10:17:10 +0000 Subject: [PATCH] (svn r1015) MFM r789 Replaced the slightly misleading SERVICE_INTERVAL by a function VehicleNeedsService() --- aircraft_cmd.c | 4 ++-- roadveh_cmd.c | 4 ++-- ship_cmd.c | 4 ++-- train_cmd.c | 4 ++-- vehicle.c | 7 +++++++ vehicle.h | 3 ++- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/aircraft_cmd.c b/aircraft_cmd.c index 74a8232510..a851343fe0 100644 --- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -461,7 +461,7 @@ static void CheckIfAircraftNeedsService(Vehicle *v) if (_patches.servint_aircraft == 0) return; - if (SERVICE_INTERVAL) + if (!VehicleNeedsService(v)) return; if (v->vehstatus & VS_STOPPED) @@ -997,7 +997,7 @@ static void ProcessAircraftOrder(Vehicle *v) if (v->current_order.type == OT_GOTO_DEPOT && (v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) && - SERVICE_INTERVAL) { + !VehicleNeedsService(v)) { v->cur_order_index++; } diff --git a/roadveh_cmd.c b/roadveh_cmd.c index 7df7b7f44c..a366047131 100644 --- a/roadveh_cmd.c +++ b/roadveh_cmd.c @@ -569,7 +569,7 @@ static void ProcessRoadVehOrder(Vehicle *v) if (v->current_order.type == OT_GOTO_DEPOT && (v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) && - SERVICE_INTERVAL ) { + !VehicleNeedsService(v)) { v->cur_order_index++; } @@ -1433,7 +1433,7 @@ static void CheckIfRoadVehNeedsService(Vehicle *v) if (_patches.servint_roadveh == 0) return; - if (SERVICE_INTERVAL) + if (!VehicleNeedsService(v)) return; if (v->vehstatus & VS_STOPPED) diff --git a/ship_cmd.c b/ship_cmd.c index 2c91fda3c2..8f2dfb89ac 100644 --- a/ship_cmd.c +++ b/ship_cmd.c @@ -89,7 +89,7 @@ static void CheckIfShipNeedsService(Vehicle *v) if (_patches.servint_ships == 0) return; - if (SERVICE_INTERVAL) + if (!VehicleNeedsService(v)) return; if (v->vehstatus & VS_STOPPED) @@ -214,7 +214,7 @@ static void ProcessShipOrder(Vehicle *v) if (v->current_order.type == OT_GOTO_DEPOT && (v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) && - SERVICE_INTERVAL) { + !VehicleNeedsService(v)) { v->cur_order_index++; } diff --git a/train_cmd.c b/train_cmd.c index 256ccb6d54..50df00a595 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -1589,7 +1589,7 @@ static bool ProcessTrainOrder(Vehicle *v) if (v->current_order.type == OT_GOTO_DEPOT && (v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) && - SERVICE_INTERVAL) { + !VehicleNeedsService(v)) { v->cur_order_index++; } @@ -2597,7 +2597,7 @@ static void CheckIfTrainNeedsService(Vehicle *v) if (_patches.servint_trains == 0) return; - if (SERVICE_INTERVAL) + if (!VehicleNeedsService(v)) return; if (v->vehstatus & VS_STOPPED) diff --git a/vehicle.c b/vehicle.c index 145d225613..55bb3a1866 100644 --- a/vehicle.c +++ b/vehicle.c @@ -22,6 +22,13 @@ void VehicleServiceInDepot(Vehicle *v) v->reliability = _engines[v->engine_type].reliability; } +bool VehicleNeedsService(const Vehicle *v) +{ + return _patches.servint_ispercent ? + (v->reliability < _engines[v->engine_type].reliability * (100 - v->service_interval) / 100) : + (v->date_of_last_service + v->service_interval < _date); +} + Order UnpackOldOrder(uint16 packed) { Order order; diff --git a/vehicle.h b/vehicle.h index 557536441c..fdc91c92ff 100644 --- a/vehicle.h +++ b/vehicle.h @@ -390,6 +390,8 @@ int CheckStoppedInDepot(Vehicle *v); int ScheduleHasDepotOrders(const Order *schedule); int CheckOrders(Vehicle *v); +bool VehicleNeedsService(const Vehicle *v); + typedef struct GetNewVehiclePosResult { int x,y; uint old_tile; @@ -449,7 +451,6 @@ VARDEF BackuppedOrders _backup_orders_data[1]; #define INVALID_VEHICLE 0xffff -#define SERVICE_INTERVAL (_patches.servint_ispercent ? (v->reliability > _engines[v->engine_type].reliability * (100 - v->service_interval) / 100) : (v->date_of_last_service + v->service_interval > _date)) #define MIN_SERVINT_PERCENT 5 #define MAX_SERVINT_PERCENT 90 #define MIN_SERVINT_DAYS 30