Files
siliconsandGitHub 9d6a141e5b mc update: init stages, better subsystem init tracking, etc (#6857)
modifies the hollow metrics API; that'll probably be implemented soon
adds init stages
changes SSatoms to not abuse its `initialized` variable

closes #6858
2024-11-15 14:41:25 -07:00

53 lines
1.4 KiB
Plaintext

/**
* Manages the lobby's titlescreen.
*/
SUBSYSTEM_DEF(titlescreen)
name = "Titlescreens"
subsystem_flags = SS_NO_FIRE
init_order = INIT_ORDER_TITLESCREEN
init_stage = INIT_STAGE_LATE
/// our titlescreen
var/datum/cutscene/titlescreen
/datum/controller/subsystem/titlescreen/Initialize()
initialize_title_scene()
return SS_INIT_NO_MESSAGE
/datum/controller/subsystem/titlescreen/proc/initialize_title_scene()
refresh_title_scene()
for(var/client/C as anything in GLOB.clients)
if(!isnewplayer(C.mob))
continue
C.start_cutscene(titlescreen)
/datum/controller/subsystem/titlescreen/proc/refresh_title_scene()
set_title_scene(make_title_scene())
/datum/controller/subsystem/titlescreen/proc/make_title_scene()
var/picked = pickweight((LEGACY_MAP_DATUM).titlescreens.Copy())
if(isnull(picked))
return
var/datum/cutscene/built
if(ispath(picked))
built = new picked
if(islist(picked))
var/list/arr = picked
var/icon/I = icon(arr[1], arr[2])
var/datum/cutscene/native/simple/scene = new
scene.icon_path = I
scene.icon_width = I.Width()
scene.icon_height = I.Height()
built = scene
built.init()
return built
/datum/controller/subsystem/titlescreen/proc/set_title_scene(datum/cutscene/scene)
var/list/client/old_viewing
if(!isnull(titlescreen))
old_viewing = titlescreen.viewing?.Copy()
QDEL_NULL(titlescreen)
titlescreen = scene
for(var/client/C as anything in old_viewing)
C.start_cutscene(titlescreen)