From acee1dcb4209f5f505fd09f29bcbd2fcb85024b3 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Tue, 23 Apr 2019 12:45:35 +0100 Subject: [PATCH 1/2] SSalarms --- code/__DEFINES/subsystems.dm | 1 + code/controllers/Processes/alarm.dm | 37 ------------------- code/controllers/subsystem/alarm.dm | 30 +++++++++++++++ code/controllers/verbs.dm | 2 +- code/game/area/areas.dm | 8 ++-- code/game/machinery/camera/camera.dm | 4 +- code/game/machinery/camera/motion.dm | 4 +- code/game/machinery/computer/atmos_alert.dm | 14 +++---- code/game/machinery/firealarm.dm | 4 +- code/modules/mob/living/silicon/subsystems.dm | 2 +- .../file_system/programs/engineering/alarm.dm | 2 +- code/modules/nano/modules/alarm_monitor.dm | 6 +-- code/modules/power/apc.dm | 10 ++--- paradise.dme | 2 +- 14 files changed, 60 insertions(+), 66 deletions(-) delete mode 100644 code/controllers/Processes/alarm.dm create mode 100644 code/controllers/subsystem/alarm.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5ade3b0baef..218fdbc5a7a 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -61,6 +61,7 @@ #define INIT_ORDER_LANGUAGE 6 #define INIT_ORDER_MACHINES 5 #define INIT_ORDER_CIRCUIT 4 +#define INIT_ORDER_ALARMS 2 #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 diff --git a/code/controllers/Processes/alarm.dm b/code/controllers/Processes/alarm.dm deleted file mode 100644 index 068ef0c1213..00000000000 --- a/code/controllers/Processes/alarm.dm +++ /dev/null @@ -1,37 +0,0 @@ -// We manually initialize the alarm handlers instead of looping over all existing types -// to make it possible to write: camera.triggerAlarm() rather than alarm_manager.managers[datum/alarm_handler/camera].triggerAlarm() or a variant thereof. -/var/global/datum/alarm_handler/atmosphere/atmosphere_alarm = new() -/var/global/datum/alarm_handler/burglar/burglar_alarm = new() -/var/global/datum/alarm_handler/camera/camera_alarm = new() -/var/global/datum/alarm_handler/fire/fire_alarm = new() -/var/global/datum/alarm_handler/motion/motion_alarm = new() -/var/global/datum/alarm_handler/power/power_alarm = new() - -// Alarm Manager, the manager for alarms. -var/datum/controller/process/alarm/alarm_manager - -/datum/controller/process/alarm - var/list/datum/alarm/all_handlers - -/datum/controller/process/alarm/setup() - name = "alarm" - schedule_interval = 20 // every 2 seconds - all_handlers = list(atmosphere_alarm, burglar_alarm, camera_alarm, fire_alarm, motion_alarm, power_alarm) - -/datum/controller/process/alarm/doWork() - for(var/datum/alarm_handler/AH in all_handlers) - AH.process() - -DECLARE_GLOBAL_CONTROLLER(alarm, alarm_manager) - -/datum/controller/process/alarm/proc/active_alarms() - var/list/all_alarms = new - for(var/datum/alarm_handler/AH in all_handlers) - var/list/alarms = AH.alarms - all_alarms += alarms - - return all_alarms - -/datum/controller/process/alarm/proc/number_of_active_alarms() - var/list/alarms = active_alarms() - return alarms.len diff --git a/code/controllers/subsystem/alarm.dm b/code/controllers/subsystem/alarm.dm new file mode 100644 index 00000000000..c874ccbc8c7 --- /dev/null +++ b/code/controllers/subsystem/alarm.dm @@ -0,0 +1,30 @@ +SUBSYSTEM_DEF(alarms) + name = "Alarms" + init_order = INIT_ORDER_ALARMS // 2 + var/datum/alarm_handler/atmosphere/atmosphere_alarm = new() + var/datum/alarm_handler/burglar/burglar_alarm = new() + var/datum/alarm_handler/camera/camera_alarm = new() + var/datum/alarm_handler/fire/fire_alarm = new() + var/datum/alarm_handler/motion/motion_alarm = new() + var/datum/alarm_handler/power/power_alarm = new() + var/list/datum/alarm/all_handlers + +/datum/controller/subsystem/alarms/Initialize(start_timeofday) + all_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm) + ..() + +/datum/controller/subsystem/alarms/fire() + for(var/datum/alarm_handler/AH in all_handlers) + AH.process() + +/datum/controller/subsystem/alarms/proc/active_alarms() + var/list/all_alarms = new + for(var/datum/alarm_handler/AH in all_handlers) + var/list/alarms = AH.alarms + all_alarms += alarms + + return all_alarms + +/datum/controller/subsystem/alarms/proc/number_of_active_alarms() + var/list/alarms = active_alarms() + return alarms.len diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 6d077ee5173..98b1f89f4ab 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -63,7 +63,7 @@ debug_variables(event_manager) feedback_add_details("admin_verb","DEvent") if("Alarm") - debug_variables(alarm_manager) + debug_variables(SSalarms) feedback_add_details("admin_verb", "DAlarm") if("Garbage") debug_variables(SSgarbage) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index c5683f366ae..fcd2e912c44 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -78,9 +78,9 @@ /area/proc/atmosalert(danger_level, var/alarm_source, var/force = FALSE) if(danger_level == ATMOS_ALARM_NONE) - atmosphere_alarm.clearAlarm(src, alarm_source) + SSalarms.atmosphere_alarm.clearAlarm(src, alarm_source) else - atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level) + SSalarms.atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level) //Check all the alarms before lowering atmosalm. Raising is perfectly fine. If force = 1 we don't care. for(var/obj/machinery/alarm/AA in src) @@ -158,9 +158,9 @@ if(A.density) A.lock() - burglar_alarm.triggerAlarm(src, trigger) + SSalarms.burglar_alarm.triggerAlarm(src, trigger) spawn(600) - burglar_alarm.clearAlarm(src, trigger) + SSalarms.burglar_alarm.clearAlarm(src, trigger) /area/proc/set_fire_alarm_effect() fire = 1 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 7535381197a..0eb627d1e62 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -295,10 +295,10 @@ to_chat(O, "The screen bursts into static.") /obj/machinery/camera/proc/triggerCameraAlarm() - camera_alarm.triggerAlarm(loc, src) + SSalarms.camera_alarm.triggerAlarm(loc, src) /obj/machinery/camera/proc/cancelCameraAlarm() - camera_alarm.clearAlarm(loc, src) + SSalarms.camera_alarm.clearAlarm(loc, src) /obj/machinery/camera/proc/can_use() if(!status) diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index eeb9eeb60d3..17f64c07cb8 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -45,7 +45,7 @@ if(!status || (stat & NOPOWER)) return 0 if(detectTime == -1) - motion_alarm.clearAlarm(loc, src) + SSalarms.motion_alarm.clearAlarm(loc, src) detectTime = 0 return 1 @@ -53,7 +53,7 @@ if(!status || (stat & NOPOWER)) return 0 if(!detectTime) return 0 - motion_alarm.triggerAlarm(loc, src) + SSalarms.motion_alarm.triggerAlarm(loc, src) detectTime = -1 return 1 diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index f2137d2ee8f..f8c2979e043 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -12,10 +12,10 @@ var/global/list/minor_air_alarms = list() /obj/machinery/computer/atmos_alert/New() ..() - atmosphere_alarm.register(src, /obj/machinery/computer/station_alert/update_icon) + SSalarms.atmosphere_alarm.register(src, /obj/machinery/computer/station_alert/update_icon) /obj/machinery/computer/atmos_alert/Destroy() - atmosphere_alarm.unregister(src) + SSalarms.atmosphere_alarm.unregister(src) return ..() /obj/machinery/computer/atmos_alert/attack_hand(mob/user) @@ -33,10 +33,10 @@ var/global/list/minor_air_alarms = list() var/major_alarms[0] var/minor_alarms[0] - for(var/datum/alarm/alarm in atmosphere_alarm.major_alarms()) + for(var/datum/alarm/alarm in SSalarms.atmosphere_alarm.major_alarms()) major_alarms[++major_alarms.len] = list("name" = sanitize(alarm.alarm_name()), "ref" = "\ref[alarm]") - for(var/datum/alarm/alarm in atmosphere_alarm.minor_alarms()) + for(var/datum/alarm/alarm in SSalarms.atmosphere_alarm.minor_alarms()) minor_alarms[++minor_alarms.len] = list("name" = sanitize(alarm.alarm_name()), "ref" = "\ref[alarm]") data["priority_alarms"] = major_alarms @@ -45,11 +45,11 @@ var/global/list/minor_air_alarms = list() return data /obj/machinery/computer/atmos_alert/update_icon() - var/list/alarms = atmosphere_alarm.major_alarms() + var/list/alarms = SSalarms.atmosphere_alarm.major_alarms() if(alarms.len) icon_screen = "alert:2" else - alarms = atmosphere_alarm.minor_alarms() + alarms = SSalarms.atmosphere_alarm.minor_alarms() if(alarms.len) icon_screen = "alert:1" else @@ -61,7 +61,7 @@ var/global/list/minor_air_alarms = list() return 1 if(href_list["clear_alarm"]) - var/datum/alarm/alarm = locate(href_list["clear_alarm"]) in atmosphere_alarm.alarms + var/datum/alarm/alarm = locate(href_list["clear_alarm"]) in SSalarms.atmosphere_alarm.alarms if(alarm) for(var/datum/alarm_source/alarm_source in alarm.sources) var/obj/machinery/alarm/air_alarm = alarm_source.source diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index f1651d5bb99..648cd6dca08 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -220,7 +220,7 @@ FIRE ALARM var/area/A = get_area(src) A.fire_reset() for(var/obj/machinery/firealarm/FA in A) - fire_alarm.clearAlarm(loc, FA) + SSalarms.fire_alarm.clearAlarm(loc, FA) return /obj/machinery/firealarm/proc/alarm(var/duration = 0) @@ -228,7 +228,7 @@ FIRE ALARM return var/area/A = get_area(src) for(var/obj/machinery/firealarm/FA in A) - fire_alarm.triggerAlarm(loc, FA, duration) + SSalarms.fire_alarm.triggerAlarm(loc, FA, duration) update_icon() //playsound(loc, 'sound/ambience/signal.ogg', 75, 0) return diff --git a/code/modules/mob/living/silicon/subsystems.dm b/code/modules/mob/living/silicon/subsystems.dm index fa3dcfd2cfa..8f7c2316768 100644 --- a/code/modules/mob/living/silicon/subsystems.dm +++ b/code/modules/mob/living/silicon/subsystems.dm @@ -41,7 +41,7 @@ if(!register_alarms) return - var/list/register_to = list(atmosphere_alarm, burglar_alarm, camera_alarm, fire_alarm, motion_alarm, power_alarm) + var/list/register_to = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm) for(var/datum/alarm_handler/AH in register_to) AH.register(src, /mob/living/silicon/proc/receive_alarm) queued_alarms[AH] = list() // Makes sure alarms remain listed in consistent order diff --git a/code/modules/modular_computers/file_system/programs/engineering/alarm.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm.dm index 5fcaf9b03fd..226511e2c09 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/alarm.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/alarm.dm @@ -11,7 +11,7 @@ /datum/computer_file/program/alarm_monitor/New() ..() - alarm_handlers = list(atmosphere_alarm, fire_alarm, power_alarm) + alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.fire_alarm, SSalarms.power_alarm) for(var/datum/alarm_handler/AH in alarm_handlers) AH.register(src, /datum/computer_file/program/alarm_monitor/proc/update_icon) diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index e4dd848dac6..dc52841a367 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -5,15 +5,15 @@ /datum/nano_module/alarm_monitor/all/New() ..() - alarm_handlers = list(atmosphere_alarm, burglar_alarm, camera_alarm, fire_alarm, motion_alarm, power_alarm) + alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm) /datum/nano_module/alarm_monitor/engineering/New() ..() - alarm_handlers = list(atmosphere_alarm, fire_alarm, power_alarm) + alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.fire_alarm, SSalarms.power_alarm) /datum/nano_module/alarm_monitor/security/New() ..() - alarm_handlers = list(burglar_alarm, camera_alarm, motion_alarm) + alarm_handlers = list(SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.motion_alarm) /datum/nano_module/alarm_monitor/proc/register(var/object, var/procName) for(var/datum/alarm_handler/AH in alarm_handlers) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index e8aab46dbbe..20145573b9d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1173,14 +1173,14 @@ environ = autoset(environ, 1) autoflag = 3 if(report_power_alarm) - power_alarm.clearAlarm(loc, src) + SSalarms.power_alarm.clearAlarm(loc, src) else if(cell.charge < 1250 && cell.charge > 750 && longtermpower < 0) // <30%, turn off equipment if(autoflag != 2) equipment = autoset(equipment, 2) lighting = autoset(lighting, 1) environ = autoset(environ, 1) if(report_power_alarm) - power_alarm.triggerAlarm(loc, src) + SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 2 else if(cell.charge < 750 && cell.charge > 10) // <15%, turn off lighting & equipment if((autoflag > 1 && longtermpower < 0) || (autoflag > 1 && longtermpower >= 0)) @@ -1188,7 +1188,7 @@ lighting = autoset(lighting, 2) environ = autoset(environ, 1) if(report_power_alarm) - power_alarm.triggerAlarm(loc, src) + SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 1 else if(cell.charge <= 0) // zero charge, turn all off if(autoflag != 0) @@ -1196,7 +1196,7 @@ lighting = autoset(lighting, 0) environ = autoset(environ, 0) if(report_power_alarm) - power_alarm.triggerAlarm(loc, src) + SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 0 // now trickle-charge the cell @@ -1254,7 +1254,7 @@ lighting = autoset(lighting, 0) environ = autoset(environ, 0) if(report_power_alarm) - power_alarm.triggerAlarm(loc, src) + SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 0 // update icon & area power if anything changed diff --git a/paradise.dme b/paradise.dme index e478048e4d8..eae920316f3 100644 --- a/paradise.dme +++ b/paradise.dme @@ -197,7 +197,6 @@ #include "code\controllers\master.dm" #include "code\controllers\subsystem.dm" #include "code\controllers\verbs.dm" -#include "code\controllers\Processes\alarm.dm" #include "code\controllers\Processes\event.dm" #include "code\controllers\Processes\fast_process.dm" #include "code\controllers\Processes\lighting.dm" @@ -207,6 +206,7 @@ #include "code\controllers\ProcessScheduler\core\process.dm" #include "code\controllers\ProcessScheduler\core\processScheduler.dm" #include "code\controllers\subsystem\air.dm" +#include "code\controllers\subsystem\alarm.dm" #include "code\controllers\subsystem\assets.dm" #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\fires.dm" From 42624fe8475219ef6949b22043bb2cbb4fd33f80 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Tue, 23 Apr 2019 20:31:26 +0100 Subject: [PATCH 2/2] Spaces > Tabs --- code/controllers/subsystem/alarm.dm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/code/controllers/subsystem/alarm.dm b/code/controllers/subsystem/alarm.dm index c874ccbc8c7..94955842381 100644 --- a/code/controllers/subsystem/alarm.dm +++ b/code/controllers/subsystem/alarm.dm @@ -1,24 +1,24 @@ SUBSYSTEM_DEF(alarms) - name = "Alarms" - init_order = INIT_ORDER_ALARMS // 2 - var/datum/alarm_handler/atmosphere/atmosphere_alarm = new() - var/datum/alarm_handler/burglar/burglar_alarm = new() - var/datum/alarm_handler/camera/camera_alarm = new() - var/datum/alarm_handler/fire/fire_alarm = new() - var/datum/alarm_handler/motion/motion_alarm = new() - var/datum/alarm_handler/power/power_alarm = new() - var/list/datum/alarm/all_handlers + name = "Alarms" + init_order = INIT_ORDER_ALARMS // 2 + var/datum/alarm_handler/atmosphere/atmosphere_alarm = new() + var/datum/alarm_handler/burglar/burglar_alarm = new() + var/datum/alarm_handler/camera/camera_alarm = new() + var/datum/alarm_handler/fire/fire_alarm = new() + var/datum/alarm_handler/motion/motion_alarm = new() + var/datum/alarm_handler/power/power_alarm = new() + var/list/datum/alarm/all_handlers /datum/controller/subsystem/alarms/Initialize(start_timeofday) - all_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm) - ..() + all_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm) + ..() /datum/controller/subsystem/alarms/fire() for(var/datum/alarm_handler/AH in all_handlers) AH.process() /datum/controller/subsystem/alarms/proc/active_alarms() - var/list/all_alarms = new + var/list/all_alarms = new () for(var/datum/alarm_handler/AH in all_handlers) var/list/alarms = AH.alarms all_alarms += alarms