diff --git a/src/town.h b/src/town.h index 89246f5aa3..2bf2b5234e 100644 --- a/src/town.h +++ b/src/town.h @@ -16,6 +16,7 @@ #include "settings_type.h" #include "strings_type.h" #include "viewport_type.h" +#include "economy_type.h" enum { HOUSE_NO_CLASS = 0, @@ -242,6 +243,13 @@ struct HouseSpec { /* grf file related properties*/ uint8 local_id; ///< id defined by the grf file for this house const struct GRFFile *grffile; ///< grf file that introduced this house + + /** + * Get the cost for removing this house + * @return the cost (inflation corrected etc) + */ + Money GetRemovalCost() const; + }; extern HouseSpec _house_specs[HOUSE_MAX]; diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 5314803ecc..97c1114618 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -127,6 +127,11 @@ void Town::InitializeLayout() } } +Money HouseSpec::GetRemovalCost() const +{ + return (_price.remove_house * this->removal_cost) >> 8; +} + // Local static int _grow_town_result; @@ -517,7 +522,7 @@ static CommandCost ClearTile_Town(TileIndex tile, byte flags) const HouseSpec *hs = GetHouseSpecs(GetHouseType(tile)); CommandCost cost(EXPENSES_CONSTRUCTION); - cost.AddCost(_price.remove_house * hs->removal_cost >> 8); + cost.AddCost(hs->GetRemovalCost()); int rating = hs->remove_rating_decrease; _cleared_town_rating += rating;