diff options
author | celestar <celestar@openttd.org> | 2006-06-02 13:05:41 +0000 |
---|---|---|
committer | celestar <celestar@openttd.org> | 2006-06-02 13:05:41 +0000 |
commit | 25a63ec7af6fadb2d33ef84f79597c14b10e7f39 (patch) | |
tree | d5df4e2831609eca45d7ea4558e09a600089ead2 /tree_cmd.c | |
parent | d680fcec772d422b88ea4802add2e6195c6327a2 (diff) | |
download | openttd-25a63ec7af6fadb2d33ef84f79597c14b10e7f39.tar.xz |
(svn r5070) Merged the bridge branch
-Feature: Bridges can now be placed above:
Any railway track combination (excluding depots and waypoints)
Any road combination (excluding depots)
Clear tiles (duh), including fields
Tunnel entrances
Bridge heads
Thanks to Tron for idea and implementation, KUDr for the yapf synchronization and many others for hours of testing
There are still a number of visual problems remaining, especially when electric railways are on or under the bridge.
DO NOT REPORT THOSE BUGS FOR THE TIME BEING please.
Diffstat (limited to 'tree_cmd.c')
-rw-r--r-- | tree_cmd.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/tree_cmd.c b/tree_cmd.c index 808243b14..018835d5b 100644 --- a/tree_cmd.c +++ b/tree_cmd.c @@ -2,6 +2,7 @@ #include "stdafx.h" #include "openttd.h" +#include "bridge_map.h" #include "clear_map.h" #include "table/strings.h" #include "table/sprites.h" @@ -68,6 +69,7 @@ static void DoPlaceMoreTrees(TileIndex tile) if (dist <= 13 && IsTileType(cur_tile, MP_CLEAR) && + !IsBridgeAbove(cur_tile) && !IsClearGround(cur_tile, CLEAR_FIELDS) && !IsClearGround(cur_tile, CLEAR_ROCKS)) { PlaceTree(cur_tile, r); @@ -92,6 +94,7 @@ void PlaceTreesRandomly(void) uint32 r = Random(); TileIndex tile = RandomTileSeed(r); if (IsTileType(tile, MP_CLEAR) && + !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && !IsClearGround(tile, CLEAR_ROCKS)) { PlaceTree(tile, r); @@ -105,7 +108,9 @@ void PlaceTreesRandomly(void) do { uint32 r = Random(); TileIndex tile = RandomTileSeed(r); - if (IsTileType(tile, MP_CLEAR) && GetTropicZone(tile) == TROPICZONE_RAINFOREST) { + if (IsTileType(tile, MP_CLEAR) && + !IsBridgeAbove(tile) && + GetTropicZone(tile) == TROPICZONE_RAINFOREST) { PlaceTree(tile, r); } } while (--i); @@ -175,7 +180,8 @@ int32 CmdPlantTree(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) break; case MP_CLEAR: - if (!IsTileOwner(tile, OWNER_NONE)) { + if (!IsTileOwner(tile, OWNER_NONE) || + IsBridgeAbove(tile)) { msg = STR_2804_SITE_UNSUITABLE; continue; } @@ -480,7 +486,7 @@ static void TileLoop_Trees(TileIndex tile) tile += ToTileIndexDiff(_tileloop_trees_dir[Random() & 7]); - if (!IsTileType(tile, MP_CLEAR)) return; + if (!IsTileType(tile, MP_CLEAR) || IsBridgeAbove(tile)) return; switch (GetClearGround(tile)) { case CLEAR_GRASS: @@ -513,6 +519,7 @@ static void TileLoop_Trees(TileIndex tile) case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break; default: MakeClear(tile, CLEAR_SNOW, GetTreeDensity(tile)); break; } + ClearBridgeMiddle(tile); } break; @@ -535,6 +542,7 @@ void OnTick_Trees(void) if (_opt.landscape == LT_DESERT && (r = Random(), tile = RandomTileSeed(r), GetTropicZone(tile) == TROPICZONE_RAINFOREST) && IsTileType(tile, MP_CLEAR) && + !IsBridgeAbove(tile) && (ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) { MakeTree(tile, tree, 0, 0, ct == CLEAR_ROUGH ? TREE_GROUND_ROUGH : TREE_GROUND_GRASS, 0); @@ -547,6 +555,7 @@ void OnTick_Trees(void) r = Random(); tile = TILE_MASK(r); if (IsTileType(tile, MP_CLEAR) && + !IsBridgeAbove(tile) && (ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH || ct == CLEAR_SNOW) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) { switch (ct) { |