changeset 14189:6b31c7a77ef6 draft

(svn r18738) -Fix (r18719): when a tree died while there was snow the amount of snow on the tile changed
author yexo <yexo@openttd.org>
date Tue, 05 Jan 2010 22:32:47 +0000
parents 3567fc0ac6ee
children ca3d4f2616e4
files src/clear_map.h src/tree_cmd.cpp
diffstat 2 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/clear_map.h
+++ b/src/clear_map.h
@@ -310,14 +310,14 @@
  * @param t the tile to make snowy
  * @pre GetClearGround(t) != CLEAR_SNOW
  */
-static inline void MakeSnow(TileIndex t)
+static inline void MakeSnow(TileIndex t, uint density = 0)
 {
 	assert(GetClearGround(t) != CLEAR_SNOW);
 	SetBit(_m[t].m3, 4);
 	if (GetClearGround(t) == CLEAR_FIELDS) {
-		SetClearGroundDensity(t, CLEAR_GRASS, 0);
+		SetClearGroundDensity(t, CLEAR_GRASS, density);
 	} else {
-		SetClearDensity(t, 0);
+		SetClearDensity(t, density);
 	}
 }
 
--- a/src/tree_cmd.cpp
+++ b/src/tree_cmd.cpp
@@ -702,16 +702,19 @@
 					case TREE_GROUND_SHORE: MakeShore(tile); break;
 					case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); break;
 					case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break;
-					case TREE_GROUND_ROUGH_SNOW:
+					case TREE_GROUND_ROUGH_SNOW: {
+						uint density = GetTreeDensity(tile);
 						MakeClear(tile, CLEAR_ROUGH, 3);
-						MakeSnow(tile);
+						MakeSnow(tile, density);
 						break;
+					}
 					default: // snow or desert
 						if (_settings_game.game_creation.landscape == LT_TROPIC) {
 							MakeClear(tile, CLEAR_DESERT, GetTreeDensity(tile));
 						} else {
-							MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile));
-							MakeSnow(tile);
+							uint density = GetTreeDensity(tile);
+							MakeClear(tile, CLEAR_GRASS, 3);
+							MakeSnow(tile, density);
 						}
 						break;
 				}