From 9f6b8aea49cbafe9d19611dc31c64a92b171d14b Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 6 Feb 2014 21:06:59 +0000 Subject: (svn r26313) -Codechange: use a set for finding unique town names instead of iterating all just created town names (MJP) --- src/town_cmd.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/town_cmd.cpp') diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 09ca7cee9..fd380a827 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1901,6 +1901,7 @@ bool GenerateTowns(TownLayout layout) uint total = (difficulty == (uint)CUSTOM_TOWN_NUMBER_DIFFICULTY) ? _settings_game.game_creation.custom_town_number : ScaleByMapSize(_num_initial_towns[difficulty] + (Random() & 7)); total = min(TownPool::MAX_SIZE, total); uint32 townnameparts; + TownNames town_names; SetGeneratingWorldProgress(GWP_TOWN, total); @@ -1919,11 +1920,13 @@ bool GenerateTowns(TownLayout layout) bool city = (_settings_game.economy.larger_towns != 0 && Chance16(1, _settings_game.economy.larger_towns)); IncreaseGeneratingWorldProgress(GWP_TOWN); /* Get a unique name for the town. */ - if (!GenerateTownName(&townnameparts)) continue; + if (!GenerateTownName(&townnameparts, &town_names)) continue; /* try 20 times to create a random-sized town for the first loop. */ if (CreateRandomTown(20, townnameparts, TSZ_RANDOM, city, layout) != NULL) current_number++; // If creation was successful, raise a flag. } while (--total); + town_names.clear(); + if (current_number != 0) return true; /* If current_number is still zero at this point, it means that not a single town has been created. -- cgit v1.2.3-54-g00ecf