Codechange: turn a constant variable into a real constant.

This commit is contained in:
frosch 2021-01-12 22:11:12 +01:00 committed by frosch
parent d17226910d
commit 4ce941bbc2
3 changed files with 15 additions and 18 deletions

View File

@ -17,6 +17,7 @@
#include "town.h"
#include "settings_internal.h"
#include "newgrf_townname.h"
#include "townname_type.h"
#include "strings_func.h"
#include "window_func.h"
#include "string_func.h"
@ -73,7 +74,6 @@ static const StringID _font_zoom_dropdown[] = {
INVALID_STRING_ID,
};
int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1; ///< Number of original town names.
static StringID *_grf_names = nullptr; ///< Pointer to town names defined by NewGRFs.
static int _nb_grf_names = 0; ///< Number of town names defined by NewGRFs.
@ -97,8 +97,8 @@ void InitGRFTownGeneratorNames()
*/
static inline StringID TownName(int town_name)
{
if (town_name < _nb_orig_names) return STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + town_name;
town_name -= _nb_orig_names;
if (town_name < BUILTIN_TOWNNAME_GENERATOR_COUNT) return STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + town_name;
town_name -= BUILTIN_TOWNNAME_GENERATOR_COUNT;
if (town_name < _nb_grf_names) return _grf_names[town_name];
return STR_UNDEFINED;
}
@ -245,7 +245,7 @@ struct GameOptionsWindow : Window {
/* Add and sort newgrf townnames generators */
for (int i = 0; i < _nb_grf_names; i++) {
int result = _nb_orig_names + i;
int result = BUILTIN_TOWNNAME_GENERATOR_COUNT + i;
list.emplace_back(new DropDownListStringItem(_grf_names[i], result, enabled_item != result && enabled_item >= 0));
}
std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc);
@ -258,7 +258,7 @@ struct GameOptionsWindow : Window {
}
/* Add and sort original townnames generators */
for (int i = 0; i < _nb_orig_names; i++) {
for (int i = 0; i < BUILTIN_TOWNNAME_GENERATOR_COUNT; i++) {
list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i, i, enabled_item != i && enabled_item >= 0));
}
std::sort(list.begin() + newgrf_size, list.end(), DropDownListStringItem::NatSortFunc);

View File

@ -1841,15 +1841,10 @@ static void DoCreateTown(Town *t, TileIndex tile, uint32 townnameparts, TownSize
t->exclusive_counter = 0;
t->statues = 0;
extern int _nb_orig_names;
if (_settings_game.game_creation.town_name < _nb_orig_names) {
/* Original town name */
t->townnamegrfid = 0;
t->townnametype = SPECSTR_TOWNNAME_START + _settings_game.game_creation.town_name;
} else {
/* Newgrf town name */
t->townnamegrfid = GetGRFTownNameId(_settings_game.game_creation.town_name - _nb_orig_names);
t->townnametype = GetGRFTownNameType(_settings_game.game_creation.town_name - _nb_orig_names);
{
TownNameParams tnp(_settings_game.game_creation.town_name);
t->townnamegrfid = tnp.grfid;
t->townnametype = tnp.type;
}
t->townnameparts = townnameparts;

View File

@ -15,11 +15,14 @@
#include "newgrf_townname.h"
#include "town_type.h"
#include "string_type.h"
#include <set>
#include <string>
typedef std::set<std::string> TownNames;
static constexpr uint BUILTIN_TOWNNAME_GENERATOR_COUNT = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1; ///< Number of built-in town name generators.
/**
* Struct holding parameters used to generate town name.
* Speeds things up a bit because these values are computed only once per name generation.
@ -34,10 +37,9 @@ struct TownNameParams {
*/
TownNameParams(byte town_name)
{
extern int _nb_orig_names;
bool grf = town_name >= _nb_orig_names;
this->grfid = grf ? GetGRFTownNameId(town_name - _nb_orig_names) : 0;
this->type = grf ? GetGRFTownNameType(town_name - _nb_orig_names) : SPECSTR_TOWNNAME_START + town_name;
bool grf = town_name >= BUILTIN_TOWNNAME_GENERATOR_COUNT;
this->grfid = grf ? GetGRFTownNameId(town_name - BUILTIN_TOWNNAME_GENERATOR_COUNT) : 0;
this->type = grf ? GetGRFTownNameType(town_name - BUILTIN_TOWNNAME_GENERATOR_COUNT) : SPECSTR_TOWNNAME_START + town_name;
}
TownNameParams(const Town *t);