|
@@ -843,7 +843,7 @@ struct SettingEntry : BaseSettingEntry {
|
|
|
*/
|
|
|
inline StringID GetHelpText() const
|
|
|
{
|
|
|
return this->setting->desc.str_help;
|
|
|
return this->setting->str_help;
|
|
|
}
|
|
|
|
|
|
void SetValueDParams(uint first_param, int32 value) const;
|
|
@@ -1036,7 +1036,7 @@ void SettingEntry::Init(byte level)
|
|
|
/* Sets the given setting entry to its default value */
|
|
|
void SettingEntry::ResetAll()
|
|
|
{
|
|
|
int32 default_value = ReadValue(&this->setting->desc.def, this->setting->save.conv);
|
|
|
int32 default_value = ReadValue(&this->setting->def, this->setting->save.conv);
|
|
|
SetSettingValue(this->setting, default_value);
|
|
|
}
|
|
|
|
|
@@ -1080,8 +1080,8 @@ bool SettingEntry::IsVisibleByRestrictio
|
|
|
GameSettings *settings_ptr = &GetGameSettings();
|
|
|
const SettingDesc *sd = this->setting;
|
|
|
|
|
|
if (mode == RM_BASIC) return (this->setting->desc.cat & SC_BASIC_LIST) != 0;
|
|
|
if (mode == RM_ADVANCED) return (this->setting->desc.cat & SC_ADVANCED_LIST) != 0;
|
|
|
if (mode == RM_BASIC) return (this->setting->cat & SC_BASIC_LIST) != 0;
|
|
|
if (mode == RM_ADVANCED) return (this->setting->cat & SC_ADVANCED_LIST) != 0;
|
|
|
|
|
|
/* Read the current value. */
|
|
|
const void *var = ResolveVariableAddress(settings_ptr, sd);
|
|
@@ -1093,7 +1093,7 @@ bool SettingEntry::IsVisibleByRestrictio
|
|
|
/* This entry shall only be visible, if the value deviates from its default value. */
|
|
|
|
|
|
/* Read the default value. */
|
|
|
filter_value = ReadValue(&sd->desc.def, sd->save.conv);
|
|
|
filter_value = ReadValue(&sd->def, sd->save.conv);
|
|
|
} else {
|
|
|
assert(mode == RM_CHANGED_AGAINST_NEW);
|
|
|
/* This entry shall only be visible, if the value deviates from
|
|
@@ -1127,7 +1127,7 @@ bool SettingEntry::UpdateFilterState(Set
|
|
|
/* Process the search text filter for this item. */
|
|
|
filter.string.ResetState();
|
|
|
|
|
|
const SettingDescBase *sdb = &sd->desc;
|
|
|
const SettingDescBase *sdb = sd;
|
|
|
|
|
|
SetDParam(0, STR_EMPTY);
|
|
|
filter.string.AddLine(sdb->str);
|
|
@@ -1153,7 +1153,7 @@ bool SettingEntry::UpdateFilterState(Set
|
|
|
|
|
|
static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd)
|
|
|
{
|
|
|
if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
|
|
|
if ((sd->flags & SGF_PER_COMPANY) != 0) {
|
|
|
if (Company::IsValidID(_local_company) && _game_mode != GM_MENU) {
|
|
|
return GetVariableAddress(&Company::Get(_local_company)->settings, &sd->save);
|
|
|
} else {
|
|
@@ -1171,7 +1171,7 @@ static const void *ResolveVariableAddres
|
|
|
*/
|
|
|
void SettingEntry::SetValueDParams(uint first_param, int32 value) const
|
|
|
{
|
|
|
const SettingDescBase *sdb = &this->setting->desc;
|
|
|
const SettingDescBase *sdb = this->setting;
|
|
|
if (sdb->cmd == SDT_BOOLX) {
|
|
|
SetDParam(first_param++, value != 0 ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF);
|
|
|
} else {
|
|
@@ -1198,7 +1198,7 @@ void SettingEntry::SetValueDParams(uint
|
|
|
void SettingEntry::DrawSetting(GameSettings *settings_ptr, int left, int right, int y, bool highlight) const
|
|
|
{
|
|
|
const SettingDesc *sd = this->setting;
|
|
|
const SettingDescBase *sdb = &sd->desc;
|
|
|
const SettingDescBase *sdb = sd;
|
|
|
const void *var = ResolveVariableAddress(settings_ptr, sd);
|
|
|
int state = this->flags & SEF_BUTTONS_MASK;
|
|
|
|
|
@@ -2091,7 +2091,7 @@ struct GameSettingsWindow : Window {
|
|
|
DrawString(r.left, r.right, y, STR_CONFIG_SETTING_TYPE);
|
|
|
y += FONT_HEIGHT_NORMAL;
|
|
|
|
|
|
int32 default_value = ReadValue(&sd->desc.def, sd->save.conv);
|
|
|
int32 default_value = ReadValue(&sd->def, sd->save.conv);
|
|
|
this->last_clicked->SetValueDParams(0, default_value);
|
|
|
DrawString(r.left, r.right, y, STR_CONFIG_SETTING_DEFAULT_VALUE);
|
|
|
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
|
|
@@ -2195,8 +2195,8 @@ struct GameSettingsWindow : Window {
|
|
|
int32 value = (int32)ReadValue(var, sd->save.conv);
|
|
|
|
|
|
/* clicked on the icon on the left side. Either scroller, bool on/off or dropdown */
|
|
|
if (x < SETTING_BUTTON_WIDTH && (sd->desc.flags & SGF_MULTISTRING)) {
|
|
|
const SettingDescBase *sdb = &sd->desc;
|
|
|
if (x < SETTING_BUTTON_WIDTH && (sd->flags & SGF_MULTISTRING)) {
|
|
|
const SettingDescBase *sdb = sd;
|
|
|
this->SetDisplayedHelpText(pe);
|
|
|
|
|
|
if (this->valuedropdown_entry == pe) {
|
|
@@ -2234,7 +2234,7 @@ struct GameSettingsWindow : Window {
|
|
|
this->SetDirty();
|
|
|
} else if (x < SETTING_BUTTON_WIDTH) {
|
|
|
this->SetDisplayedHelpText(pe);
|
|
|
const SettingDescBase *sdb = &sd->desc;
|
|
|
const SettingDescBase *sdb = sd;
|
|
|
int32 oldvalue = value;
|
|
|
|
|
|
switch (sdb->cmd) {
|
|
@@ -2291,10 +2291,10 @@ struct GameSettingsWindow : Window {
|
|
|
}
|
|
|
} else {
|
|
|
/* Only open editbox if clicked for the second time, and only for types where it is sensible for. */
|
|
|
if (this->last_clicked == pe && sd->desc.cmd != SDT_BOOLX && !(sd->desc.flags & SGF_MULTISTRING)) {
|
|
|
if (this->last_clicked == pe && sd->cmd != SDT_BOOLX && !(sd->flags & SGF_MULTISTRING)) {
|
|
|
int64 value64 = value;
|
|
|
/* Show the correct currency-translated value */
|
|
|
if (sd->desc.flags & SGF_CURRENCY) value64 *= _currency->rate;
|
|
|
if (sd->flags & SGF_CURRENCY) value64 *= _currency->rate;
|
|
|
|
|
|
this->valuewindow_entry = pe;
|
|
|
SetDParam(0, value64);
|
|
@@ -2327,11 +2327,11 @@ struct GameSettingsWindow : Window {
|
|
|
long long llvalue = atoll(str);
|
|
|
|
|
|
/* Save the correct currency-translated value */
|
|
|
if (sd->desc.flags & SGF_CURRENCY) llvalue /= _currency->rate;
|
|
|
if (sd->flags & SGF_CURRENCY) llvalue /= _currency->rate;
|
|
|
|
|
|
value = (int32)ClampToI32(llvalue);
|
|
|
} else {
|
|
|
value = (int32)(size_t)sd->desc.def;
|
|
|
value = (int32)(size_t)sd->def;
|
|
|
}
|
|
|
|
|
|
SetSettingValue(this->valuewindow_entry->setting, value);
|
|
@@ -2368,7 +2368,7 @@ struct GameSettingsWindow : Window {
|
|
|
/* Deal with drop down boxes on the panel. */
|
|
|
assert(this->valuedropdown_entry != nullptr);
|
|
|
const SettingDesc *sd = this->valuedropdown_entry->setting;
|
|
|
assert(sd->desc.flags & SGF_MULTISTRING);
|
|
|
assert(sd->flags & SGF_MULTISTRING);
|
|
|
|
|
|
SetSettingValue(sd, index);
|
|
|
this->SetDirty();
|