From c9a6a22a38597b60669c9138b88562e60e795cf3 Mon Sep 17 00:00:00 2001 From: BongaTheProto <93835010+BongaTheProto@users.noreply.github.com> Date: Sat, 20 Aug 2022 16:37:39 -0500 Subject: [PATCH] New donator system which uses toml files and allows integration with the previous one --- code/__SPLURTCODE/DEFINES/configuration.dm | 2 + config/config.txt | 1 + config/splurt/donator.toml | 4 ++ config/splurt/donator.txt | 6 +++ .../configuration/entries/splurt_donator.dm | 53 +++++++++++++++++++ tgstation.dme | 2 + 6 files changed, 68 insertions(+) create mode 100644 code/__SPLURTCODE/DEFINES/configuration.dm create mode 100644 config/splurt/donator.toml create mode 100644 config/splurt/donator.txt create mode 100644 modular_splurt/code/controllers/configuration/entries/splurt_donator.dm diff --git a/code/__SPLURTCODE/DEFINES/configuration.dm b/code/__SPLURTCODE/DEFINES/configuration.dm new file mode 100644 index 0000000000..859e74cdc0 --- /dev/null +++ b/code/__SPLURTCODE/DEFINES/configuration.dm @@ -0,0 +1,2 @@ +/// like CONFIG_GET_ENTRY() but uses a full path +#define CONFIG_GET_ENTRY_FROM_PATH(P) global.config.GetEntryDatum(P) diff --git a/config/config.txt b/config/config.txt index 3ece8f1c33..8db6b1f725 100644 --- a/config/config.txt +++ b/config/config.txt @@ -51,3 +51,4 @@ $include splurt/comms.txt $include splurt/maps.txt $include splurt/server.txt $include splurt/connections.txt +$include splurt/donator.txt diff --git a/config/splurt/donator.toml b/config/splurt/donator.toml new file mode 100644 index 0000000000..373c60d583 --- /dev/null +++ b/config/splurt/donator.toml @@ -0,0 +1,4 @@ +[donators] +tier_1 = [] +tier_2 = [] +tier_3 = [] diff --git a/config/splurt/donator.txt b/config/splurt/donator.txt new file mode 100644 index 0000000000..57c06ba848 --- /dev/null +++ b/config/splurt/donator.txt @@ -0,0 +1,6 @@ +# New donator system mode +## Mode in which donator info added in donator.toml will be handled ## +## 0 legacy donator system ## +## 1 add the information from both systems ## +## 2 only use info from the new system ## +TOML_DONATORS_MODE 0 diff --git a/modular_splurt/code/controllers/configuration/entries/splurt_donator.dm b/modular_splurt/code/controllers/configuration/entries/splurt_donator.dm new file mode 100644 index 0000000000..2b3fcac47d --- /dev/null +++ b/modular_splurt/code/controllers/configuration/entries/splurt_donator.dm @@ -0,0 +1,53 @@ +#define DONATOR_TOML_FILE "config/splurt/donator.toml" + +// New donator system +// Reminder that you must setup autodonator and ckeytools on +// a discord redbot on your guild for this to work +// https://github.com/SPLURT-Station/Mal0-cogs + +/datum/config_entry/number/toml_donators_mode + postload_required = TRUE + +/datum/config_entry/number/toml_donators_mode/OnPostload() + if(config_entry_value != 1 && config_entry_value != 2) + return ..() + + var/list/donators = rustg_read_toml_file(DONATOR_TOML_FILE) + if(!donators) + CRASH("Attempted to read donator file, but none was found!") + + for(var/tier in subtypesof(/datum/config_entry/multi_keyed_flag/donator_group)) + var/datum/config_entry/multi_keyed_flag/donator_group/group = CONFIG_GET_ENTRY_FROM_PATH(tier) + group.load_new_donators(donators, config_entry_value) + + regenerate_donator_grouping_list() + + . = ..() + +/datum/config_entry/multi_keyed_flag/donator_group + var/toml_tier + +/datum/config_entry/multi_keyed_flag/donator_group/proc/load_new_donators(list/donators, mode) + if(IsAdminAdvancedProcCall() || !toml_tier) + return + switch(mode) + if(1) + LAZYADD(config_entry_value, donators["donators"][toml_tier]) + if(2) + config_entry_value = donators["donators"][toml_tier] + else + return + for(var/ckey in config_entry_value) + if(isnull(config_entry_value[ckey])) + config_entry_value[ckey] = TRUE + +/datum/config_entry/multi_keyed_flag/donator_group/tier_1_donators + toml_tier = "tier_1" + +/datum/config_entry/multi_keyed_flag/donator_group/tier_2_donators + toml_tier = "tier_2" + +/datum/config_entry/multi_keyed_flag/donator_group/tier_3_donators + toml_tier = "tier_3" + +#undef DONATOR_TOML_FILE diff --git a/tgstation.dme b/tgstation.dme index 7e1719e115..2467beaac4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -249,6 +249,7 @@ #include "code\__SPLURTCODE\DEFINES\atmospherics.dm" #include "code\__SPLURTCODE\DEFINES\cit_defines.dm" #include "code\__SPLURTCODE\DEFINES\click.dm" +#include "code\__SPLURTCODE\DEFINES\configuration.dm" #include "code\__SPLURTCODE\DEFINES\cooldowns.dm" #include "code\__SPLURTCODE\DEFINES\genital_defines.dm" #include "code\__SPLURTCODE\DEFINES\hud.dm" @@ -4243,6 +4244,7 @@ #include "modular_splurt\code\controllers\configuration\entries\splurt_comms.dm" #include "modular_splurt\code\controllers\configuration\entries\splurt_connections.dm" #include "modular_splurt\code\controllers\configuration\entries\splurt_discord.dm" +#include "modular_splurt\code\controllers\configuration\entries\splurt_donator.dm" #include "modular_splurt\code\controllers\configuration\entries\splurt_fetish_content.dm" #include "modular_splurt\code\controllers\configuration\entries\splurt_general.dm" #include "modular_splurt\code\controllers\configuration\entries\splurt_maps.dm"