summaryrefslogtreecommitdiff
path: root/src/newgrf_commons.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2010-08-08 21:34:19 +0000
committerfrosch <frosch@openttd.org>2010-08-08 21:34:19 +0000
commita56f8ba801cf13478b26c1580bc13ba2f116650c (patch)
treecd1071dd9968efbc90320b9d94d5f709db402066 /src/newgrf_commons.cpp
parent747634a687abf468f9418d9bace237bf7327d9ab (diff)
downloadopenttd-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).
Diffstat (limited to 'src/newgrf_commons.cpp')
-rw-r--r--src/newgrf_commons.cpp12
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;