changeset 11879:0552f4ad7c9e draft

(svn r16277) -Codechange: enumerize values and remove unneeded values used for testing town rating
author smatz <smatz@openttd.org>
date Mon, 11 May 2009 11:55:41 +0000
parents ab145fbdb288
children fad7bd4d9a80
files src/town.h src/town_cmd.cpp src/town_type.h
diffstat 3 files changed, 32 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/town.h
+++ b/src/town.h
@@ -258,11 +258,10 @@
 void ExpandTown(Town *t);
 Town *CreateRandomTown(uint attempts, TownSize size, bool city, TownLayout layout);
 
-enum {
+enum TownRatingCheckType {
 	ROAD_REMOVE         = 0,
-	UNMOVEABLE_REMOVE   = 1,
 	TUNNELBRIDGE_REMOVE = 1,
-	INDUSTRY_REMOVE     = 2
+	TOWN_RATING_CHECK_TYPE_COUNT,
 };
 
 /** This is the number of ticks between towns being processed for building new
@@ -286,7 +285,7 @@
 	TOWN_HAS_STADIUM    = 2    ///< There can be only one stadium by town.
 };
 
-bool CheckforTownRating(DoCommandFlag flags, Town *t, byte type);
+bool CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type);
 
 static inline HouseSpec *GetHouseSpecs(HouseID house_id)
 {
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -2810,27 +2810,29 @@
 	}
 }
 
-/* penalty for removing town-owned stuff */
-static const int _default_rating_settings [3][3] = {
-	/* ROAD_REMOVE, TUNNELBRIDGE_REMOVE, INDUSTRY_REMOVE */
-	{  0, 128, 384}, // Permissive
-	{ 48, 192, 480}, // Neutral
-	{ 96, 384, 768}, // Hostile
-};
-
-bool CheckforTownRating(DoCommandFlag flags, Town *t, byte type)
+bool CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type)
 {
 	/* if magic_bulldozer cheat is active, town doesn't restrict your destructive actions */
-	if (t == NULL || !IsValidCompanyID(_current_company) || _cheats.magic_bulldozer.value)
+	if (t == NULL || !IsValidCompanyID(_current_company) ||
+			_cheats.magic_bulldozer.value || (flags & DC_NO_TEST_TOWN_RATING)) {
 		return true;
-
-	/* check if you're allowed to remove the street/bridge/tunnel/industry
+	}
+
+	/* minimum rating needed to be allowed to remove stuff */
+	static const int needed_rating[][TOWN_RATING_CHECK_TYPE_COUNT] = {
+		/*                  ROAD_REMOVE,                    TUNNELBRIDGE_REMOVE */
+		{ RATING_ROAD_NEEDED_PERMISSIVE, RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE}, // Permissive
+		{    RATING_ROAD_NEEDED_NEUTRAL,    RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL}, // Neutral
+		{    RATING_ROAD_NEEDED_HOSTILE,    RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE}, // Hostile
+	};
+
+	/* check if you're allowed to remove the road/bridge/tunnel
 	 * owned by a town no removal if rating is lower than ... depends now on
 	 * difficulty setting. Minimum town rating selected by difficulty level
 	 */
-	int modemod = _default_rating_settings[_settings_game.difficulty.town_council_tolerance][type];
-
-	if (GetRating(t) < 16 + modemod && !(flags & DC_NO_TEST_TOWN_RATING)) {
+	int needed = needed_rating[_settings_game.difficulty.town_council_tolerance][type];
+
+	if (GetRating(t) < needed) {
 		SetDParam(0, t->index);
 		_error_message = STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS;
 		return false;
--- a/src/town_type.h
+++ b/src/town_type.h
@@ -50,12 +50,19 @@
 	RATING_STATION_UP_STEP   =  12, ///< when a town grows, company gains reputation for all well serviced stations ...
 	RATING_STATION_DOWN_STEP = -15, ///< ... but loses for bad serviced stations
 
-	RATING_TUNNEL_BRIDGE_DOWN_STEP = -250,
-	RATING_TUNNEL_BRIDGE_MINIMUM   = 0,
+	RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, ///< penalty for removing town owned tunnel or bridge
+	RATING_TUNNEL_BRIDGE_MINIMUM   =    0, ///< minimum rating after removing tunnel or bridge
+	RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE = 144, ///< rating needed, "Permissive" difficulty settings
+	RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL    = 208, ///< "Neutral"
+	RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE    = 400, ///< "Hostile"
 
-	RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle
-	RATING_ROAD_DOWN_STEP_EDGE  = -18, ///< removing a roadpiece at the edge
-	RATING_ROAD_MINIMUM   = -100,
+	RATING_ROAD_DOWN_STEP_INNER =  -50, ///< removing a roadpiece in the middle
+	RATING_ROAD_DOWN_STEP_EDGE  =  -18, ///< removing a roadpiece at the edge
+	RATING_ROAD_MINIMUM         = -100, ///< minimum rating after removing town owned road
+	RATING_ROAD_NEEDED_PERMISSIVE =  16, ///< rating needed, "Permissive" difficulty settings
+	RATING_ROAD_NEEDED_NEUTRAL    =  64, ///< "Neutral"
+	RATING_ROAD_NEEDED_HOSTILE    = 112, ///< "Hostile"
+
 	RATING_HOUSE_MINIMUM  = RATING_MINIMUM,
 
 	RATING_BRIBE_UP_STEP = 200,