summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vehicle.cpp30
-rw-r--r--src/vehicle_base.h3
2 files changed, 33 insertions, 0 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp
index f4f38bd9c..38437c1b9 100644
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -2392,6 +2392,36 @@ const GroundVehicleCache *Vehicle::GetGroundVehicleCache() const
}
/**
+ * Access the ground vehicle flags of the vehicle.
+ * @pre The vehicle is a #GroundVehicle.
+ * @return #GroundVehicleFlags of the vehicle.
+ */
+uint16 &Vehicle::GetGroundVehicleFlags()
+{
+ assert(this->IsGroundVehicle());
+ if (this->type == VEH_TRAIN) {
+ return Train::From(this)->gv_flags;
+ } else {
+ return RoadVehicle::From(this)->gv_flags;
+ }
+}
+
+/**
+ * Access the ground vehicle flags of the vehicle.
+ * @pre The vehicle is a #GroundVehicle.
+ * @return #GroundVehicleFlags of the vehicle.
+ */
+const uint16 &Vehicle::GetGroundVehicleFlags() const
+{
+ assert(this->IsGroundVehicle());
+ if (this->type == VEH_TRAIN) {
+ return Train::From(this)->gv_flags;
+ } else {
+ return RoadVehicle::From(this)->gv_flags;
+ }
+}
+
+/**
* Calculates the set of vehicles that will be affected by a given selection.
* @param set [inout] Set of affected vehicles.
* @param v First vehicle of the selection.
diff --git a/src/vehicle_base.h b/src/vehicle_base.h
index baf99d398..a673bcfd1 100644
--- a/src/vehicle_base.h
+++ b/src/vehicle_base.h
@@ -249,6 +249,9 @@ public:
GroundVehicleCache *GetGroundVehicleCache();
const GroundVehicleCache *GetGroundVehicleCache() const;
+ uint16 &GetGroundVehicleFlags();
+ const uint16 &GetGroundVehicleFlags() const;
+
void DeleteUnreachedAutoOrders();
void HandleLoading(bool mode = false);