Changeset - r10228:40d85bf74068
[Not reviewed]
master
0 2 0
frosch - 16 years ago 2008-10-10 20:09:29
frosch@openttd.org
(svn r14456) -Fix: Obiwan in catchment-area and station-spread of docks.
2 files changed with 22 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/station_cmd.cpp
Show inline comments
 
@@ -547,7 +547,12 @@ static void UpdateStationAcceptance(Stat
 
		MergePoint(&rect, st->airport_tile + TileDiffXY(afc->size_x - 1, afc->size_y - 1));
 
	}
 

	
 
	if (st->dock_tile != 0) MergePoint(&rect, st->dock_tile);
 
	if (st->dock_tile != 0) {
 
		MergePoint(&rect, st->dock_tile);
 
		if (IsDockTile(st->dock_tile)) {
 
			MergePoint(&rect, st->dock_tile + TileOffsByDiagDir(GetDockDirection(st->dock_tile)));
 
		} // else OilRig
 
	}
 

	
 
	for (const RoadStop *rs = st->bus_stops; rs != NULL; rs = rs->next) {
 
		MergePoint(&rect, rs->xy);
 
@@ -559,7 +564,12 @@ static void UpdateStationAcceptance(Stat
 

	
 
	/* And retrieve the acceptance. */
 
	AcceptedCargo accepts;
 
	assert((rect.right >= rect.left) == !st->rect.IsEmpty());
 
	if (rect.right >= rect.left) {
 
		assert(rect.left == st->rect.left);
 
		assert(rect.top == st->rect.bottom);
 
		assert(rect.right == st->rect.right);
 
		assert(rect.bottom == st->rect.top);
 
		GetAcceptanceAroundTiles(
 
			accepts,
 
			TileXY(rect.left, rect.bottom),
 
@@ -2126,7 +2136,9 @@ CommandCost CmdBuildDock(TileIndex tile,
 
			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
 
		}
 

	
 
		if (!st->rect.BeforeAddRect(tile, _dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TEST)) return CMD_ERROR;
 
		if (!st->rect.BeforeAddRect(
 
				tile + ToTileIndexDiff(_dock_tileoffs_chkaround[direction]),
 
				_dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TEST)) return CMD_ERROR;
 

	
 
		if (st->dock_tile != 0) return_cmd_error(STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK);
 
	} else {
 
@@ -2150,7 +2162,9 @@ CommandCost CmdBuildDock(TileIndex tile,
 
		st->dock_tile = tile;
 
		st->AddFacility(FACIL_DOCK, tile);
 

	
 
		st->rect.BeforeAddRect(tile, _dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TRY);
 
		st->rect.BeforeAddRect(
 
				tile + ToTileIndexDiff(_dock_tileoffs_chkaround[direction]),
 
				_dock_w_chk[direction], _dock_h_chk[direction], StationRect::ADD_TRY);
 

	
 
		MakeDock(tile, st->owner, st->index, direction, wc);
 

	
src/station_map.h
Show inline comments
 
@@ -165,6 +165,11 @@ static inline bool IsDock(TileIndex t)
 
	return GetStationType(t) == STATION_DOCK;
 
}
 

	
 
static inline bool IsDockTile(TileIndex t)
 
{
 
	return IsTileType(t, MP_STATION) && GetStationType(t) == STATION_DOCK;
 
}
 

	
 
static inline bool IsBuoy(TileIndex t)
 
{
 
	return GetStationType(t) == STATION_BUOY;
0 comments (0 inline, 0 general)