Codechange: simplify president name generation

This commit is contained in:
Rubidium 2024-04-10 06:51:11 +02:00 committed by rubidium42
parent 1b4bb1d38a
commit 21b640b5ff
1 changed files with 27 additions and 33 deletions

View File

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