diff options
author | frosch <frosch@openttd.org> | 2010-08-08 21:34:19 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2010-08-08 21:34:19 +0000 |
commit | a56f8ba801cf13478b26c1580bc13ba2f116650c (patch) | |
tree | cd1071dd9968efbc90320b9d94d5f709db402066 | |
parent | 747634a687abf468f9418d9bace237bf7327d9ab (diff) | |
download | openttd-a56f8ba801cf13478b26c1580bc13ba2f116650c.tar.xz |
(svn r20418) -Fix [FS#4017](r20125): During world generation the snow-mapbits are not yet available, so test the snowline variable directly (as before).
-rw-r--r-- | src/newgrf_commons.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/newgrf_commons.cpp b/src/newgrf_commons.cpp index e39b31b1b..940cdc0de 100644 --- a/src/newgrf_commons.cpp +++ b/src/newgrf_commons.cpp @@ -22,6 +22,7 @@ #include "station_map.h" #include "tree_map.h" #include "tunnelbridge_map.h" +#include "genworld.h" #include "core/mem_func.hpp" /** @@ -304,26 +305,36 @@ uint32 GetTerrainType(TileIndex tile, bool upper_halftile) bool has_snow; switch (GetTileType(tile)) { case MP_CLEAR: + /* During map generation the snowstate may not be valid yet, as the tileloop may not have run yet. */ + if (_generating_world) goto genworld; has_snow = IsSnowTile(tile) && GetClearDensity(tile) >= 2; break; case MP_RAILWAY: { + /* During map generation the snowstate may not be valid yet, as the tileloop may not have run yet. */ + if (_generating_world) goto genworld; // we do not care about foundations here RailGroundType ground = GetRailGroundType(tile); has_snow = (ground == RAIL_GROUND_ICE_DESERT || (upper_halftile && ground == RAIL_GROUND_HALF_SNOW)); break; } case MP_ROAD: + /* During map generation the snowstate may not be valid yet, as the tileloop may not have run yet. */ + if (_generating_world) goto genworld; // we do not care about foundations here has_snow = IsOnSnow(tile); break; case MP_TREES: { + /* During map generation the snowstate may not be valid yet, as the tileloop may not have run yet. */ + if (_generating_world) goto genworld; TreeGround ground = GetTreeGround(tile); has_snow = (ground == TREE_GROUND_SNOW_DESERT || ground == TREE_GROUND_ROUGH_SNOW) && GetTreeDensity(tile) >= 2; break; } case MP_TUNNELBRIDGE: + /* During map generation the snowstate may not be valid yet, as the tileloop may not have run yet. */ + if (_generating_world) goto genworld; // we do not care about foundations here has_snow = HasTunnelBridgeSnowOrDesert(tile); break; @@ -337,6 +348,7 @@ uint32 GetTerrainType(TileIndex tile, bool upper_halftile) case MP_VOID: case MP_WATER: + genworld: has_snow = (GetTileZ(tile) > GetSnowLine()); break; |