Changeset - r15084:158871f5a6b1
[Not reviewed]
master
0 4 0
terkhen - 14 years ago 2010-04-25 13:56:51
terkhen@openttd.org
(svn r19720) -Feature: New base costs for building/clearing canals, building/clearing aqueducts and building/clearing locks.
4 files changed with 21 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/economy_type.h
Show inline comments
 
@@ -125,6 +125,12 @@ enum Price {
 
	PR_BUILD_FOUNDATION,
 
	PR_BUILD_INDUSTRY_RAW,
 
	PR_BUILD_TOWN,
 
	PR_BUILD_CANAL,
 
	PR_CLEAR_CANAL,
 
	PR_BUILD_AQUEDUCT,
 
	PR_CLEAR_AQUEDUCT,
 
	PR_BUILD_LOCK,
 
	PR_CLEAR_LOCK,
 

	
 
	PR_END,
 
	INVALID_PRICE = 0xFF
src/table/pricebase.h
Show inline comments
 
@@ -70,5 +70,11 @@ extern const PriceBaseSpec _price_base_s
 
	{    250, PCAT_CONSTRUCTION, GSF_END,          PR_TERRAFORM          }, ///< PR_BUILD_FOUNDATION
 
	{8000000, PCAT_CONSTRUCTION, GSF_END,          PR_BUILD_INDUSTRY     }, ///< PR_BUILD_INDUSTRY_RAW
 
	{1000000, PCAT_CONSTRUCTION, GSF_END,          PR_BUILD_INDUSTRY     }, ///< PR_BUILD_TOWN
 
	{  10000, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_WATER        }, ///< PR_BUILD_CANAL
 
	{  10000, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_WATER        }, ///< PR_CLEAR_CANAL
 
	{  10000, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_WATER        }, ///< PR_BUILD_AQUEDUCT
 
	{     50, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_BRIDGE       }, ///< PR_CLEAR_AQUEDUCT
 
	{   7500, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_WATER        }, ///< PR_BUILD_LOCK
 
	{  20000, PCAT_CONSTRUCTION, GSF_END,          PR_CLEAR_WATER        }, ///< PR_CLEAR_LOCK
 
};
 
assert_compile(lengthof(_price_base_specs) == PR_END);
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -474,7 +474,7 @@ CommandCost CmdBuildBridge(TileIndex end
 
			cost.AddCost((int64)bridge_len * _price[PR_BUILD_BRIDGE] * GetBridgeSpec(bridge_type)->price >> 8);
 
		} else {
 
			/* Aqueducts use a separate base cost. */
 
			cost.AddCost((int64)bridge_len * _price[PR_CLEAR_WATER]);
 
			cost.AddCost((int64)bridge_len * _price[PR_BUILD_AQUEDUCT]);
 
		}
 

	
 
	}
 
@@ -787,7 +787,8 @@ static CommandCost DoClearBridge(TileInd
 
		}
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, (GetTunnelBridgeLength(tile, endtile) + 2) * _price[PR_CLEAR_BRIDGE]);
 
	Money base_cost = (GetTunnelBridgeTransportType(tile) != TRANSPORT_WATER) ? _price[PR_CLEAR_BRIDGE] : _price[PR_CLEAR_AQUEDUCT];
 
	return CommandCost(EXPENSES_CONSTRUCTION, (GetTunnelBridgeLength(tile, endtile) + 2) * base_cost);
 
}
 

	
 
/** Remove a tunnel or a bridge from the game.
src/water_cmd.cpp
Show inline comments
 
@@ -246,7 +246,7 @@ static CommandCost DoBuildLock(TileIndex
 
		MarkCanalsAndRiversAroundDirty(tile - delta);
 
		MarkCanalsAndRiversAroundDirty(tile + delta);
 
	}
 
	cost.AddCost(_price[PR_CLEAR_WATER] * 3 / 4);
 
	cost.AddCost(_price[PR_BUILD_LOCK]);
 

	
 
	return cost;
 
}
 
@@ -281,7 +281,7 @@ static CommandCost RemoveLock(TileIndex 
 
		MarkCanalsAndRiversAroundDirty(tile + delta);
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_WATER] * 2);
 
	return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_LOCK]);
 
}
 

	
 
/** Builds a lock.
 
@@ -360,7 +360,7 @@ CommandCost CmdBuildCanal(TileIndex tile
 
			MarkCanalsAndRiversAroundDirty(tile);
 
		}
 

	
 
		cost.AddCost(_price[PR_CLEAR_WATER]);
 
		cost.AddCost(_price[PR_BUILD_CANAL]);
 
	}
 

	
 
	if (cost.GetCost() == 0) {
 
@@ -376,6 +376,7 @@ static CommandCost ClearTile_Water(TileI
 
		case WATER_TILE_CLEAR: {
 
			if (flags & DC_NO_WATER) return_cmd_error(STR_ERROR_CAN_T_BUILD_ON_WATER);
 

	
 
			Money base_cost = IsCanal(tile) ? _price[PR_CLEAR_CANAL] : _price[PR_CLEAR_WATER];
 
			/* Make sure freeform edges are allowed or it's not an edge tile. */
 
			if (!_settings_game.construction.freeform_edges && (!IsInsideMM(TileX(tile), 1, MapMaxX() - 1) ||
 
					!IsInsideMM(TileY(tile), 1, MapMaxY() - 1))) {
 
@@ -395,7 +396,8 @@ static CommandCost ClearTile_Water(TileI
 
				DoClearSquare(tile);
 
				MarkCanalsAndRiversAroundDirty(tile);
 
			}
 
			return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_CLEAR_WATER]);
 

	
 
			return CommandCost(EXPENSES_CONSTRUCTION, base_cost);
 
		}
 

	
 
		case WATER_TILE_COAST: {
0 comments (0 inline, 0 general)