Changeset - r15741:b6af3c5d971b
[Not reviewed]
master
0 1 0
frosch - 14 years ago 2010-08-08 21:34:19
frosch@openttd.org
(svn r20418) -Fix [FS#4017](r20125): During world generation the snow-mapbits are not yet available, so test the snowline variable directly (as before).
1 file changed with 12 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/newgrf_commons.cpp
Show inline comments
 
@@ -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, bo
 
			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, bo
 

	
 
				case MP_VOID:
 
				case MP_WATER:
 
				genworld:
 
					has_snow = (GetTileZ(tile) > GetSnowLine());
 
					break;
 

	
0 comments (0 inline, 0 general)