OpenTTD Source 20250428-master-g68ba2735ea
townname.cpp File Reference

Town name generators. More...

#include "stdafx.h"
#include "string_func.h"
#include "townname_type.h"
#include "town.h"
#include "strings_func.h"
#include "core/random_func.hpp"
#include "genworld.h"
#include "gfx_layout.h"
#include "strings_internal.h"
#include "table/townname.h"
#include "safeguards.h"

Go to the source code of this file.

Typedefs

typedef void TownNameGenerator(StringBuilder &builder, uint32_t seed)
 Type for all town name generator functions.
 

Functions

static void GetTownName (StringBuilder &builder, const TownNameParams *par, uint32_t townnameparts)
 Fills builder with specified town name.
 
std::string GetTownName (const TownNameParams *par, uint32_t townnameparts)
 Get the town name for the given parameters and parts.
 
void GetTownName (StringBuilder &builder, const Town *t)
 Fills builder with town's name.
 
std::string GetTownName (const Town *t)
 Get the name of the given town.
 
bool VerifyTownName (uint32_t r, const TownNameParams *par, TownNames *town_names)
 Verifies the town name is valid and unique.
 
bool GenerateTownName (Randomizer &randomizer, uint32_t *townnameparts, TownNames *town_names)
 Generates valid town name.
 
static uint32_t SeedChance (uint8_t shift_by, size_t max, uint32_t seed)
 Generates a number from given seed.
 
static uint32_t SeedModChance (uint8_t shift_by, size_t max, uint32_t seed)
 Generates a number from given seed.
 
static int32_t SeedChanceBias (uint8_t shift_by, size_t max, uint32_t seed, int bias)
 Generates a number from given seed.
 
static void ReplaceWords (std::string_view org, std::string_view rep, std::string &str, size_t start)
 Replaces a string beginning in 'org' with 'rep'.
 
static void ReplaceEnglishWords (std::string &str, size_t start, bool original)
 Replaces english curses and ugly letter combinations by nicer ones.
 
static void MakeEnglishOriginalTownName (StringBuilder &builder, uint32_t seed)
 Generates English (Original) town name from given seed.
 
static void MakeEnglishAdditionalTownName (StringBuilder &builder, uint32_t seed)
 Generates English (Additional) town name from given seed.
 
static void MakeAustrianTownName (StringBuilder &builder, uint32_t seed)
 Generates Austrian town name from given seed.
 
static void MakeGermanTownName (StringBuilder &builder, uint32_t seed)
 Generates German town name from given seed.
 
static void MakeSpanishTownName (StringBuilder &builder, uint32_t seed)
 Generates Latin-American town name from given seed.
 
static void MakeFrenchTownName (StringBuilder &builder, uint32_t seed)
 Generates French town name from given seed.
 
static void MakeSillyTownName (StringBuilder &builder, uint32_t seed)
 Generates Silly town name from given seed.
 
static void MakeSwedishTownName (StringBuilder &builder, uint32_t seed)
 Generates Swedish town name from given seed.
 
static void MakeDutchTownName (StringBuilder &builder, uint32_t seed)
 Generates Dutch town name from given seed.
 
static void MakeFinnishTownName (StringBuilder &builder, uint32_t seed)
 Generates Finnish town name from given seed.
 
static void MakePolishTownName (StringBuilder &builder, uint32_t seed)
 Generates Polish town name from given seed.
 
static void MakeCzechTownName (StringBuilder &builder, uint32_t seed)
 Generates Czech town name from given seed.
 
static void MakeRomanianTownName (StringBuilder &builder, uint32_t seed)
 Generates Romanian town name from given seed.
 
static void MakeSlovakTownName (StringBuilder &builder, uint32_t seed)
 Generates Slovak town name from given seed.
 
static void MakeNorwegianTownName (StringBuilder &builder, uint32_t seed)
 Generates Norwegian town name from given seed.
 
static void MakeHungarianTownName (StringBuilder &builder, uint32_t seed)
 Generates Hungarian town name from given seed.
 
static void MakeSwissTownName (StringBuilder &builder, uint32_t seed)
 Generates Swiss town name from given seed.
 
static void MakeDanishTownName (StringBuilder &builder, uint32_t seed)
 Generates Danish town name from given seed.
 
static void MakeTurkishTownName (StringBuilder &builder, uint32_t seed)
 Generates Turkish town name from given seed.
 
static void MakeItalianTownName (StringBuilder &builder, uint32_t seed)
 Generates Italian town name from given seed.
 
