Changeset - r19685:8ccaeb42d4b3
[Not reviewed]
master
0 2 0
zuu - 12 years ago 2012-10-25 19:25:31
zuu@openttd.org
(svn r24628) -Fix: Document and enforce precondition start != end for ScriptRoad::RemoveRoad and ScriptRoad::RemoveRoadFull
2 files changed with 4 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/script/api/script_road.cpp
Show inline comments
 
@@ -534,23 +534,25 @@ static bool NeighbourHasReachableRoad(::
 
	return _BuildRoadStationInternal(tile, front, road_veh_type, true, station_id);
 
}
 

	
 
/* static */ bool ScriptRoad::RemoveRoad(TileIndex start, TileIndex end)
 
{
 
	EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY);
 
	EnforcePrecondition(false, start != end);
 
	EnforcePrecondition(false, ::IsValidTile(start));
 
	EnforcePrecondition(false, ::IsValidTile(end));
 
	EnforcePrecondition(false, ::TileX(start) == ::TileX(end) || ::TileY(start) == ::TileY(end));
 
	EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
 

	
 
	return ScriptObject::DoCommand(start, end, (::TileY(start) != ::TileY(end) ? 4 : 0) | (start < end ? 1 : 2) | (ScriptObject::GetRoadType() << 3), CMD_REMOVE_LONG_ROAD);
 
}
 

	
 
/* static */ bool ScriptRoad::RemoveRoadFull(TileIndex start, TileIndex end)
 
{
 
	EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY);
 
	EnforcePrecondition(false, start != end);
 
	EnforcePrecondition(false, ::IsValidTile(start));
 
	EnforcePrecondition(false, ::IsValidTile(end));
 
	EnforcePrecondition(false, ::TileX(start) == ::TileX(end) || ::TileY(start) == ::TileY(end));
 
	EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
 

	
 
	return ScriptObject::DoCommand(start, end, (::TileY(start) != ::TileY(end) ? 4 : 0) | (start < end ? 2 : 1) | (ScriptObject::GetRoadType() << 3), CMD_REMOVE_LONG_ROAD);
src/script/api/script_road.hpp
Show inline comments
 
@@ -415,12 +415,13 @@ public:
 
	static bool BuildDriveThroughRoadStation(TileIndex tile, TileIndex front, RoadVehicleType road_veh_type, StationID station_id);
 

	
 
	/**
 
	 * Removes a road from the center of tile start to the center of tile end.
 
	 * @param start The start tile of the road.
 
	 * @param end The end tile of the road.
 
	 * @pre 'start' is not equal to 'end'.
 
	 * @pre ScriptMap::IsValidTile(start).
 
	 * @pre ScriptMap::IsValidTile(end).
 
	 * @pre 'start' and 'end' are in a straight line, i.e.
 
	 *  ScriptMap::GetTileX(start) == ScriptMap::GetTileX(end) or
 
	 *  ScriptMap::GetTileY(start) == ScriptMap::GetTileY(end).
 
	 * @pre IsRoadTypeAvailable(GetCurrentRoadType()).
 
@@ -434,12 +435,13 @@ public:
 

	
 
	/**
 
	 * Removes a road from the edge of tile start to the edge of tile end (both
 
	 *  included).
 
	 * @param start The start tile of the road.
 
	 * @param end The end tile of the road.
 
	 * @pre 'start' is not equal to 'end'.
 
	 * @pre ScriptMap::IsValidTile(start).
 
	 * @pre ScriptMap::IsValidTile(end).
 
	 * @pre 'start' and 'end' are in a straight line, i.e.
 
	 *  ScriptMap::GetTileX(start) == ScriptMap::GetTileX(end) or
 
	 *  ScriptMap::GetTileY(start) == ScriptMap::GetTileY(end).
 
	 * @pre IsRoadTypeAvailable(GetCurrentRoadType()).
0 comments (0 inline, 0 general)