summaryrefslogtreecommitdiff
path: root/src/order_cmd.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-06-06 16:54:22 +0000
committersmatz <smatz@openttd.org>2009-06-06 16:54:22 +0000
commit0c10006907b7d149f91d277a0c28a79b40eaa4c0 (patch)
treedc8cb6a7a9315a10688af00187db94be8911acef /src/order_cmd.cpp
parentc90819ff6d8d49ac25aa9194bdf04e8dfd7149ea (diff)
downloadopenttd-0c10006907b7d149f91d277a0c28a79b40eaa4c0.tar.xz
(svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check
Diffstat (limited to 'src/order_cmd.cpp')
-rw-r--r--src/order_cmd.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp
index 37e993d41..48e2f6fd5 100644
--- 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 tile, DoCommandFlag flags, uint32 p1, uint3
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 GetStationTileForVehicle(const Vehicle *v, const Station *st)
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 Order *order, int conditional_depth)
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;
}