New donator system

which uses toml files and allows integration with the previous one
This commit is contained in:
BongaTheProto
2022-08-20 16:37:39 -05:00
parent fded1c5dd6
commit c9a6a22a38
6 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
/// like CONFIG_GET_ENTRY() but uses a full path
#define CONFIG_GET_ENTRY_FROM_PATH(P) global.config.GetEntryDatum(P)

View File

@@ -51,3 +51,4 @@ $include splurt/comms.txt
$include splurt/maps.txt
$include splurt/server.txt
$include splurt/connections.txt
$include splurt/donator.txt

View File

@@ -0,0 +1,4 @@
[donators]
tier_1 = []
tier_2 = []
tier_3 = []

View File

@@ -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

View File

@@ -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

View File

@@ -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"