From a56f8ba801cf13478b26c1580bc13ba2f116650c Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 8 Aug 2010 21:34:19 +0000 Subject: (svn r20418) -Fix [FS#4017](r20125): During world generation the snow-mapbits are not yet available, so test the snowline variable directly (as before). --- src/newgrf_commons.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') 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; -- cgit v1.2.3-70-g09d2