Settings GUI: Add flag to mark a setting as should be left at default
This commit is contained in:
@@ -1243,6 +1243,8 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (
|
|||||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games)
|
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games)
|
||||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company)
|
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company)
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_ADVISED_LEAVE_DEFAULT :You are advised to leave this setting at the default value
|
||||||
|
|
||||||
STR_CONFIG_SETTINGS_NONE :{WHITE}- None -
|
STR_CONFIG_SETTINGS_NONE :{WHITE}- None -
|
||||||
###length 3
|
###length 3
|
||||||
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING}
|
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING}
|
||||||
|
@@ -1361,7 +1361,14 @@ void SettingEntry::DrawSettingString(uint left, uint right, int y, bool highligh
|
|||||||
{
|
{
|
||||||
std::unique_ptr<SettingEntry::SetValueDParamsTempData> tempdata;
|
std::unique_ptr<SettingEntry::SetValueDParamsTempData> tempdata;
|
||||||
this->SetValueDParams(1, value, tempdata);
|
this->SetValueDParams(1, value, tempdata);
|
||||||
DrawString(left, right, y, this->setting->str, highlight ? TC_WHITE : TC_LIGHT_BLUE);
|
int edge = DrawString(left, right, y, this->setting->str, highlight ? TC_WHITE : TC_LIGHT_BLUE);
|
||||||
|
if (this->setting->flags & SF_GUI_ADVISE_DEFAULT && value != this->setting->def && edge != 0) {
|
||||||
|
const Dimension warning_dimensions = GetSpriteSize(SPR_WARNING_SIGN);
|
||||||
|
if ((int)warning_dimensions.height <= SETTING_HEIGHT) {
|
||||||
|
DrawSprite(SPR_WARNING_SIGN, 0, (_current_text_dir == TD_RTL) ? edge - warning_dimensions.width - 5 : edge + 5,
|
||||||
|
y + (((int)FONT_HEIGHT_NORMAL - (int)warning_dimensions.height) / 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* == CargoDestPerCargoSettingEntry methods == */
|
/* == CargoDestPerCargoSettingEntry methods == */
|
||||||
@@ -2515,6 +2522,26 @@ struct GameSettingsWindow : Window {
|
|||||||
DrawString(r.left, r.right, y, STR_CONFIG_SETTING_DEFAULT_VALUE);
|
DrawString(r.left, r.right, y, STR_CONFIG_SETTING_DEFAULT_VALUE);
|
||||||
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
|
y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
|
||||||
|
|
||||||
|
if (sd->flags & SF_GUI_ADVISE_DEFAULT) {
|
||||||
|
const Dimension warning_dimensions = GetSpriteSize(SPR_WARNING_SIGN);
|
||||||
|
const int step_height = std::max<int>(warning_dimensions.height, FONT_HEIGHT_NORMAL);
|
||||||
|
const int text_offset_y = (step_height - FONT_HEIGHT_NORMAL) / 2;
|
||||||
|
const int warning_offset_y = (step_height - warning_dimensions.height) / 2;
|
||||||
|
const bool rtl = _current_text_dir == TD_RTL;
|
||||||
|
|
||||||
|
int left = r.left;
|
||||||
|
int right = r.right;
|
||||||
|
DrawSprite(SPR_WARNING_SIGN, 0, rtl ? right - warning_dimensions.width - 5 : left + 5, y + warning_offset_y);
|
||||||
|
if (rtl) {
|
||||||
|
right -= (warning_dimensions.width + 10);
|
||||||
|
} else {
|
||||||
|
left += (warning_dimensions.width + 10);
|
||||||
|
}
|
||||||
|
DrawString(left, right, y + text_offset_y, STR_CONFIG_SETTING_ADVISED_LEAVE_DEFAULT, TC_RED);
|
||||||
|
|
||||||
|
y += step_height + WD_PAR_VSEP_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
DrawStringMultiLine(r.left, r.right, y, r.bottom, this->last_clicked->GetHelpText(), TC_WHITE);
|
DrawStringMultiLine(r.left, r.right, y, r.bottom, this->last_clicked->GetHelpText(), TC_WHITE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@@ -33,6 +33,7 @@ enum SettingFlag : uint32 {
|
|||||||
SF_DEC1SCALE = 1 << 16, ///< also display a float representation of the scale of a decimal1 scale parameter
|
SF_DEC1SCALE = 1 << 16, ///< also display a float representation of the scale of a decimal1 scale parameter
|
||||||
SF_RUN_CALLBACKS_ON_PARSE = 1 << 17, ///< run callbacks when parsing from config file
|
SF_RUN_CALLBACKS_ON_PARSE = 1 << 17, ///< run callbacks when parsing from config file
|
||||||
SF_GUI_VELOCITY = 1 << 18, ///< setting value is a velocity
|
SF_GUI_VELOCITY = 1 << 18, ///< setting value is a velocity
|
||||||
|
SF_GUI_ADVISE_DEFAULT = 1 << 19, ///< Advise the user to leave this setting at its default value
|
||||||
};
|
};
|
||||||
DECLARE_ENUM_AS_BIT_SET(SettingFlag)
|
DECLARE_ENUM_AS_BIT_SET(SettingFlag)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user