From 106735a2901b66cc33a277e81a70fc4a1f5f220c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sirger=20T=C3=BCnde-Maria?= <161933192+sirgertunde@users.noreply.github.com> Date: Sun, 30 Nov 2025 01:06:39 +0200 Subject: [PATCH] Done settings get and set --- scripts/settings/settings_config.dsc | 40 +++++++++++++++++++++++ scripts/settings/settings_tasks.dsc | 49 ++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 scripts/settings/settings_config.dsc create mode 100644 scripts/settings/settings_tasks.dsc diff --git a/scripts/settings/settings_config.dsc b/scripts/settings/settings_config.dsc new file mode 100644 index 0000000..2d157f3 --- /dev/null +++ b/scripts/settings/settings_config.dsc @@ -0,0 +1,40 @@ +settings_config: + debug: false + type: data + tabs: + - General + - Miscellaneous + keys: + 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: + tab: General + name: example2 setting key + description: example2 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... + type: number + default: 5 + min: 0 + max: 10 + increment: 0.5 + 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... + type: list + default: male + values: + - male + - female + - prefer not to say + 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... + type: text + default: text + max-length: 64 + regex: [a-z] diff --git a/scripts/settings/settings_tasks.dsc b/scripts/settings/settings_tasks.dsc new file mode 100644 index 0000000..89cc173 --- /dev/null +++ b/scripts/settings/settings_tasks.dsc @@ -0,0 +1,49 @@ +settings_set: + debug: false + type: task + definitions: player|key|value + script: + - define keys + - if !<[keys].contains[<[key]>]>: + - determine "Key not found: <[key]>" + - if <[value]> == null: + - determine "Value cannot be null" + - define data <[keys].get[<[key]>]> + - define type <[data].get[type]> + - choose <[type].to_lowercase>: + - case boolean: + - if <[value]> != true && <[value]> != false: + - determine "Value must be true or false" + - case number: + - define min <[data].get[min]> + - define max <[data].get[max]> + - if <[value]> < <[min]> || <[value]> > <[max]>: + - determine "Value must be between <[min]> and <[max]>" + - case list: + - define values <[data].get[values]> + - if !<[values].contains[<[value]>]>: + - determine "Value must be one of the following: <[values].formatted>" + - case text: + - define max_length <[data].get[max-length]> + - define regex <[data].get[regex]> + - if <[value].length> > <[max_length]>: + - determine "Value must be shorter than <[max_length]> characters" + - if !<[value].regex_matches[<[regex]>]>: + - determine "Value should match the regex <[regex]>" + - default: + - determine "Unknown type <[type]>" + - define settings <[player].flag[settings].if_null[]> + - define settings <[settings].with[<[key]>].as[<[value]>]> + - flag <[player]> settings:<[settings]> + +settings_get: + debug: false + type: procedure + definitions: player|key + script: + - define keys + - if !<[keys].contains[<[key]>]>: + - determine null + - define settings <[player].flag[settings].if_null[]> + - define value <[settings].get[<[key]>].if_null[<[keys].get[<[key]>].get[default]>]> + - determine <[value]>