From 02bf3ed5c07451ae860bf4a197fca00908eb4293 Mon Sep 17 00:00:00 2001 From: bjarni Date: Thu, 9 Dec 2004 21:46:56 +0000 Subject: (svn r998) now vehicles are serviced both when entering and when leaving depots to prevent that vehicles might need service when leaving after a long stay (ln--) --- aircraft_cmd.c | 5 ++--- roadveh_cmd.c | 7 ++++--- ship_cmd.c | 6 +++--- train_cmd.c | 6 +++--- vehicle.c | 6 ++++++ vehicle.h | 1 + 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/aircraft_cmd.c b/aircraft_cmd.c index 26ebc4211..992900366 100644 --- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -652,9 +652,7 @@ static void ServiceAircraft(Vehicle *v) SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos); InvalidateWindow(WC_VEHICLE_DEPOT, v->tile); - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = _engines[v->engine_type].reliability; + VehicleServiceInDepot(v); InvalidateWindow(WC_VEHICLE_DETAILS, v->index); } @@ -1234,6 +1232,7 @@ static void AircraftLeaveHangar(Vehicle *v) } } + VehicleServiceInDepot(v); SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos); InvalidateWindow(WC_VEHICLE_DEPOT, v->tile); } diff --git a/roadveh_cmd.c b/roadveh_cmd.c index 6b39a5a11..f9acd3c44 100644 --- a/roadveh_cmd.c +++ b/roadveh_cmd.c @@ -1119,6 +1119,8 @@ static void RoadVehEventHandler(Vehicle *v) if (RoadVehFindCloseTo(v,x,y,v->direction)) return; + VehicleServiceInDepot(v); + StartRoadVehSound(v); BeginVehicleMove(v); @@ -1377,13 +1379,12 @@ void RoadVehEnterDepot(Vehicle *v) v->u.road.state = 254; v->vehstatus |= VS_HIDDEN; - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = _engines[v->engine_type].reliability; InvalidateWindow(WC_VEHICLE_DETAILS, v->index); MaybeRenewVehicle(v, EstimateRoadVehCost(v->engine_type)); + VehicleServiceInDepot(v); + TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT); if (v->current_order.type == OT_GOTO_DEPOT) { diff --git a/ship_cmd.c b/ship_cmd.c index 7894eed6b..578fce38a 100644 --- a/ship_cmd.c +++ b/ship_cmd.c @@ -352,6 +352,7 @@ static void CheckShipLeaveDepot(Vehicle *v) RecalcShipStuff(v); PlayShipSound(v); + VehicleServiceInDepot(v); } static bool ShipAccelerate(Vehicle *v) @@ -394,9 +395,8 @@ static void ShipEnterDepot(Vehicle *v) v->cur_speed = 0; RecalcShipStuff(v); - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = _engines[v->engine_type].reliability; + VehicleServiceInDepot(v); + InvalidateWindow(WC_VEHICLE_DETAILS, v->index); MaybeRenewVehicle(v, EstimateShipCost(v->engine_type)); diff --git a/train_cmd.c b/train_cmd.c index 249cd1ab4..1b79001fc 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -1288,6 +1288,7 @@ static bool CheckTrainStayInDepot(Vehicle *v) return true; } + VehicleServiceInDepot(v); TrainPlayLeaveStationSound(v); v->u.rail.track = 1; @@ -2554,9 +2555,8 @@ void TrainEnterDepot(Vehicle *v, uint tile) if (v->subtype != 0) v = GetFirstVehicleInChain(v); - v->date_of_last_service = _date; - v->breakdowns_since_last_service = 0; - v->reliability = _engines[v->engine_type].reliability; + VehicleServiceInDepot(v); + InvalidateWindow(WC_VEHICLE_DETAILS, v->index); v->load_unload_time_rem = 0; diff --git a/vehicle.c b/vehicle.c index ceb164407..6f923778c 100644 --- a/vehicle.c +++ b/vehicle.c @@ -15,6 +15,12 @@ #define INVALID_COORD (-0x8000) #define GEN_HASH(x,y) (((x & 0x1F80)>>7) + ((y & 0xFC0))) +void VehicleServiceInDepot(Vehicle *v) +{ + v->date_of_last_service = _date; + v->breakdowns_since_last_service = 0; + v->reliability = _engines[v->engine_type].reliability; +} Order UnpackOldOrder(uint16 packed) { diff --git a/vehicle.h b/vehicle.h index b1d474d6b..557536441 100644 --- a/vehicle.h +++ b/vehicle.h @@ -300,6 +300,7 @@ typedef struct { char name[32]; } BackuppedOrders; +void VehicleServiceInDepot(Vehicle *v); void BackupVehicleOrders(Vehicle *v, BackuppedOrders *order); void RestoreVehicleOrders(Vehicle *v, BackuppedOrders *order); Vehicle *AllocateVehicle(); -- cgit v1.2.3-54-g00ecf