Changeset - r9578:dc0f6aac5573
[Not reviewed]
master
0 2 0
rubidium - 16 years ago 2008-06-23 08:38:07
rubidium@openttd.org
(svn r13611) -Fix [FS#2100]: if the first bridge can't be build for a given length, then none of the other bridges can. Effectively meaning that if someone replaces the first bridge with a bridge that can be only 3 tiles longs then only other bridges that can be 3 tiles long will be buildable, but only if they are 3 tiles long.
2 files changed with 9 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/bridge.h
Show inline comments
 
@@ -44,7 +44,7 @@ static inline const BridgeSpec *GetBridg
 

	
 
void DrawBridgeMiddle(const TileInfo *ti);
 

	
 
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len);
 
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, uint32 flags = 0);
 
int CalcBridgeLenCostFactor(int x);
 

	
 
void ResetBridges();
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -160,15 +160,18 @@ static CommandCost CheckBridgeSlopeSouth
 
	return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
 
}
 

	
 
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len)
 
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, uint32 flags)
 
{
 
	const BridgeSpec *b = GetBridgeSpec(bridge_type);
 
	uint max; // max possible length of a bridge (with patch 100)
 
	if (flags & DC_QUERY_COST) {
 
		return bridge_len <= (_settings_game.construction.longbridges ? 100 : 16);
 
	}
 

	
 
	if (bridge_type >= MAX_BRIDGES) return false;
 

	
 
	const BridgeSpec *b = GetBridgeSpec(bridge_type);
 
	if (b->avail_year > _cur_year) return false;
 

	
 
	max = b->max_length;
 
	uint max = b->max_length;
 
	if (max >= 16 && _settings_game.construction.longbridges) max = 100;
 

	
 
	return b->min_length <= bridge_len && bridge_len <= max;
 
@@ -255,7 +258,7 @@ CommandCost CmdBuildBridge(TileIndex end
 
	bridge_len = sx + sy - x - y - 1;
 
	if (transport_type != TRANSPORT_WATER) {
 
		/* set and test bridge length, availability */
 
		if (!CheckBridge_Stuff(bridge_type, bridge_len)) return_cmd_error(STR_5015_CAN_T_BUILD_BRIDGE_HERE);
 
		if (!CheckBridge_Stuff(bridge_type, bridge_len, flags)) return_cmd_error(STR_5015_CAN_T_BUILD_BRIDGE_HERE);
 
	}
 

	
 
	/* retrieve landscape height and ensure it's on land */
0 comments (0 inline, 0 general)