summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/unmovable.h14
-rw-r--r--src/unmovable_cmd.cpp25
2 files changed, 25 insertions, 14 deletions
diff --git a/src/unmovable.h b/src/unmovable.h
index dae1c269b..2838d1879 100644
--- a/src/unmovable.h
+++ b/src/unmovable.h
@@ -34,6 +34,20 @@ struct UnmovableSpec {
* @return The cost for clearing.
*/
Money GetClearCost() const { return (_price[PR_CLEAR_UNMOVABLE] * this->clear_cost_multiplier); }
+
+ /**
+ * Get the specification associated with a specific UnmovableType.
+ * @param index The unmovable type to fetch.
+ * @return The specification.
+ */
+ static const UnmovableSpec *Get(int index);
+
+ /**
+ * Get the specification associated with a tile.
+ * @param tile The tile to fetch the data for.
+ * @return The specification.
+ */
+ static const UnmovableSpec *GetByTile(TileIndex tile);
};
diff --git a/src/unmovable_cmd.cpp b/src/unmovable_cmd.cpp
index 27fbc6381..ce9bfb161 100644
--- a/src/unmovable_cmd.cpp
+++ b/src/unmovable_cmd.cpp
@@ -35,18 +35,15 @@
#include "table/sprites.h"
#include "table/unmovable_land.h"
-/**
- * Accessor for array _original_unmovable.
- * This will ensure at once : proper access and
- * not allowing modifications of it.
- * @param type of unmovable (which is the index in _original_unmovable)
- * @pre type < UNMOVABLE_MAX
- * @return a pointer to the corresponding unmovable spec
- */
-static inline const UnmovableSpec *GetUnmovableSpec(UnmovableType type)
+/* static */ const UnmovableSpec *UnmovableSpec::Get(int index)
+{
+ assert(index < UNMOVABLE_MAX);
+ return &_original_unmovable[index];
+}
+
+/* static */ const UnmovableSpec *UnmovableSpec::GetByTile(TileIndex tile)
{
- assert(type < UNMOVABLE_MAX);
- return &_original_unmovable[type];
+ return UnmovableSpec::Get(GetUnmovableType(tile));
}
/**
@@ -162,7 +159,7 @@ CommandCost CmdPurchaseLandArea(TileIndex tile, DoCommandFlag flags, uint32 p1,
MarkTileDirtyByTile(tile);
}
- cost.AddCost(GetUnmovableSpec(UNMOVABLE_OWNED_LAND)->GetBuildCost());
+ cost.AddCost(UnmovableSpec::Get(UNMOVABLE_OWNED_LAND)->GetBuildCost());
return cost;
}
@@ -189,7 +186,7 @@ CommandCost CmdSellLandArea(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
if (flags & DC_EXEC) DoClearSquare(tile);
- return CommandCost(EXPENSES_CONSTRUCTION, -GetUnmovableSpec(UNMOVABLE_OWNED_LAND)->GetClearCost());
+ return CommandCost(EXPENSES_CONSTRUCTION, -UnmovableSpec::Get(UNMOVABLE_OWNED_LAND)->GetClearCost());
}
static Foundation GetFoundation_Unmovable(TileIndex tile, Slope tileh);
@@ -337,7 +334,7 @@ static void AddAcceptedCargo_Unmovable(TileIndex tile, CargoArray &acceptance, u
static void GetTileDesc_Unmovable(TileIndex tile, TileDesc *td)
{
- td->str = GetUnmovableSpec(GetUnmovableType(tile))->name;
+ td->str = UnmovableSpec::GetByTile(tile)->name;
td->owner[0] = GetTileOwner(tile);
}