diff --git a/roadveh.h b/roadveh.h new file mode 100644 index 0000000000..9d5800e6da --- /dev/null +++ b/roadveh.h @@ -0,0 +1,15 @@ +/* $Id$ */ + +#include "vehicle.h" + + +static inline bool IsRoadVehInDepot(const Vehicle* v) +{ + assert(v->type == VEH_Road); + return v->u.road.state == 254; +} + +static inline bool IsRoadVehInDepotStopped(const Vehicle* v) +{ + return IsRoadVehInDepot(v) && v->vehstatus & VS_STOPPED; +} diff --git a/roadveh_cmd.c b/roadveh_cmd.c index f8d0416955..e466660664 100644 --- a/roadveh_cmd.c +++ b/roadveh_cmd.c @@ -6,6 +6,7 @@ #include "debug.h" #include "functions.h" #include "road_map.h" +#include "roadveh.h" #include "station_map.h" #include "table/strings.h" #include "map.h" @@ -216,7 +217,7 @@ int32 CmdStartStopRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (v->type != VEH_Road || !CheckOwnership(v->owner)) return CMD_ERROR; if (flags & DC_EXEC) { - if (v->vehstatus & VS_STOPPED && v->u.road.state == 254) { + if (IsRoadVehInDepotStopped(v)) { DeleteVehicleNews(p1, STR_9016_ROAD_VEHICLE_IS_WAITING); } @@ -259,7 +260,7 @@ int32 CmdSellRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES); - if (v->u.road.state != 254 || !(v->vehstatus & VS_STOPPED)) { + if (!IsRoadVehInDepotStopped(v)) { return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE); } @@ -409,7 +410,7 @@ int32 CmdTurnRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) v->breakdown_ctr != 0 || v->u.road.overtaking != 0 || v->u.road.state == 255 || - v->u.road.state == 254 || + IsRoadVehInDepot(v) || v->cur_speed < 5) { return CMD_ERROR; } @@ -742,7 +743,7 @@ static void* EnumCheckRoadVehClose(Vehicle *v, void* data) return rvf->veh != v && v->type == VEH_Road && - v->u.road.state != 254 && + !IsRoadVehInDepot(v) && myabs(v->z_pos - rvf->veh->z_pos) < 6 && v->direction == rvf->dir && (dist_x[v->direction] >= 0 || (x_diff > dist_x[v->direction] && x_diff <= 0)) && @@ -1226,7 +1227,7 @@ static void RoadVehController(Vehicle *v) if (v->current_order.type == OT_LOADING) return; - if (v->u.road.state == 254) { + if (IsRoadVehInDepot(v)) { DiagDirection dir; const RoadDriveEntry* rdp; byte rd2; diff --git a/roadveh_gui.c b/roadveh_gui.c index 758463a777..cc4eb7f282 100644 --- a/roadveh_gui.c +++ b/roadveh_gui.c @@ -4,6 +4,7 @@ #include "openttd.h" #include "debug.h" #include "functions.h" +#include "roadveh.h" #include "table/sprites.h" #include "table/strings.h" #include "map.h" @@ -554,7 +555,7 @@ static void DrawRoadDepotWindow(Window *w) /* determine amount of items for scroller */ num = 0; FOR_ALL_VEHICLES(v) { - if (v->type == VEH_Road && v->u.road.state == 254 && v->tile == tile) + if (v->type == VEH_Road && IsRoadVehInDepot(v) && v->tile == tile) num++; } SetVScrollCount(w, (num + w->hscroll.cap - 1) / w->hscroll.cap); @@ -571,7 +572,7 @@ static void DrawRoadDepotWindow(Window *w) num = w->vscroll.pos * w->hscroll.cap; FOR_ALL_VEHICLES(v) { - if (v->type == VEH_Road && v->u.road.state == 254 && v->tile == tile && + if (v->type == VEH_Road && IsRoadVehInDepot(v) && v->tile == tile && --num < 0 && num >= -w->vscroll.cap * w->hscroll.cap) { DrawRoadVehImage(v, x+24, y, WP(w,traindepot_d).sel); @@ -608,7 +609,7 @@ static int GetVehicleFromRoadDepotWndPt(const Window *w, int x, int y, Vehicle * tile = w->window_number; FOR_ALL_VEHICLES(v) { - if (v->type == VEH_Road && v->u.road.state == 254 && v->tile == tile && + if (v->type == VEH_Road && IsRoadVehInDepot(v) && v->tile == tile && --pos < 0) { *veh = v; if (xm >= 24) return 0; @@ -917,7 +918,7 @@ static void PlayerRoadVehWndProc(Window *w, WindowEvent *e) DrawVehicleProfitButton(v, x, y + 13); SetDParam(0, v->unitnumber); - if (IsTileDepotType(v->tile, TRANSPORT_ROAD) && (v->vehstatus & VS_HIDDEN)) + if (IsRoadVehInDepot(v)) str = STR_021F; else str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2; diff --git a/vehicle.c b/vehicle.c index 40bc6ac416..f6a89bc3d7 100644 --- a/vehicle.c +++ b/vehicle.c @@ -3,6 +3,7 @@ #include "stdafx.h" #include "openttd.h" #include "road_map.h" +#include "roadveh.h" #include "spritecache.h" #include "table/sprites.h" #include "table/strings.h" @@ -1996,7 +1997,7 @@ Trackdir GetVehicleTrackdir(const Vehicle* v) return TrackDirectionToTrackdir(FIND_FIRST_BIT(v->u.ship.state),v->direction); case VEH_Road: - if (v->u.road.state == 254) /* We'll assume the road vehicle is facing outwards */ + if (IsRoadVehInDepot(v)) /* We'll assume the road vehicle is facing outwards */ return DiagdirToDiagTrackdir(GetRoadDepotDirection(v->tile)); if (IsRoadStopTile(v->tile)) /* We'll assume the road vehicle is facing outwards */