mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-31 01:57:19 +01:00
* Painus * Yep * Moar * Let the agony begin * text.dm * scramble.dm * time.dm * fix * unsorted.dm * job_controller.dm * _legacy * computerfiles.dm * events.dm * global_iterator.dm * topic_input.dm * underwear.dm * uplink * periodic_news.dm again * areas * genes Also renamed midget to dwarfism as it's a slur. * changeling * Cult * gamemodes * machinery * mecha * effects * objects part 1 * Fine I'll commit the YAML * objects part 2 * moar * atmos * ooga * ahrde * You can tell my sanity is going down * Second-To-Last Step * Almost * Poggers * nvm we're not ready for that <.< * Test * minor
88 lines
1.7 KiB
Plaintext
88 lines
1.7 KiB
Plaintext
/**
|
|
* WARRANTY VOID IF CODE USED
|
|
*/
|
|
// What??? Warranty? What warranty? I don't need no stinking warranty!
|
|
|
|
/datum/events
|
|
var/list/events
|
|
|
|
/datum/events/New()
|
|
..()
|
|
events = new
|
|
|
|
/datum/events/proc/addEventType(event_type as text)
|
|
if(!(event_type in events) || !islist(events[event_type]))
|
|
events[event_type] = list()
|
|
return 1
|
|
return
|
|
|
|
/**
|
|
* Arguments:
|
|
* * event_type - text
|
|
* * proc_holder - datum
|
|
* * proc_name - text
|
|
*
|
|
* Returns:
|
|
* * New event
|
|
* * null on error
|
|
*/
|
|
/datum/events/proc/addEvent(event_type as text, proc_holder, proc_name as text)
|
|
if(!event_type || !proc_holder || !proc_name)
|
|
return
|
|
addEventType(event_type)
|
|
var/list/event = events[event_type]
|
|
var/datum/event/E = new /datum/event(proc_holder,proc_name)
|
|
event += E
|
|
return E
|
|
|
|
/**
|
|
* Arguments:
|
|
* * event_type - text
|
|
* * any number of additional arguments to pass to event handler
|
|
*
|
|
* Returns:
|
|
* * null
|
|
*/
|
|
/datum/events/proc/fireEvent()
|
|
//to_chat(world, "Events in [args[1]] called")
|
|
var/list/event = SAFEACCESS(events,args[1])
|
|
if(istype(event))
|
|
spawn(-1)
|
|
for(var/datum/event/E in event)
|
|
if(!E.Fire(arglist(args.Copy(2))))
|
|
clearEvent(args[1],E)
|
|
return
|
|
|
|
/**
|
|
* Arguments:
|
|
* * event_type - text
|
|
* * E - /datum/event
|
|
*
|
|
* Returns:
|
|
* * 1 - if event cleared
|
|
* * null - on error
|
|
*/
|
|
/datum/events/proc/clearEvent(event_type as text, datum/event/E)
|
|
if(!event_type || !E)
|
|
return
|
|
var/list/event = SAFEACCESS(events, event_type)
|
|
event -= E
|
|
return 1
|
|
|
|
|
|
/datum/event
|
|
var/listener
|
|
var/proc_name
|
|
|
|
/datum/event/New(tlistener,tprocname)
|
|
listener = tlistener
|
|
proc_name = tprocname
|
|
return ..()
|
|
|
|
/datum/event/proc/Fire()
|
|
//to_chat(world, "Event fired")
|
|
if(listener)
|
|
call(listener,proc_name)(arglist(args))
|
|
return 1
|
|
return
|