static void MakeCatalanTownName (StringBuilder &builder, uint32_t seed)
 Generates Catalan town name from given seed.
 
void GenerateTownNameString (StringBuilder &builder, size_t lang, uint32_t seed)
 Generates town name from given seed.
 

Variables

static TownNameGenerator_town_name_generators []
 Town name generators.
 

Detailed Description

Town name generators.

Definition in file townname.cpp.

Typedef Documentation

◆ TownNameGenerator

typedef void TownNameGenerator(StringBuilder &builder, uint32_t seed)

Type for all town name generator functions.

Parameters
builderThe builder to write the name to.
seedThe seed of the town name.

Definition at line 961 of file townname.cpp.

Function Documentation

◆ GenerateTownName()

bool GenerateTownName ( Randomizer randomizer,
uint32_t *  townnameparts,
TownNames *  town_names 
)

Generates valid town name.

Parameters
randomizerthe source of random data for generating the name
townnamepartsif a name is generated, it's stored there
town_namesif a name is generated, check its uniqueness with the set
Returns
true iff a name was generated

Definition at line 136 of file townname.cpp.

References _settings_game, GameSettings::game_creation, Randomizer::Next(), Layouter::ReduceLineCache(), GameCreationSettings::town_name, and VerifyTownName().

Referenced by GenerateTowns().

◆ GenerateTownNameString()

void GenerateTownNameString ( StringBuilder builder,
size_t  lang,
uint32_t  seed 
)

Generates town name from given seed.

Parameters
builderstring builder to write to
langtown name language
seedgeneration seed

Definition at line 995 of file townname.cpp.

References _town_name_generators.

◆ GetTownName() [1/4]

std::string GetTownName ( const Town t)

Get the name of the given town.

Parameters
tThe town to get the name for.
Returns
The town name.

Definition at line 89 of file townname.cpp.

References GetTownName().

◆ GetTownName() [2/4]

std::string GetTownName ( const TownNameParams par,
uint32_t  townnameparts 
)

Get the town name for the given parameters and parts.

Parameters
parTown name parameters.
townnameparts'Encoded' town name.
Returns
The town name.

Definition at line 65 of file townname.cpp.

References GetTownName().

◆ GetTownName() [3/4]

void GetTownName ( StringBuilder builder,
const Town t 
)

Fills builder with town's name.

Parameters
builderString builder.
tThe town to get the name from.

Definition at line 78 of file townname.cpp.

References GetTownName().

◆ GetTownName() [4/4]

static void GetTownName ( StringBuilder builder,
const TownNameParams par,
uint32_t  townnameparts 
)
static

Fills builder with specified town name.

Parameters
builderThe string builder.
parTown name parameters.
townnameparts'Encoded' town name.

Definition at line 48 of file townname.cpp.

References GetStringWithArgs(), TownNameParams::grfid, MakeParameters(), and TownNameParams::type.

Referenced by GetTownName(), GetTownName(), GetTownName(), and VerifyTownName().

◆ MakeAustrianTownName()

static void MakeAustrianTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Austrian town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 313 of file townname.cpp.

References SeedChance(), and SeedChanceBias().

◆ MakeCatalanTownName()

static void MakeCatalanTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Catalan town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 926 of file townname.cpp.

References SeedChance(), and SeedModChance().

◆ MakeCzechTownName()

static void MakeCzechTownName ( StringBuilder builder,
uint32_t  seed 
)
static

◆ MakeDanishTownName()

static void MakeDanishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Danish town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 829 of file townname.cpp.

References SeedChance(), and SeedChanceBias().

◆ MakeDutchTownName()

static void MakeDutchTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Dutch town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 452 of file townname.cpp.

References SeedChance(), and SeedChanceBias().

◆ MakeEnglishAdditionalTownName()

static void MakeEnglishAdditionalTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates English (Additional) town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 278 of file townname.cpp.

References StringBuilder::GetString(), ReplaceEnglishWords(), SeedChance(), and SeedChanceBias().

◆ MakeEnglishOriginalTownName()

static void MakeEnglishOriginalTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates English (Original) town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 251 of file townname.cpp.

References StringBuilder::GetBytesWritten(), StringBuilder::GetString(), ReplaceEnglishWords(), SeedChance(), and SeedChanceBias().

◆ MakeFinnishTownName()

static void MakeFinnishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Finnish town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 475 of file townname.cpp.

References StringBuilder::GetString(), and SeedChance().

