--- a/src/water_cmd.cpp Tue Jun 17 10:32:49 2008 +0000
+++ b/src/water_cmd.cpp Tue Jun 17 13:22:13 2008 +0000
@@ -40,6 +40,7 @@
#include "newgrf_cargo.h"
#include "effectvehicle_func.h"
#include "oldpool_func.h"
+#include "tunnelbridge_map.h"
#include "table/sprites.h"
#include "table/strings.h"
@@ -482,13 +483,19 @@
{
switch (GetTileType(tile)) {
case MP_WATER:
- if (!IsCoast(tile)) return true;
- switch (GetTileSlope(tile, NULL)) {
- case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
- case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
- case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
- case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
- default: return false;
+ switch (GetWaterTileType(tile)) {
+ default: NOT_REACHED();
+ case WATER_TILE_DEPOT: case WATER_TILE_CLEAR: return true;
+ case WATER_TILE_LOCK: return DiagDirToAxis(GetLockDirection(tile)) == DiagDirToAxis(DirToDiagDir(from));
+
+ case WATER_TILE_COAST:
+ switch (GetTileSlope(tile, NULL)) {
+ case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
+ case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
+ case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
+ case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
+ default: return false;
+ }
}
case MP_RAILWAY:
@@ -506,6 +513,7 @@
case MP_STATION: return IsCustomFSMportsSpecIndex(tile) || IsOilRig(tile) || (IsDock(tile) && GetTileSlope(tile, NULL) == SLOPE_FLAT) || IsBuoy(tile);
case MP_INDUSTRY: return (GetIndustrySpec(GetIndustryType(tile))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
+ case MP_TUNNELBRIDGE: return GetTunnelBridgeTransportType(tile) == TRANSPORT_WATER && ReverseDiagDir(GetTunnelBridgeDirection(tile)) == DirToDiagDir(from);
default: return false;
}
}
@@ -726,15 +734,16 @@
{
switch (GetWaterTileType(tile)) {
case WATER_TILE_CLEAR:
- if (!IsCanal(tile)) {
- td->str = STR_3804_WATER;
- } else {
- td->str = STR_LANDINFO_CANAL;
+ switch (GetWaterClass(tile)) {
+ case WATER_CLASS_SEA: td->str = STR_3804_WATER; break;
+ case WATER_CLASS_CANAL: td->str = STR_LANDINFO_CANAL; break;
+ case WATER_CLASS_RIVER: td->str = STR_LANDINFO_RIVER; break;
+ default: assert(0); break;
}
break;
case WATER_TILE_COAST: td->str = STR_3805_COAST_OR_RIVERBANK; break;
- case WATER_TILE_LOCK : td->str = STR_LANDINFO_LOCK; break;
- case WATER_TILE_DEPOT: td->str = STR_3806_SHIP_DEPOT; break;
+ case WATER_TILE_LOCK : td->str = STR_LANDINFO_LOCK; break;
+ case WATER_TILE_DEPOT: td->str = STR_3806_SHIP_DEPOT; break;
default: assert(0); break;
}