(svn r18738) -Fix (r18719): when a tree died while there was snow the amount of snow on the tile changed

This commit is contained in:
yexo 2010-01-05 22:32:47 +00:00
parent 3157dfb675
commit 06842771a8
2 changed files with 10 additions and 7 deletions

View File

@ -310,14 +310,14 @@ static inline void MakeField(TileIndex t, uint field_type, IndustryID industry)
* @param t the tile to make snowy * @param t the tile to make snowy
* @pre GetClearGround(t) != CLEAR_SNOW * @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); assert(GetClearGround(t) != CLEAR_SNOW);
SetBit(_m[t].m3, 4); SetBit(_m[t].m3, 4);
if (GetClearGround(t) == CLEAR_FIELDS) { if (GetClearGround(t) == CLEAR_FIELDS) {
SetClearGroundDensity(t, CLEAR_GRASS, 0); SetClearGroundDensity(t, CLEAR_GRASS, density);
} else { } else {
SetClearDensity(t, 0); SetClearDensity(t, density);
} }
} }

View File

@ -702,16 +702,19 @@ static void TileLoop_Trees(TileIndex tile)
case TREE_GROUND_SHORE: MakeShore(tile); break; case TREE_GROUND_SHORE: MakeShore(tile); break;
case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(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: 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); MakeClear(tile, CLEAR_ROUGH, 3);
MakeSnow(tile); MakeSnow(tile, density);
break; break;
}
default: // snow or desert default: // snow or desert
if (_settings_game.game_creation.landscape == LT_TROPIC) { if (_settings_game.game_creation.landscape == LT_TROPIC) {
MakeClear(tile, CLEAR_DESERT, GetTreeDensity(tile)); MakeClear(tile, CLEAR_DESERT, GetTreeDensity(tile));
} else { } else {
MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); uint density = GetTreeDensity(tile);
MakeSnow(tile); MakeClear(tile, CLEAR_GRASS, 3);
MakeSnow(tile, density);
} }
break; break;
} }