◆ MakeFrenchTownName()

static void MakeFrenchTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates French town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 405 of file townname.cpp.

References SeedChance().

◆ MakeGermanTownName()

static void MakeGermanTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates German town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 354 of file townname.cpp.

References SeedChance().

◆ MakeHungarianTownName()

static void MakeHungarianTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Hungarian town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 790 of file townname.cpp.

References SeedChance().

◆ MakeItalianTownName()

static void MakeItalianTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Italian town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 880 of file townname.cpp.

References SeedChance(), and SeedModChance().

◆ MakeNorwegianTownName()

static void MakeNorwegianTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Norwegian town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 768 of file townname.cpp.

References SeedChance().

◆ MakePolishTownName()

static void MakePolishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Polish town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 521 of file townname.cpp.

References SeedChance().

◆ MakeRomanianTownName()

static void MakeRomanianTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Romanian town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 746 of file townname.cpp.

References SeedChance().

◆ MakeSillyTownName()

static void MakeSillyTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Silly town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 416 of file townname.cpp.

References SeedChance().

◆ MakeSlovakTownName()

static void MakeSlovakTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Slovak town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 757 of file townname.cpp.

References SeedChance().

◆ MakeSpanishTownName()

static void MakeSpanishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Latin-American town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 394 of file townname.cpp.

References SeedChance().

◆ MakeSwedishTownName()

static void MakeSwedishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Swedish town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 428 of file townname.cpp.

References SeedChance(), and SeedChanceBias().

◆ MakeSwissTownName()

static void MakeSwissTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Swiss town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 818 of file townname.cpp.

References SeedChance().

◆ MakeTurkishTownName()

static void MakeTurkishTownName ( StringBuilder builder,
uint32_t  seed 
)
static

Generates Turkish town name from given seed.

Parameters
builderstring builder
seedtown name seed

Definition at line 846 of file townname.cpp.

References SeedModChance().

◆ ReplaceEnglishWords()

static void ReplaceEnglishWords ( std::string &  str,
size_t  start,
bool  original 
)
static

Replaces english curses and ugly letter combinations by nicer ones.

Parameters
strThe string with the town name
startThe start index into the string for the first town name
originalEnglish (Original) generator was used

Definition at line 230 of file townname.cpp.

References ReplaceWords().

Referenced by MakeEnglishAdditionalTownName(), and MakeEnglishOriginalTownName().

◆ ReplaceWords()

static void ReplaceWords ( std::string_view  org,
std::string_view  rep,
std::string &  str,
size_t  start 
)
static

Replaces a string beginning in 'org' with 'rep'.

Parameters
orgstring to replace
repstring to be replaced with
strstring of the town name
startthe start index within the string for the town name

Definition at line 218 of file townname.cpp.

Referenced by ReplaceEnglishWords().

◆ SeedChance()

static uint32_t SeedChance ( uint8_t  shift_by,
size_t  max,
uint32_t  seed 
)
inlinestatic

Generates a number from given seed.

Parameters
shift_bynumber of bits seed is shifted to the right
maxgenerated number is in interval 0...max-1
seedseed
Returns
seed transformed to a number from given range

Definition at line 169 of file townname.cpp.

References GB().

Referenced by MakeAustrianTownName(), MakeCatalanTownName(), MakeDanishTownName(), MakeDutchTownName(), MakeEnglishAdditionalTownName(), MakeEnglishOriginalTownName(), MakeFinnishTownName(), MakeFrenchTownName(), MakeGermanTownName(), MakeHungarianTownName(), MakeItalianTownName(), MakeNorwegianTownName(), MakePolishTownName(), MakeRomanianTownName(), MakeSillyTownName(), MakeSlovakTownName(), MakeSpanishTownName(), MakeSwedishTownName(), MakeSwissTownName(), and SeedChanceBias().

◆ SeedChanceBias()

static int32_t SeedChanceBias ( uint8_t  shift_by,
size_t  max,
uint32_t  seed,
int  bias 
)
inlinestatic

Generates a number from given seed.

Parameters
shift_bynumber of bits seed is shifted to the right
maxgenerated number is in interval -bias...max-1
seedseed
biasminimum value that can be returned
Returns
seed transformed to a number from given range

Definition at line 205 of file townname.cpp.

References SeedChance().

Referenced by MakeAustrianTownName(), MakeDanishTownName(), MakeDutchTownName(), MakeEnglishAdditionalTownName(), MakeEnglishOriginalTownName(), and MakeSwedishTownName().

