summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-08-17 11:12:56 +0000
committerrubidium <rubidium@openttd.org>2008-08-17 11:12:56 +0000
commit3663965f3e92bd853ffff3a71162ffede78bfd66 (patch)
treed99684835fc02996b9565f9d0514c28e88cfad70
parentb6b9cd9d51de7213f3d8d6fa73f341cfc28a1424 (diff)
downloadopenttd-3663965f3e92bd853ffff3a71162ffede78bfd66.tar.xz
(svn r14090) -Fix: the vehicle window of articulated road vehicles would show the clone/refit button when the vehicle was not completely stopped in the depot.
-rw-r--r--src/roadveh.h1
-rw-r--r--src/roadveh_cmd.cpp12
2 files changed, 7 insertions, 6 deletions
diff --git a/src/roadveh.h b/src/roadveh.h
index 984f0f249..305a76e9a 100644
--- a/src/roadveh.h
+++ b/src/roadveh.h
@@ -78,6 +78,7 @@ struct RoadVehicle : public Vehicle {
int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * GetPriceByIndex(RoadVehInfo(this->engine_type)->running_cost_class); }
bool IsInDepot() const { return this->u.road.state == RVSB_IN_DEPOT; }
+ bool IsStoppedInDepot() const;
void Tick();
void OnNewDay();
TileIndex GetOrderStationLocation(StationID station);
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 6c7954705..9b453baf8 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -305,14 +305,14 @@ void ClearSlot(Vehicle *v)
DEBUG(ms, 3, "Clearing slot at 0x%X", rs->xy);
}
-static bool CheckRoadVehInDepotStopped(const Vehicle *v)
+bool RoadVehicle::IsStoppedInDepot() const
{
- TileIndex tile = v->tile;
+ TileIndex tile = this->tile;
if (!IsRoadDepotTile(tile)) return false;
- if (IsRoadVehFront(v) && !(v->vehstatus & VS_STOPPED)) return false;
+ if (IsRoadVehFront(this) && !(this->vehstatus & VS_STOPPED)) return false;
- for (; v != NULL; v = v->Next()) {
+ for (const Vehicle *v = this; v != NULL; v = v->Next()) {
if (v->u.road.state != RVSB_IN_DEPOT || v->tile != tile) return false;
}
return true;
@@ -336,7 +336,7 @@ CommandCost CmdSellRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (HASBITS(v->vehstatus, VS_CRASHED)) return_cmd_error(STR_CAN_T_SELL_DESTROYED_VEHICLE);
- if (!CheckRoadVehInDepotStopped(v)) {
+ if (!v->IsStoppedInDepot()) {
return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
}
@@ -2008,7 +2008,7 @@ CommandCost CmdRefitRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
v = GetVehicle(p1);
if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
- if (!CheckRoadVehInDepotStopped(v)) return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
+ if (!v->IsStoppedInDepot()) return_cmd_error(STR_9013_MUST_BE_STOPPED_INSIDE);
if (v->vehstatus & VS_CRASHED) return_cmd_error(STR_CAN_T_REFIT_DESTROYED_VEHICLE);
if (new_cid >= NUM_CARGO) return CMD_ERROR;