changeset 11955:734fb1a3d241 draft

(svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
author smatz <smatz@openttd.org>
date Tue, 19 May 2009 19:26:03 +0000
parents 92364e306ac7
children 6ec97548e188
files src/misc_gui.cpp
diffstat 1 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -104,14 +104,8 @@
 	}
 
 	LandInfoWindow(TileIndex tile) : Window(&_land_info_desc) {
-		Company *c = Company::Get(Company::IsValidID(_local_company) ? _local_company : COMPANY_FIRST);
 		Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 
-		Money old_money = c->money;
-		c->money = INT64_MAX;
-		CommandCost costclear = DoCommand(tile, 0, 0, DC_NONE, CMD_LANDSCAPE_CLEAR);
-		c->money = old_money;
-
 		/* Because build_date is not set yet in every TileDesc, we make sure it is empty */
 		TileDesc td;
 		AcceptedCargo ac;
@@ -158,15 +152,22 @@
 
 		/* Cost to clear/revenue when cleared */
 		StringID str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A;
-		if (CmdSucceeded(costclear)) {
-			Money cost = costclear.GetCost();
-			if (cost < 0) {
-				cost = -cost; // Negate negative cost to a positive revenue
-				str = STR_REVENUE_WHEN_CLEARED;
-			} else {
-				str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR;
+		Company *c = Company::GetIfValid(_local_company);
+		if (c != NULL) {
+			Money old_money = c->money;
+			c->money = INT64_MAX;
+			CommandCost costclear = DoCommand(tile, 0, 0, DC_NONE, CMD_LANDSCAPE_CLEAR);
+			c->money = old_money;
+			if (CmdSucceeded(costclear)) {
+				Money cost = costclear.GetCost();
+				if (cost < 0) {
+					cost = -cost; // Negate negative cost to a positive revenue
+					str = STR_REVENUE_WHEN_CLEARED;
+				} else {
+					str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR;
+				}
+				SetDParam(0, cost);
 			}
-			SetDParam(0, cost);
 		}
 		GetString(this->landinfo_data[line_nr], str, lastof(this->landinfo_data[line_nr]));
 		line_nr++;