◆ SeedModChance()

static uint32_t SeedModChance ( uint8_t  shift_by,
size_t  max,
uint32_t  seed 
)
inlinestatic

Generates a number from given seed.

Uses different algorithm than SeedChance().

Parameters
shift_bynumber of bits seed is shifted to the right
maxgenerated number is in interval 0...max-1
seedseed
Returns
seed transformed to a number from given range

Definition at line 182 of file townname.cpp.

Referenced by MakeCatalanTownName(), MakeCzechTownName(), MakeItalianTownName(), and MakeTurkishTownName().

◆ VerifyTownName()

bool VerifyTownName ( uint32_t  r,
const TownNameParams par,
TownNames *  town_names 
)

Verifies the town name is valid and unique.

Parameters
rrandom bits
partown name parameters
town_namesif a name is generated, check its uniqueness with the set
Returns
true iff name is valid and unique

Definition at line 103 of file townname.cpp.

References GetTownName(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::Iterate(), MAX_LENGTH_TOWN_NAME_CHARS, and Utf8StringLength().

Referenced by CmdFoundTown(), and GenerateTownName().

Variable Documentation

◆ _town_name_generators

TownNameGenerator* _town_name_generators[]
static
Initial value:
= {
}
static void MakeHungarianTownName(StringBuilder &builder, uint32_t seed)
Generates Hungarian town name from given seed.
Definition townname.cpp:790
static void MakeCatalanTownName(StringBuilder &builder, uint32_t seed)
Generates Catalan town name from given seed.
Definition townname.cpp:926
static void MakePolishTownName(StringBuilder &builder, uint32_t seed)
Generates Polish town name from given seed.
Definition townname.cpp:521
static void MakeSlovakTownName(StringBuilder &builder, uint32_t seed)
Generates Slovak town name from given seed.
Definition townname.cpp:757
static void MakeSwedishTownName(StringBuilder &builder, uint32_t seed)
Generates Swedish town name from given seed.
Definition townname.cpp:428
static void MakeFrenchTownName(StringBuilder &builder, uint32_t seed)
Generates French town name from given seed.
Definition townname.cpp:405
static void MakeItalianTownName(StringBuilder &builder, uint32_t seed)
Generates Italian town name from given seed.
Definition townname.cpp:880
static void MakeNorwegianTownName(StringBuilder &builder, uint32_t seed)
Generates Norwegian town name from given seed.
Definition townname.cpp:768
static void MakeCzechTownName(StringBuilder &builder, uint32_t seed)
Generates Czech town name from given seed.
Definition townname.cpp:583
static void MakeGermanTownName(StringBuilder &builder, uint32_t seed)
Generates German town name from given seed.
Definition townname.cpp:354
static void MakeDanishTownName(StringBuilder &builder, uint32_t seed)
Generates Danish town name from given seed.
Definition townname.cpp:829
static void MakeEnglishOriginalTownName(StringBuilder &builder, uint32_t seed)
Generates English (Original) town name from given seed.
Definition townname.cpp:251
static void MakeEnglishAdditionalTownName(StringBuilder &builder, uint32_t seed)
Generates English (Additional) town name from given seed.
Definition townname.cpp:278
static void MakeFinnishTownName(StringBuilder &builder, uint32_t seed)
Generates Finnish town name from given seed.
Definition townname.cpp:475
static void MakeSpanishTownName(StringBuilder &builder, uint32_t seed)
Generates Latin-American town name from given seed.
Definition townname.cpp:394
static void MakeRomanianTownName(StringBuilder &builder, uint32_t seed)
Generates Romanian town name from given seed.
Definition townname.cpp:746
static void MakeSillyTownName(StringBuilder &builder, uint32_t seed)
Generates Silly town name from given seed.
Definition townname.cpp:416
static void MakeTurkishTownName(StringBuilder &builder, uint32_t seed)
Generates Turkish town name from given seed.
Definition townname.cpp:846
static void MakeDutchTownName(StringBuilder &builder, uint32_t seed)
Generates Dutch town name from given seed.
Definition townname.cpp:452
static void MakeSwissTownName(StringBuilder &builder, uint32_t seed)
Generates Swiss town name from given seed.
Definition townname.cpp:818
static void MakeAustrianTownName(StringBuilder &builder, uint32_t seed)
Generates Austrian town name from given seed.
Definition townname.cpp:313

Town name generators.

Definition at line 964 of file townname.cpp.

Referenced by GenerateTownNameString().