Files
ZandarioandGitHub 6c380c91ae Spooky Month Cleaning? Grep and stuff. (#4489)
* 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
2022-10-05 06:16:42 -07:00

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