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 :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_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
|
###length 4
|
||||||
STR_VIEWPORT_TOWN_COLOUR :{1:COLOUR}{0:TOWN}
|
STR_VIEWPORT_TOWN_COLOUR :{1:COLOUR}{0:TOWN}
|
||||||
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {COLOUR}({COMMA})
|
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_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_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_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.
|
RM_END, ///< End for iteration.
|
||||||
};
|
};
|
||||||
DECLARE_POSTFIX_INCREMENT(RestrictionMode)
|
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_BASIC) return (this->setting->cat & SC_BASIC_LIST) != 0;
|
||||||
if (mode == RM_ADVANCED) return (this->setting->cat & SC_ADVANCED_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. */
|
/* Read the current value. */
|
||||||
const void *object = ResolveObject(&GetGameSettings(), sd);
|
const void *object = ResolveObject(&GetGameSettings(), sd);
|
||||||
@@ -1436,6 +1438,7 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible)
|
|||||||
visible = false;
|
visible = false;
|
||||||
}
|
}
|
||||||
if (!this->IsVisibleByRestrictionMode(filter.mode)) {
|
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++;
|
while (filter.min_cat < RM_ALL && (filter.min_cat == filter.mode || !this->IsVisibleByRestrictionMode(filter.min_cat))) filter.min_cat++;
|
||||||
visible = false;
|
visible = false;
|
||||||
}
|
}
|
||||||
@@ -2527,6 +2530,7 @@ static const StringID _game_settings_restrict_dropdown[] = {
|
|||||||
STR_CONFIG_SETTING_RESTRICT_ALL, // RM_ALL
|
STR_CONFIG_SETTING_RESTRICT_ALL, // RM_ALL
|
||||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT, // RM_CHANGED_AGAINST_DEFAULT
|
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_CHANGED_AGAINST_NEW, // RM_CHANGED_AGAINST_NEW
|
||||||
|
STR_CONFIG_SETTING_RESTRICT_PATCH, // RM_PATCH
|
||||||
};
|
};
|
||||||
static_assert(lengthof(_game_settings_restrict_dropdown) == RM_END);
|
static_assert(lengthof(_game_settings_restrict_dropdown) == RM_END);
|
||||||
|
|
||||||
@@ -3100,14 +3104,14 @@ struct GameSettingsWindow : Window {
|
|||||||
if (!gui_scope) return;
|
if (!gui_scope) return;
|
||||||
|
|
||||||
/* Update which settings are to be visible. */
|
/* 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.min_cat = min_level;
|
||||||
this->filter.type_hides = false;
|
this->filter.type_hides = false;
|
||||||
GetSettingsTree().UpdateFilterState(this->filter, false);
|
GetSettingsTree().UpdateFilterState(this->filter, false);
|
||||||
|
|
||||||
if (this->filter.string.IsEmpty()) {
|
if (this->filter.string.IsEmpty()) {
|
||||||
this->warn_missing = WHR_NONE;
|
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;
|
this->warn_missing = this->filter.type_hides ? WHR_CATEGORY_TYPE : WHR_CATEGORY;
|
||||||
} else {
|
} else {
|
||||||
this->warn_missing = this->filter.type_hides ? WHR_TYPE : WHR_NONE;
|
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_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_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_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 */
|
/* Setting classification */
|
||||||
SC_BASIC = SC_BASIC_LIST | SC_ADVANCED_LIST | SC_EXPERT_LIST, ///< Basic settings are part of all lists.
|
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_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_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,
|
SC_END,
|
||||||
};
|
};
|
||||||
|
DECLARE_ENUM_AS_BIT_SET(SettingCategory)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of settings for filtering.
|
* Type of settings for filtering.
|
||||||
|
@@ -16,8 +16,8 @@ static const SettingTable _company_settings{
|
|||||||
[post-amble]
|
[post-amble]
|
||||||
};
|
};
|
||||||
[templates]
|
[templates]
|
||||||
SDT_BOOL = SDT_BOOL(CompanySettings, $var, $flags, $def, $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, $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),
|
SDT_NULL = SDT_NULL($length, $from, $to, $extver),
|
||||||
|
|
||||||
[validation]
|
[validation]
|
||||||
@@ -36,6 +36,7 @@ load = nullptr
|
|||||||
from = SL_MIN_VERSION
|
from = SL_MIN_VERSION
|
||||||
to = SL_MAX_VERSION
|
to = SL_MAX_VERSION
|
||||||
cat = SC_ADVANCED
|
cat = SC_ADVANCED
|
||||||
|
patchcat = SC_NONE
|
||||||
startup = false
|
startup = false
|
||||||
extver = SlXvFeatureTest()
|
extver = SlXvFeatureTest()
|
||||||
patxname = nullptr
|
patxname = nullptr
|
||||||
@@ -150,6 +151,7 @@ flags = SF_PER_COMPANY
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT
|
str = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT
|
||||||
strhelp = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT_HELPTEXT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""vehicle.auto_timetable_by_default""
|
patxname = ""vehicle.auto_timetable_by_default""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -159,6 +161,7 @@ flags = SF_PER_COMPANY
|
|||||||
def = true
|
def = true
|
||||||
str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT
|
str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT
|
||||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_BY_DEFAULT_HELPTEXT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""vehicle.auto_separation_by_default""
|
patxname = ""vehicle.auto_separation_by_default""
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
@@ -174,6 +177,7 @@ str = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE
|
|||||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_TIMETABLE_SEPARATION_RATE_HELPTEXT
|
||||||
strval = STR_CONFIG_SETTING_PERCENTAGE
|
strval = STR_CONFIG_SETTING_PERCENTAGE
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""auto_timetable_separation_rate""
|
patxname = ""auto_timetable_separation_rate""
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
@@ -189,6 +193,7 @@ str = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS
|
|||||||
strhelp = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_HELPTEXT
|
||||||
strval = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_VALUE
|
strval = STR_CONFIG_SETTING_TIMETABLE_AUTOFILL_ROUNDING_TICKS_VALUE
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""timetable_autofill_rounding""
|
patxname = ""timetable_autofill_rounding""
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
@@ -204,6 +209,7 @@ str = STR_CONFIG_OCCUPANCY_SMOOTHNESS
|
|||||||
strhelp = STR_CONFIG_OCCUPANCY_SMOOTHNESS_HELPTEXT
|
strhelp = STR_CONFIG_OCCUPANCY_SMOOTHNESS_HELPTEXT
|
||||||
strval = STR_CONFIG_SETTING_PERCENTAGE
|
strval = STR_CONFIG_SETTING_PERCENTAGE
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""order_occupancy_smoothness""
|
patxname = ""order_occupancy_smoothness""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -212,6 +218,7 @@ var = infra_others_buy_in_depot[0]
|
|||||||
flags = SF_PER_COMPANY
|
flags = SF_PER_COMPANY
|
||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_RAIL
|
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_RAIL
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""infra_sharing.infra_others_buy_in_depot.rail""
|
patxname = ""infra_sharing.infra_others_buy_in_depot.rail""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -220,6 +227,7 @@ var = infra_others_buy_in_depot[1]
|
|||||||
flags = SF_PER_COMPANY
|
flags = SF_PER_COMPANY
|
||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_ROAD
|
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_ROAD
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""infra_sharing.infra_others_buy_in_depot.road""
|
patxname = ""infra_sharing.infra_others_buy_in_depot.road""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -228,6 +236,7 @@ var = infra_others_buy_in_depot[2]
|
|||||||
flags = SF_PER_COMPANY
|
flags = SF_PER_COMPANY
|
||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_WATER
|
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_WATER
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""infra_sharing.infra_others_buy_in_depot.water""
|
patxname = ""infra_sharing.infra_others_buy_in_depot.water""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -236,6 +245,7 @@ var = infra_others_buy_in_depot[3]
|
|||||||
flags = SF_PER_COMPANY
|
flags = SF_PER_COMPANY
|
||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_AIR
|
str = STR_CONFIG_SETTING_INFRA_OTHERS_BUY_IN_DEPOT_AIR
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""infra_sharing.infra_others_buy_in_depot.air""
|
patxname = ""infra_sharing.infra_others_buy_in_depot.air""
|
||||||
|
|
||||||
|
|
||||||
@@ -246,6 +256,7 @@ flags = SF_PER_COMPANY
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE
|
str = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE
|
||||||
strhelp = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_ADVANCE_ORDER_ON_CLONE_HELPTEXT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""advance_order_on_clone""
|
patxname = ""advance_order_on_clone""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -255,6 +266,7 @@ flags = SF_PER_COMPANY
|
|||||||
def = true
|
def = true
|
||||||
str = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP
|
str = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP
|
||||||
strhelp = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_COPY_CLONE_ADD_TO_GROUP_HELPTEXT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""copy_clone_add_to_group""
|
patxname = ""copy_clone_add_to_group""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -264,6 +276,7 @@ flags = SF_PER_COMPANY
|
|||||||
def = true
|
def = true
|
||||||
str = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION
|
str = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION
|
||||||
strhelp = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_REMAIN_IF_NEXT_ORDER_SAME_STATION_HELPTEXT
|
||||||
|
patchcat = SC_PATCH
|
||||||
patxname = ""remain_if_next_order_same_station""
|
patxname = ""remain_if_next_order_same_station""
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user