Files
Aurora.3/code/controllers/subsystems/initialization/map_finalization.dm
Fluffy 5c295f5a10 Landmarks works (#19006)
Fixed some landmarks harddels.
Refactored various landmarks in their own subtype instead of using a
name-based switch system.
2024-04-28 17:04:40 +00:00

76 lines
2.5 KiB
Plaintext

// The area list is put together here, because some things need it early on. Turrets controls, for example.
SUBSYSTEM_DEF(finalize)
name = "Map Finalization"
flags = SS_NO_FIRE | SS_NO_DISPLAY
init_order = INIT_ORDER_MAPFINALIZE
var/dmm_suite/maploader
var/datum/away_mission/selected_mission
/datum/controller/subsystem/finalize/Initialize(timeofday)
// Setup the global antag uplink. This needs to be done after SSatlas as it requires current_map.
global.uplink = new
var/time = world.time
SSatlas.current_map.finalize_load()
log_subsystem_mapfinalization("Finalized map in [(world.time - time)/10] seconds.")
load_space_ruin()
if(GLOB.config.generate_asteroid)
time = world.time
SSatlas.current_map.generate_asteroid()
log_subsystem_mapfinalization("Generated asteroid in [(world.time - time)/10] seconds.")
// Generate the area list.
resort_all_areas()
// This is dependant on markers.
populate_antag_spawns()
// Generate contact report.
generate_contact_report()
return SS_INIT_SUCCESS
/proc/resort_all_areas()
GLOB.all_areas = list()
for (var/area/A in world)
GLOB.all_areas += A
sortTim(GLOB.all_areas, GLOBAL_PROC_REF(cmp_name_asc))
/datum/controller/subsystem/finalize/proc/load_space_ruin()
maploader = new
if(!selected_mission)
log_subsystem_mapfinalization("Not loading away mission, because no mission has been selected.")
admin_notice(SPAN_DANGER("Not loading away mission, because no mission has been selected."), R_DEBUG)
return
for(var/map in selected_mission.map_files)
var/mfile = "[selected_mission.base_dir][map]"
var/time = world.time
LOG_DEBUG("Attempting to load [mfile]")
if (!maploader.load_map(file(mfile), 0, 0, no_changeturf = TRUE))
log_subsystem_mapfinalization_error("Failed to load '[mfile]'!")
log_mapping("Failed to load '[mfile]'!")
admin_notice(SPAN_DANGER("Failed to load '[mfile]'!"), R_DEBUG)
else
log_subsystem_mapfinalization("Loaded away mission on z [world.maxz] in [(world.time - time)/10] seconds.")
admin_notice(SPAN_DANGER("Loaded away mission on z [world.maxz] in [(world.time - time)/10] seconds."), R_DEBUG)
SSatlas.current_map.restricted_levels.Add(world.maxz)
QDEL_NULL(maploader)
/datum/controller/subsystem/finalize/proc/generate_contact_report()
if(!selected_mission)
return
var/report_text = selected_mission.get_contact_report()
for(var/obj/effect/landmark/C in GLOB.landmarks_list)
if(C.name == "Mission Paper")
var/obj/item/paper/P = new /obj/item/paper(get_turf(C))
P.name = "Icarus reading report"
P.info = report_text
P.update_icon()