(svn r25870) -Codechange: Move placement rules for transmitter to its own function

pull/155/head
planetmaker 11 years ago
parent 463b9165f0
commit c391cdaf33

@ -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 */

Loading…
Cancel
Save