mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-17 12:35:26 +00:00
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
67 lines
1.7 KiB
Plaintext
67 lines
1.7 KiB
Plaintext
/datum/spawners_menu
|
|
var/mob/dead/observer/owner
|
|
|
|
/datum/spawners_menu/New(mob/dead/observer/new_owner)
|
|
if(!istype(new_owner))
|
|
qdel(src)
|
|
owner = new_owner
|
|
|
|
/datum/spawners_menu/ui_state(mob/user)
|
|
return GLOB.observer_state
|
|
|
|
/datum/spawners_menu/ui_interact(mob/user, datum/tgui/ui)
|
|
ui = SStgui.try_update_ui(user, src, ui)
|
|
if(!ui)
|
|
ui = new(user, src, "SpawnersMenu")
|
|
ui.open()
|
|
|
|
/datum/spawners_menu/ui_data(mob/user)
|
|
var/list/data = list()
|
|
data["spawners"] = list()
|
|
for(var/spawner in GLOB.mob_spawners)
|
|
var/list/this = list()
|
|
this["name"] = spawner
|
|
this["short_desc"] = ""
|
|
this["flavor_text"] = ""
|
|
this["important_warning"] = ""
|
|
this["refs"] = list()
|
|
for(var/spawner_obj in GLOB.mob_spawners[spawner])
|
|
this["refs"] += "[REF(spawner_obj)]"
|
|
if(!this["desc"])
|
|
if(istype(spawner_obj, /obj/effect/mob_spawn))
|
|
var/obj/effect/mob_spawn/MS = spawner_obj
|
|
this["short_desc"] = MS.short_desc
|
|
this["flavor_text"] = MS.flavour_text
|
|
this["important_info"] = MS.important_info
|
|
else
|
|
var/obj/O = spawner_obj
|
|
this["desc"] = O.desc
|
|
this["amount_left"] = LAZYLEN(GLOB.mob_spawners[spawner])
|
|
data["spawners"] += list(this)
|
|
|
|
return data
|
|
|
|
/datum/spawners_menu/ui_act(action, params)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
|
|
var/group_name = params["name"]
|
|
if(!group_name || !(group_name in GLOB.mob_spawners))
|
|
return
|
|
var/list/spawnerlist = GLOB.mob_spawners[group_name]
|
|
if(!spawnerlist.len)
|
|
return
|
|
var/obj/effect/mob_spawn/MS = pick(spawnerlist)
|
|
if(!istype(MS) || !(MS in GLOB.poi_list))
|
|
return
|
|
switch(action)
|
|
if("jump")
|
|
if(MS)
|
|
owner.forceMove(get_turf(MS))
|
|
. = TRUE
|
|
if("spawn")
|
|
if(MS)
|
|
MS.attack_ghost(owner)
|
|
. = TRUE
|