summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2013-10-17 21:22:39 +0000
committerplanetmaker <planetmaker@openttd.org>2013-10-17 21:22:39 +0000
commit0a481d5ea66ec04c85ec0c6cd9beb098c84d6345 (patch)
tree0a582eafe8c219c24909824a93201af9584cb0ee
parent8ede002a96c7e41a433e460b885322d0d0d783f0 (diff)
downloadopenttd-0a481d5ea66ec04c85ec0c6cd9beb098c84d6345.tar.xz
(svn r25870) -Codechange: Move placement rules for transmitter to its own function
-rw-r--r--src/object_cmd.cpp32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp
index 20a392ca6..ae9b2c701 100644
--- a/src/object_cmd.cpp
+++ b/src/object_cmd.cpp
@@ -643,6 +643,24 @@ static bool HasTransmitter(TileIndex tile, void *user)
return IsObjectTypeTile(tile, OBJECT_TRANSMITTER);
}
+/**
+ * Try to build a transmitter.
+ * @return True iff a transmitter was built.
+ */
+static bool TryBuildTransmitter()
+{
+ TileIndex tile = RandomTile();
+ int h;
+ if (IsTileType(tile, MP_CLEAR) && IsTileFlat(tile, &h) && h >= 4 && !IsBridgeAbove(tile)) {
+ TileIndex t = tile;
+ if (CircularTileSearch(&t, 9, HasTransmitter, NULL)) return false;
+
+ BuildObject(OBJECT_TRANSMITTER, tile);
+ return true;
+ }
+ return false;
+}
+
void GenerateObjects()
{
if (_settings_game.game_creation.landscape == LT_TOYLAND) return;
@@ -670,17 +688,9 @@ void GenerateObjects()
SetGeneratingWorldProgress(GWP_OBJECT, radiotower_to_build + lighthouses_to_build);
for (uint i = ScaleByMapSize(1000); i != 0 && Object::CanAllocateItem(); i--) {
- TileIndex tile = RandomTile();
-
- int h;
- if (IsTileType(tile, MP_CLEAR) && IsTileFlat(tile, &h) && h >= 4 && !IsBridgeAbove(tile)) {
- TileIndex t = tile;
- if (CircularTileSearch(&t, 9, HasTransmitter, NULL)) continue;
-
- BuildObject(OBJECT_TRANSMITTER, tile);
- IncreaseGeneratingWorldProgress(GWP_OBJECT);
- if (--radiotower_to_build == 0) break;
- }
+ if (!TryBuildTransmitter()) continue;
+ IncreaseGeneratingWorldProgress(GWP_OBJECT);
+ if (--radiotower_to_build == 0) break;
}
/* add lighthouses */