diff --git a/scripts/settings/settings_config.dsc b/scripts/settings/settings_config.dsc index 2d157f3..863fc9c 100644 --- a/scripts/settings/settings_config.dsc +++ b/scripts/settings/settings_config.dsc @@ -5,13 +5,13 @@ settings_config: - General - Miscellaneous keys: - example1.key: + example1_key: tab: General name: example1 setting key description: example1 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... type: boolean default: true - example2.key: + example2_key: tab: General name: example2 setting key description: example2 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... @@ -20,7 +20,7 @@ settings_config: min: 0 max: 10 increment: 0.5 - example3.key: + example3_key: tab: Miscellaneous name: example3 setting key description: example3 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... @@ -30,7 +30,7 @@ settings_config: - male - female - prefer not to say - example4.key: + example4_key: tab: Miscellaneous name: example4 setting key description: example4 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... @@ -38,3 +38,27 @@ settings_config: default: text max-length: 64 regex: [a-z] + example5_key: + tab: Miscellaneous + name: example5 setting key + description: example5 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... + type: text + default: text + max-length: 64 + regex: [a-z] + example6_key: + tab: Miscellaneous + name: example6 setting key + description: example6 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... + type: text + default: text + max-length: 64 + regex: [a-z] + example7_key: + tab: Miscellaneous + name: example7 setting key + description: example7 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... + type: text + default: text + max-length: 64 + regex: [a-z] diff --git a/scripts/settings/settings_tasks.dsc b/scripts/settings/settings_tasks.dsc index 89cc173..ef051dc 100644 --- a/scripts/settings/settings_tasks.dsc +++ b/scripts/settings/settings_tasks.dsc @@ -47,3 +47,82 @@ settings_get: - define settings <[player].flag[settings].if_null[]> - define value <[settings].get[<[key]>].if_null[<[keys].get[<[key]>].get[default]>]> - determine <[value]> + +settings_all_settings_from_tab: + debug: false + type: procedure + definitions: tab + script: + - define keys + - define keys_in_tab <[keys].keys.filter_tag[<[keys].get[<[filter_value]>].get[tab].equals[<[tab]>]>]> + - determine <[keys_in_tab]> + +settings_all_settings_from_page_from_tab: + debug: false + type: procedure + definitions: tab|page + script: + - define keys_in_tab ]> + - define start_index <[page].mul[4].add[1]> + - define end_index <[page].add[1].mul[4]> + - determine <[keys_in_tab].get[<[start_index]>].to[<[end_index]>]> + +settings_menu_is_last_page: + debug: false + type: procedure + definitions: tab|page + script: + - define keys_in_tab ]> + - define end_index <[page].add[1].mul[4]> + - determine <[end_index].is_more_than_or_equal_to[<[keys_in_tab].size>]> + +settings_menu: + debug: false + type: task + definitions: player|tab|page + script: + - define keys + - define tabs + - define tab <[tab].if_null[<[tabs].get[1]>]> + - define page <[page].if_null[0]> + - define contents + - if <[page]> > 0: + - define previous_button <<><<>]]> + - definemap content_entry: + 49: + item: <[previous_button]> + script: settings_menu + definitions: + player: <[player]> + tab: <[tab]> + page: <[page].sub[1]> + - define contents <[contents].include[<[content_entry]>]> + - if !|<[page]>]>: + - define next_button <>><>>]]> + - definemap content_entry: + 51: + item: <[next_button]> + script: settings_menu + definitions: + player: <[player]> + tab: <[tab]> + page: <[page].add[1]> + - define contents <[contents].include[<[content_entry]>]> + - foreach <[tabs]> as:t: + - define tab_button <[t]>]]> + - definemap content_entry_value: + item: <[tab_button]> + script: settings_menu + definitions: + player: <[player]> + tab: <[t]> + page: 0 + - define content_entry ].as[<[content_entry_value]>]> + - define contents <[contents].include[<[content_entry]>]> + - foreach |<[page]>]> as:setting_key: + - define setting_item <[keys].get[<[setting_key]>].get[name]>]]> + - definemap content_entry_value: + item: <[setting_item]> + - define content_entry ].as[<[content_entry_value]>]> + - define contents <[contents].include[<[content_entry]>]> + - run menu_open def.player:<[player]> def.title:Settings def.size:54 def.contents:<[contents]>