diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -21,6 +21,7 @@ #include "settings_type.h" #include "core/pool_func.hpp" #include "aircraft.h" +#include "roadveh.h" #include "table/strings.h" @@ -734,7 +735,7 @@ CommandCost CmdSkipToOrder(TileIndex til if (flags & DC_EXEC) { v->cur_order_index = sel_ord; - if (v->type == VEH_ROAD) ClearSlot((RoadVehicle *)v); + if (v->type == VEH_ROAD) ClearSlot(RoadVehicle::From(v)); if (v->current_order.IsType(OT_LOADING)) v->LeaveStation(); @@ -1360,7 +1361,7 @@ static TileIndex GetStationTileForVehicl case VEH_TRAIN: return st->train_tile; case VEH_AIRCRAFT: return st->airport_tile; case VEH_SHIP: return st->dock_tile; - case VEH_ROAD: return st->GetPrimaryRoadStop((RoadVehicle *)v)->xy; + case VEH_ROAD: return st->GetPrimaryRoadStop(RoadVehicle::From(v))->xy; } } @@ -1615,7 +1616,7 @@ bool UpdateOrderDest(Vehicle *v, const O if (v->type == VEH_TRAIN && reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); if (v->type == VEH_AIRCRAFT) { - Aircraft *a = (Aircraft *)v; + Aircraft *a = Aircraft::From(v); if (a->state == FLYING && a->targetairport != destination) { /* The aircraft is now heading for a different hangar than the next in the orders */ extern void AircraftNextAirportPos_and_Order(Aircraft *a); @@ -1734,13 +1735,13 @@ bool ProcessOrders(Vehicle *v) if (v->type == VEH_AIRCRAFT) { /* Aircraft do something vastly different here, so handle separately */ extern void HandleMissingAircraftOrders(Aircraft *v); - HandleMissingAircraftOrders((Aircraft *)v); + HandleMissingAircraftOrders(Aircraft::From(v)); return false; } v->current_order.Free(); v->dest_tile = 0; - if (v->type == VEH_ROAD) ClearSlot((RoadVehicle *)v); + if (v->type == VEH_ROAD) ClearSlot(RoadVehicle::From(v)); return false; }