Add settings filter to only show non-vanilla settings
This commit is contained in:
@@ -2192,6 +2192,8 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :Detailed
|
||||
STR_CONFIG_SETTING_CITY_IN_LABEL :Show city in town name label: {STRING2}
|
||||
STR_CONFIG_SETTING_CITY_IN_LABEL_HELPTEXT :Display if a town is also a city in their label on the map
|
||||
|
||||
STR_CONFIG_SETTING_RESTRICT_PATCH :Non-standard settings which are not in vanilla OpenTTD
|
||||
|
||||
###length 4
|
||||
STR_VIEWPORT_TOWN_COLOUR :{1:COLOUR}{0:TOWN}
|
||||
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {COLOUR}({COMMA})
|
||||
|
@@ -1021,6 +1021,7 @@ enum RestrictionMode {
|
||||
RM_ALL, ///< List all settings regardless of the default/newgame/... values.
|
||||
RM_CHANGED_AGAINST_DEFAULT, ///< Show only settings which are different compared to default values.
|
||||
RM_CHANGED_AGAINST_NEW, ///< Show only settings which are different compared to the user's new game setting values.
|
||||
RM_PATCH, ///< Show only "patch" settings which are not in vanilla.
|
||||
RM_END, ///< End for iteration.
|
||||
};
|
||||
DECLARE_POSTFIX_INCREMENT(RestrictionMode)
|
||||
@@ -1376,6 +1377,7 @@ bool SettingEntry::IsVisibleByRestrictionMode(RestrictionMode mode) const
|
||||
|
||||
if (mode == RM_BASIC) return (this->setting->cat & SC_BASIC_LIST) != 0;
|
||||
if (mode == RM_ADVANCED) return (this->setting->cat & SC_ADVANCED_LIST) != 0;
|
||||
if (mode == RM_PATCH) return (this->setting->cat & SC_PATCH_LIST) != 0;
|
||||
|
||||
/* Read the current value. */
|
||||
const void *object = ResolveObject(&GetGameSettings(), sd);
|
||||
@@ -1436,6 +1438,7 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible)
|
||||
visible = false;
|
||||
}
|
||||
if (!this->IsVisibleByRestrictionMode(filter.mode)) {
|
||||
if (filter.mode == RM_PATCH) filter.min_cat = RM_ALL;
|
||||
while (filter.min_cat < RM_ALL && (filter.min_cat == filter.mode || !this->IsVisibleByRestrictionMode(filter.min_cat))) filter.min_cat++;
|
||||
visible = false;
|
||||
}
|
||||
@@ -2527,6 +2530,7 @@ static const StringID _game_settings_restrict_dropdown[] = {
|
||||
STR_CONFIG_SETTING_RESTRICT_ALL, // RM_ALL
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT, // RM_CHANGED_AGAINST_DEFAULT
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW, // RM_CHANGED_AGAINST_NEW
|
||||
STR_CONFIG_SETTING_RESTRICT_PATCH, // RM_PATCH
|
||||
};
|
||||
static_assert(lengthof(_game_settings_restrict_dropdown) == RM_END);
|
||||
|
||||
@@ -3100,14 +3104,14 @@ struct GameSettingsWindow : Window {
|
||||
if (!gui_scope) return;
|
||||
|
||||
/* Update which settings are to be visible. */
|
||||
RestrictionMode min_level = (this->filter.mode <= RM_ALL) ? this->filter.mode : RM_BASIC;
|
||||
RestrictionMode min_level = (this->filter.mode <= RM_ALL || this->filter.mode == RM_PATCH) ? this->filter.mode : RM_BASIC;
|
||||
this->filter.min_cat = min_level;
|
||||
this->filter.type_hides = false;
|
||||
GetSettingsTree().UpdateFilterState(this->filter, false);
|
||||
|
||||
if (this->filter.string.IsEmpty()) {
|
||||
this->warn_missing = WHR_NONE;
|
||||
} else if (min_level < this->filter.min_cat) {
|
||||
} else if (min_level < this->filter.min_cat || (min_level == RM_PATCH && min_level != this->filter.min_cat)) {
|
||||
this->warn_missing = this->filter.type_hides ? WHR_CATEGORY_TYPE : WHR_CATEGORY;
|
||||
} else {
|
||||
this->warn_missing = this->filter.type_hides ? WHR_TYPE : WHR_NONE;
|
||||
|
@@ -62,14 +62,17 @@ enum SettingCategory {
|
||||
SC_BASIC_LIST = 1 << 0, ///< Settings displayed in the list of basic settings.
|
||||
SC_ADVANCED_LIST = 1 << 1, ///< Settings displayed in the list of advanced settings.
|
||||
SC_EXPERT_LIST = 1 << 2, ///< Settings displayed in the list of expert settings.
|
||||
SC_PATCH_LIST = 1 << 3, ///< Settings displayed in the list of non-vanilla settings.
|
||||
|
||||
/* Setting classification */
|
||||
SC_BASIC = SC_BASIC_LIST | SC_ADVANCED_LIST | SC_EXPERT_LIST, ///< Basic settings are part of all lists.
|
||||
SC_ADVANCED = SC_ADVANCED_LIST | SC_EXPERT_LIST, ///< Advanced settings are part of advanced and expert list.
|
||||
SC_EXPERT = SC_EXPERT_LIST, ///< Expert settings can only be seen in the expert list.
|
||||
SC_PATCH = SC_PATCH_LIST, ///< Patch settings which are shown in the patch list.
|
||||
|
||||
SC_END,
|
||||
};
|
||||
DECLARE_ENUM_AS_BIT_SET(SettingCategory)
|
||||
|
||||
/**
|
||||
* Type of settings for filtering.
|
||||
|
@@ -16,8 +16,8 @@ static const SettingTable _company_settings{
|
||||
[post-amble]
|
||||
};
|
||||
[templates]
|
||||
SDT_BOOL = SDT_BOOL(CompanySettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat, $guiproc, $startup, $patxname),
|
||||
SDT_VAR = SDT_VAR(CompanySettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat, $guiproc, $startup, $patxname),
|
||||
SDT_BOOL = SDT_BOOL(CompanySettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
|
||||
SDT_VAR = SDT_VAR(CompanySettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
|
||||
SDT_NULL = SDT_NULL($length, $from, $to, $extver),
|
||||
|
||||
[validation]
|
||||
@@ -36,6 +36,7 @@ load = nullptr
|
||||
from = SL_MIN_VERSION
|
||||
to = SL_MAX_VERSION
|
||||
cat = SC_ADVANCED
|
||||
patchcat = SC_NONE
|
||||
startup = false
|
||||
extver = SlXvFeatureTest()
|
||||
patxname = nullptr
|
||||
@@ -150,6 +151,7 @@ flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT
|
||||
strhelp = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT_HELPTEXT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""vehicle.auto_timetable_by_default""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -159,6 +161,7 @@ flags = SF_PER_COMPANY
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT
|
||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT_HELPTEXT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""vehicle.auto_separation_by_default""
|
||||
|
||||
[SDT_VAR]
|
||||
@@ -174,6 +177,7 @@ str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE
|
||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_PERCENTAGE
|
||||
cat = SC_EXPERT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""auto_timetable_separation_rate""
|
||||
|
||||
[SDT_VAR]
|
||||
@@ -189,6 +193,7 @@ str = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS
|
||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_VALUE
|
||||
cat = SC_EXPERT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""timetable_autofill_rounding""
|
||||
|
||||
[SDT_VAR]
|
||||
@@ -204,6 +209,7 @@ str = STR_CONFIG_OCCUPANCY_SMOOTHNESS
|
||||
strhelp = STR_CONFIG_OCCUPANCY_SMOOTHNESS_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_PERCENTAGE
|
||||
cat = SC_EXPERT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""order_occupancy_smoothness""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -212,6 +218,7 @@ var = infra_others_buy_in_depot[0]
|
||||
flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_RAIL
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""infra_sharing.infra_others_buy_in_depot.rail""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -220,6 +227,7 @@ var = infra_others_buy_in_depot[1]
|
||||
flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_ROAD
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""infra_sharing.infra_others_buy_in_depot.road""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -228,6 +236,7 @@ var = infra_others_buy_in_depot[2]
|
||||
flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_WATER
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""infra_sharing.infra_others_buy_in_depot.water""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -236,6 +245,7 @@ var = infra_others_buy_in_depot[3]
|
||||
flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_AIR
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""infra_sharing.infra_others_buy_in_depot.air""
|
||||
|
||||
|
||||
@@ -246,6 +256,7 @@ flags = SF_PER_COMPANY
|
||||
def = false
|
||||
str = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE
|
||||
strhelp = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE_HELPTEXT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""advance_order_on_clone""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -255,6 +266,7 @@ flags = SF_PER_COMPANY
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP
|
||||
strhelp = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP_HELPTEXT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""copy_clone_add_to_group""
|
||||
|
||||
[SDT_BOOL]
|
||||
@@ -264,6 +276,7 @@ flags = SF_PER_COMPANY
|
||||
def = true
|
||||
str = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION
|
||||
strhelp = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION_HELPTEXT
|
||||
patchcat = SC_PATCH
|
||||
patxname = ""remain_if_next_order_same_station""
|
||||
|
||||
[SDT_VAR]
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user