From bf80b1ab0034e22c4cad15e4187952929277528f Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Tue, 4 May 2021 12:06:27 +0100 Subject: [PATCH] Gateway configuration --- code/controllers/configuration.dm | 9 ----- .../configuration/configuration_core.dm | 4 +++ .../sections/gateway_configuration.dm | 14 ++++++++ code/controllers/subsystem/mapping.dm | 6 ++-- code/modules/awaymissions/gateway.dm | 2 +- code/modules/awaymissions/zlevel.dm | 35 ------------------- config/example/config.toml | 2 +- paradise.dme | 1 + 8 files changed, 24 insertions(+), 49 deletions(-) create mode 100644 code/controllers/configuration/sections/gateway_configuration.dm diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index bc915727858..17a21da6e94 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -115,7 +115,6 @@ var/simultaneous_pm_warning_timeout = 100 - var/gateway_delay = 6000 var/ghost_interaction = 0 var/comms_password = "" @@ -140,8 +139,6 @@ var/player_overflow_cap = 0 //number of players before the server starts rerouting var/list/overflow_whitelist = list() //whitelist for overflow - var/disable_away_missions = 0 // disable away missions - var/ooc_allowed = 1 var/looc_allowed = 1 var/dooc_allowed = 1 @@ -425,9 +422,6 @@ if("usealienwhitelist") usealienwhitelist = 1 - if("gateway_delay") - config.gateway_delay = text2num(value) - if("continuous_rounds") config.continuous_rounds = 1 @@ -492,9 +486,6 @@ if("overflow_server_url") config.overflow_server_url = value - if("disable_away_missions") - config.disable_away_missions = 1 - if("disable_lobby_music") config.disable_lobby_music = 1 diff --git a/code/controllers/configuration/configuration_core.dm b/code/controllers/configuration/configuration_core.dm index 4695abc9c46..db934eaa046 100644 --- a/code/controllers/configuration/configuration_core.dm +++ b/code/controllers/configuration/configuration_core.dm @@ -13,6 +13,8 @@ GLOBAL_DATUM_INIT(configuration, /datum/server_configuration, new()) var/datum/configuration_section/custom_sprites_configuration/custom_sprites /// Holder for the DB configuration datum var/datum/configuration_section/database_configuration/database + /// Holder for the gateway configuration datum + var/datum/configuration_section/gateway_configuration/gateway /// Holder for the job configuration datum var/datum/configuration_section/job_configuration/jobs /// Holder for the logging configuration datum @@ -38,6 +40,7 @@ GLOBAL_DATUM_INIT(configuration, /datum/server_configuration, new()) afk = new() custom_sprites = new() database = new() + gateway = new() jobs = new() logging = new() mc = new() @@ -55,6 +58,7 @@ GLOBAL_DATUM_INIT(configuration, /datum/server_configuration, new()) afk.load_data(raw_config_data["afk_configuration"]) custom_sprites.load_data(raw_config_data["custom_sprites_configuration"]) database.load_data(raw_config_data["database_configuration"]) + gateway.load_data(raw_config_data["gateway_configuration"]) jobs.load_data(raw_config_data["job_configuration"]) logging.load_data(raw_config_data["logging_configuration"]) mc.load_data(raw_config_data["mc_configuration"]) diff --git a/code/controllers/configuration/sections/gateway_configuration.dm b/code/controllers/configuration/sections/gateway_configuration.dm new file mode 100644 index 00000000000..f9e64e5f3be --- /dev/null +++ b/code/controllers/configuration/sections/gateway_configuration.dm @@ -0,0 +1,14 @@ +/// Config holder for all gateway related things +/datum/configuration_section/gateway_configuration + /// Do we want to enable away missions or not + var/enable_away_mission = TRUE + /// Delay (in deciseconds) before the gateway is usable + var/away_mission_delay = 6000 + /// List of all available away missions + var/list/enabled_away_missions = list() + +/datum/configuration_section/gateway_configuration/load_data(list/data) + // Use the load wrappers here. That way the default isnt made 'null' if you comment out the config line + CONFIG_LOAD_BOOL(enable_away_mission, data["enable_away_mission"]) + CONFIG_LOAD_NUM(away_mission_delay, data["away_mission_delay"]) + CONFIG_LOAD_LIST(enabled_away_missions, data["enabled_away_missions"]) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 87fbdc1f9c6..b790deb7795 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -7,7 +7,7 @@ SUBSYSTEM_DEF(mapping) // Load all Z level templates preloadTemplates() // Pick a random away mission. - if(!config.disable_away_missions) + if(GLOB.configuration.gateway.enable_away_mission) load_away_mission() // Seed space ruins if(GLOB.configuration.ruins.enable_space_ruins) @@ -166,11 +166,11 @@ SUBSYSTEM_DEF(mapping) if(length(GLOB.awaydestinations)) return - if(GLOB.potentialRandomZlevels && length(GLOB.potentialRandomZlevels)) + if(length(GLOB.configuration.gateway.enabled_away_missions)) var/watch = start_watch() log_startup_progress("Loading away mission...") - var/map = pick(GLOB.potentialRandomZlevels) + var/map = pick(GLOB.configuration.gateway.enabled_away_missions) var/file = file(map) if(isfile(file)) var/zlev = GLOB.space_manager.add_new_zlevel(AWAY_MISSION, linkage = UNAFFECTED, traits = list(AWAY_LEVEL,BLOCK_TELEPORT)) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index ba78a3f9b02..96f86679590 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -47,7 +47,7 @@ GLOBAL_DATUM_INIT(the_gateway, /obj/machinery/gateway/centerstation, null) /obj/machinery/gateway/centerstation/Initialize() ..() update_icon() - wait = world.time + config.gateway_delay + wait = world.time + GLOB.configuration.gateway.away_mission_delay return INITIALIZE_HINT_LATELOAD /obj/machinery/gateway/centerstation/LateInitialize() diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 641b7e0815e..0c18062d189 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -1,5 +1,3 @@ -GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "config/away_mission_config.txt")) - // Call this before you remove the last dirt on a z level - that way, all objects // will have proper atmos and other important enviro things /proc/late_setup_level(turfs, smoothTurfs) @@ -38,39 +36,6 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "config/away qdel(otherthing) T.ChangeTurf(T.baseturf) -/proc/generateMapList(filename) - var/list/potentialMaps = list() - var/list/Lines = file2list(filename) - - if(!Lines.len) - return - for(var/t in Lines) - if(!t) - continue - - t = trim(t) - if(length(t) == 0) - continue - else if(copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - - if(pos) - name = lowertext(copytext(t, 1, pos)) - - else - name = lowertext(t) - - if(!name) - continue - - potentialMaps.Add(t) - - return potentialMaps - - /datum/map_template/ruin/proc/try_to_place(z,allowed_areas) var/sanity = PLACEMENT_TRIES while(sanity > 0) diff --git a/config/example/config.toml b/config/example/config.toml index d7d415ea6db..220e8d6931f 100644 --- a/config/example/config.toml +++ b/config/example/config.toml @@ -248,7 +248,7 @@ traitor_objective_amount = 2 # Do we want to enable this at all? Disable for faster load times in testing enable_away_mission = true -# Delay (in seconds) before the gateway is usable +# Delay (in deciseconds) before the gateway is usable away_mission_delay = 0 # List of all enabled away missions. Comment out an entry to disable it. enabled_away_missions = [ diff --git a/paradise.dme b/paradise.dme index 4e69fd94a76..d89ce3dc0ae 100644 --- a/paradise.dme +++ b/paradise.dme @@ -189,6 +189,7 @@ #include "code\controllers\configuration\sections\afk_configuration.dm" #include "code\controllers\configuration\sections\custom_sprites_configuration.dm" #include "code\controllers\configuration\sections\database_configuration.dm" +#include "code\controllers\configuration\sections\gateway_configuration.dm" #include "code\controllers\configuration\sections\job_configuration.dm" #include "code\controllers\configuration\sections\logging_configuration.dm" #include "code\controllers\configuration\sections\mc_configuration.dm"