mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: simplify president name generation
This commit is contained in:
parent
1b4bb1d38a
commit
21b640b5ff
|
@ -1802,55 +1802,49 @@ static const char _initial_name_letters[] = {
|
||||||
'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W',
|
'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W',
|
||||||
};
|
};
|
||||||
|
|
||||||
static void GenAndCoName(StringBuilder &builder, uint32_t arg)
|
static std::span<const char * const> GetSurnameOptions()
|
||||||
{
|
{
|
||||||
const char * const *base;
|
if (_settings_game.game_creation.landscape == LT_TOYLAND) return _silly_surname_list;
|
||||||
uint num;
|
return _surname_list;
|
||||||
|
}
|
||||||
|
|
||||||
if (_settings_game.game_creation.landscape == LT_TOYLAND) {
|
/**
|
||||||
base = _silly_surname_list;
|
* Get the surname of the president with the given seed.
|
||||||
num = lengthof(_silly_surname_list);
|
* @param seed The seed the surname was generated from.
|
||||||
} else {
|
* @return The surname.
|
||||||
base = _surname_list;
|
*/
|
||||||
num = lengthof(_surname_list);
|
static const char *GetSurname(uint32_t seed)
|
||||||
}
|
{
|
||||||
|
auto surname_options = GetSurnameOptions();
|
||||||
|
return surname_options[surname_options.size() * GB(seed, 16, 8) >> 8];
|
||||||
|
}
|
||||||
|
|
||||||
builder += base[num * GB(arg, 16, 8) >> 8];
|
static void GenAndCoName(StringBuilder &builder, uint32_t seed)
|
||||||
|
{
|
||||||
|
builder += GetSurname(seed);
|
||||||
builder += " & Co.";
|
builder += " & Co.";
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GenPresidentName(StringBuilder &builder, uint32_t x)
|
static void GenPresidentName(StringBuilder &builder, uint32_t seed)
|
||||||
{
|
{
|
||||||
char initial[] = "?. ";
|
builder += _initial_name_letters[std::size(_initial_name_letters) * GB(seed, 0, 8) >> 8];
|
||||||
const char * const *base;
|
builder += ". ";
|
||||||
uint num;
|
|
||||||
uint i;
|
|
||||||
|
|
||||||
initial[0] = _initial_name_letters[sizeof(_initial_name_letters) * GB(x, 0, 8) >> 8];
|
/* The second initial is optional. */
|
||||||
builder += initial;
|
size_t index = (std::size(_initial_name_letters) + 35) * GB(seed, 8, 8) >> 8;
|
||||||
|
if (index < std::size(_initial_name_letters)) {
|
||||||
i = (sizeof(_initial_name_letters) + 35) * GB(x, 8, 8) >> 8;
|
builder += _initial_name_letters[index];
|
||||||
if (i < sizeof(_initial_name_letters)) {
|
builder += ". ";
|
||||||
initial[0] = _initial_name_letters[i];
|
|
||||||
builder += initial;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_settings_game.game_creation.landscape == LT_TOYLAND) {
|
builder += GetSurname(seed);
|
||||||
base = _silly_surname_list;
|
|
||||||
num = lengthof(_silly_surname_list);
|
|
||||||
} else {
|
|
||||||
base = _surname_list;
|
|
||||||
num = lengthof(_surname_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
builder += base[num * GB(x, 16, 8) >> 8];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters &args)
|
static void GetSpecialNameString(StringBuilder &builder, int ind, StringParameters &args)
|
||||||
{
|
{
|
||||||
switch (ind) {
|
switch (ind) {
|
||||||
case 1: // not used
|
case 1: // not used
|
||||||
builder += _silly_company_names[std::min<uint>(args.GetNextParameter<uint16_t>(), lengthof(_silly_company_names) - 1)];
|
builder += _silly_company_names[std::min<size_t>(args.GetNextParameter<uint16_t>(), std::size(_silly_company_names) - 1)];
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 2: // used for Foobar & Co company names
|
case 2: // used for Foobar & Co company names
|
||||||
|
|
Loading…
Reference in New Issue