mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 10:02:28 +00:00
Exoplanet ruins, away sites, overmap submaps and maploader goodies. (#12933)
This commit is contained in:
@@ -379,6 +379,7 @@
|
||||
SearchVar(SSpipenet)
|
||||
SearchVar(SSprocessing)
|
||||
SearchVar(SSshuttle)
|
||||
SearchVar(SSmapping)
|
||||
SearchVar(base_law_type)
|
||||
SearchVar(discord_bot)
|
||||
SearchVar(diseases)
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
|
||||
click_catchers = create_click_catcher()
|
||||
|
||||
current_map.build_away_sites()
|
||||
|
||||
current_map.build_exoplanets()
|
||||
|
||||
..(timeofday)
|
||||
|
||||
@@ -212,4 +212,18 @@
|
||||
/datum/controller/subsystem/machinery/ExplosionEnd()
|
||||
wake()
|
||||
|
||||
/datum/controller/subsystem/machinery/proc/setup_atmos_machinery(list/machines)
|
||||
set background = TRUE
|
||||
var/list/atmos_machines = list()
|
||||
for (var/obj/machinery/atmospherics/machine in machines)
|
||||
atmos_machines += machine
|
||||
log_game("Initializing atmos machinery")
|
||||
for (var/obj/machinery/atmospherics/machine as anything in atmos_machines)
|
||||
machine.atmos_init()
|
||||
CHECK_TICK
|
||||
log_game("Initializing pipe networks")
|
||||
for (var/obj/machinery/atmospherics/machine as anything in atmos_machines)
|
||||
machine.build_network()
|
||||
CHECK_TICK
|
||||
|
||||
#undef MACHINERY_GO_TO_NEXT
|
||||
|
||||
94
code/controllers/subsystems/mapping.dm
Normal file
94
code/controllers/subsystems/mapping.dm
Normal file
@@ -0,0 +1,94 @@
|
||||
var/datum/controller/subsystem/mapping/SSmapping
|
||||
|
||||
/datum/controller/subsystem/mapping
|
||||
name = "Mapping"
|
||||
init_order = SS_INIT_MISC
|
||||
flags = SS_NO_FIRE
|
||||
|
||||
var/list/map_templates = list()
|
||||
var/list/space_ruins_templates = list()
|
||||
var/list/exoplanet_ruins_templates = list()
|
||||
var/list/away_sites_templates = list()
|
||||
var/list/submaps = list()
|
||||
var/list/submap_archetypes = list()
|
||||
|
||||
/datum/controller/subsystem/mapping/New()
|
||||
NEW_SS_GLOBAL(SSmapping)
|
||||
|
||||
/datum/controller/subsystem/mapping/Initialize(timeofday)
|
||||
// Load templates and build away sites.
|
||||
preloadTemplates()
|
||||
for(var/atype in subtypesof(/decl/submap_archetype))
|
||||
submap_archetypes[atype] = new atype
|
||||
. = ..()
|
||||
|
||||
/datum/controller/subsystem/mapping/Recover()
|
||||
flags |= SS_NO_INIT
|
||||
map_templates = SSmapping.map_templates
|
||||
space_ruins_templates = SSmapping.space_ruins_templates
|
||||
exoplanet_ruins_templates = SSmapping.exoplanet_ruins_templates
|
||||
away_sites_templates = SSmapping.away_sites_templates
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/preloadTemplates(path = "maps/templates/") //see master controller setup
|
||||
var/list/filelist = flist(path)
|
||||
for(var/map in filelist)
|
||||
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
|
||||
map_templates[T.name] = T
|
||||
preloadBlacklistableTemplates()
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/preloadBlacklistableTemplates()
|
||||
// Still supporting bans by filename
|
||||
var/list/banned_exoplanet_dmms = generateMapList("config/exoplanet_ruin_blacklist.txt")
|
||||
var/list/banned_space_dmms = generateMapList("config/space_ruin_blacklist.txt")
|
||||
var/list/banned_away_site_dmms = generateMapList("config/away_site_blacklist.txt")
|
||||
|
||||
if (!banned_exoplanet_dmms || !banned_space_dmms || !banned_away_site_dmms)
|
||||
log_admin("One or more map blacklist files are not present in the config directory!")
|
||||
|
||||
var/list/banned_maps = list() + banned_exoplanet_dmms + banned_space_dmms + banned_away_site_dmms
|
||||
|
||||
for(var/item in sortList(subtypesof(/datum/map_template), /proc/cmp_ruincost_priority))
|
||||
var/datum/map_template/map_template_type = item
|
||||
// screen out the abstract subtypes
|
||||
if(!initial(map_template_type.id))
|
||||
continue
|
||||
var/datum/map_template/MT = new map_template_type()
|
||||
|
||||
if (banned_maps)
|
||||
var/mappath = MT.mappath
|
||||
if(list_find(banned_maps, mappath))
|
||||
break
|
||||
|
||||
map_templates[MT.name] = MT
|
||||
|
||||
// This is nasty..
|
||||
if(istype(MT, /datum/map_template/ruin/exoplanet))
|
||||
exoplanet_ruins_templates[MT.name] = MT
|
||||
else if(istype(MT, /datum/map_template/ruin/space))
|
||||
space_ruins_templates[MT.name] = MT
|
||||
else if(istype(MT, /datum/map_template/ruin/away_site))
|
||||
away_sites_templates[MT.name] = MT
|
||||
|
||||
/proc/generateMapList(filename)
|
||||
var/list/potentialMaps = list()
|
||||
var/list/Lines = world.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
|
||||
Reference in New Issue
Block a user