mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r20645) -Codechange [FS#4086]: unify the code for checking for breakdown handling as well (Hirundo)
This commit is contained in:
parent
702cc96943
commit
2fb18e975c
|
@ -1775,14 +1775,7 @@ static bool AircraftEventHandler(Aircraft *v, int loop)
|
||||||
|
|
||||||
if (v->vehstatus & VS_STOPPED) return true;
|
if (v->vehstatus & VS_STOPPED) return true;
|
||||||
|
|
||||||
/* aircraft is broken down? */
|
v->HandleBreakdown();
|
||||||
if (v->breakdown_ctr != 0) {
|
|
||||||
if (v->breakdown_ctr <= 2) {
|
|
||||||
v->HandleBreakdown();
|
|
||||||
} else {
|
|
||||||
if (!v->current_order.IsType(OT_LOADING)) v->breakdown_ctr--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HandleAircraftSmoke(v);
|
HandleAircraftSmoke(v);
|
||||||
ProcessOrders(v);
|
ProcessOrders(v);
|
||||||
|
|
|
@ -1485,14 +1485,7 @@ static bool RoadVehController(RoadVehicle *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* road vehicle has broken down? */
|
/* road vehicle has broken down? */
|
||||||
if (v->breakdown_ctr != 0) {
|
if (v->HandleBreakdown()) return true;
|
||||||
if (v->breakdown_ctr <= 2) {
|
|
||||||
v->HandleBreakdown();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!v->current_order.IsType(OT_LOADING)) v->breakdown_ctr--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v->vehstatus & VS_STOPPED) return true;
|
if (v->vehstatus & VS_STOPPED) return true;
|
||||||
|
|
||||||
ProcessOrders(v);
|
ProcessOrders(v);
|
||||||
|
|
|
@ -424,13 +424,7 @@ static void ShipController(Ship *v)
|
||||||
v->tick_counter++;
|
v->tick_counter++;
|
||||||
v->current_order_time++;
|
v->current_order_time++;
|
||||||
|
|
||||||
if (v->breakdown_ctr != 0) {
|
if (v->HandleBreakdown()) return;
|
||||||
if (v->breakdown_ctr <= 2) {
|
|
||||||
v->HandleBreakdown();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!v->current_order.IsType(OT_LOADING)) v->breakdown_ctr--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v->vehstatus & VS_STOPPED) return;
|
if (v->vehstatus & VS_STOPPED) return;
|
||||||
|
|
||||||
|
|
|
@ -3716,13 +3716,7 @@ static bool TrainLocoHandler(Train *v, bool mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* train is broken down? */
|
/* train is broken down? */
|
||||||
if (v->breakdown_ctr != 0) {
|
if (v->HandleBreakdown()) return true;
|
||||||
if (v->breakdown_ctr <= 2) {
|
|
||||||
v->HandleBreakdown();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!v->current_order.IsType(OT_LOADING)) v->breakdown_ctr--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HasBit(v->flags, VRF_REVERSING) && v->cur_speed == 0) {
|
if (HasBit(v->flags, VRF_REVERSING) && v->cur_speed == 0) {
|
||||||
ReverseTrainDirection(v);
|
ReverseTrainDirection(v);
|
||||||
|
|
|
@ -986,13 +986,18 @@ void CheckVehicleBreakdown(Vehicle *v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vehicle::HandleBreakdown()
|
bool Vehicle::HandleBreakdown()
|
||||||
{
|
{
|
||||||
/* Possible states for Vehicle::breakdown_ctr
|
/* Possible states for Vehicle::breakdown_ctr
|
||||||
* 0 - vehicle is running normally
|
* 0 - vehicle is running normally
|
||||||
* 1 - vehicle is currently broken down
|
* 1 - vehicle is currently broken down
|
||||||
* 2 - vehicle is going to break down now
|
* 2 - vehicle is going to break down now
|
||||||
* >2 - vehicle is counting down to the actual breakdown event */
|
* >2 - vehicle is counting down to the actual breakdown event */
|
||||||
|
if (this->breakdown_ctr == 0) return false;
|
||||||
|
if (this->breakdown_ctr > 2) {
|
||||||
|
if (!this->current_order.IsType(OT_LOADING)) this->breakdown_ctr--;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (this->breakdown_ctr != 1) {
|
if (this->breakdown_ctr != 1) {
|
||||||
this->breakdown_ctr = 1;
|
this->breakdown_ctr = 1;
|
||||||
|
|
||||||
|
@ -1024,7 +1029,7 @@ void Vehicle::HandleBreakdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Aircraft breakdowns end only when arriving at the airport */
|
/* Aircraft breakdowns end only when arriving at the airport */
|
||||||
if (this->type == VEH_AIRCRAFT) return;
|
if (this->type == VEH_AIRCRAFT) return false;
|
||||||
|
|
||||||
/* For trains this function is called twice per tick, so decrease v->breakdown_delay at half the rate */
|
/* For trains this function is called twice per tick, so decrease v->breakdown_delay at half the rate */
|
||||||
if ((this->tick_counter & (this->type == VEH_TRAIN ? 3 : 1)) == 0) {
|
if ((this->tick_counter & (this->type == VEH_TRAIN ? 3 : 1)) == 0) {
|
||||||
|
@ -1034,6 +1039,7 @@ void Vehicle::HandleBreakdown()
|
||||||
SetWindowDirty(WC_VEHICLE_VIEW, this->index);
|
SetWindowDirty(WC_VEHICLE_VIEW, this->index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AgeVehicle(Vehicle *v)
|
void AgeVehicle(Vehicle *v)
|
||||||
|
|
|
@ -523,11 +523,14 @@ public:
|
||||||
this->service_interval = src->service_interval;
|
this->service_interval = src->service_interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle all of the aspects of a vehicle breakdown.
|
* Handle all of the aspects of a vehicle breakdown
|
||||||
* This includes adding smoke and sounds, and ending the breakdown when appropriate.
|
* This includes adding smoke and sounds, and ending the breakdown when appropriate.
|
||||||
|
* @return true iff the vehicle is stopped because of a breakdown
|
||||||
|
* @note This function always returns false for aircraft, since these never stop for breakdowns
|
||||||
*/
|
*/
|
||||||
void HandleBreakdown();
|
bool HandleBreakdown();
|
||||||
|
|
||||||
bool NeedsAutorenewing(const Company *c) const;
|
bool NeedsAutorenewing(const Company *c) const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue