From ae53aa1d212c893fb80e9b4528d062cb30ff0034 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Fri, 23 Mar 2018 18:03:27 -0400 Subject: [PATCH 1/2] Ports over Fires to Subsystems --- code/controllers/Processes/fires.dm | 24 -------------- code/controllers/subsystem/fire_burning.dm | 37 ++++++++++++++++++++++ code/controllers/verbs.dm | 2 +- code/game/objects/obj_defense.dm | 6 ++-- paradise.dme | 2 +- 5 files changed, 42 insertions(+), 29 deletions(-) delete mode 100644 code/controllers/Processes/fires.dm create mode 100644 code/controllers/subsystem/fire_burning.dm diff --git a/code/controllers/Processes/fires.dm b/code/controllers/Processes/fires.dm deleted file mode 100644 index 26d42833d84..00000000000 --- a/code/controllers/Processes/fires.dm +++ /dev/null @@ -1,24 +0,0 @@ -var/global/datum/controller/process/fire/fire_master - -/datum/controller/process/fire - var/list/burning = list() - -/datum/controller/process/fire/setup() - name = "fire" - schedule_interval = 20 //every 2 seconds - log_startup_progress("Fire process starting up.") - -/datum/controller/process/fire/statProcess() - ..() - stat(null, "[burning.len] burning objects") - -/datum/controller/process/fire/doWork() - for(var/obj/burningobj in burning) - if(burningobj.burn_state == ON_FIRE) - if(burningobj.burn_world_time < world.time) - burningobj.burn() - SCHECK - else - burning.Remove(burningobj) - -DECLARE_GLOBAL_CONTROLLER(fire, fire_master) diff --git a/code/controllers/subsystem/fire_burning.dm b/code/controllers/subsystem/fire_burning.dm new file mode 100644 index 00000000000..2f3d752c17b --- /dev/null +++ b/code/controllers/subsystem/fire_burning.dm @@ -0,0 +1,37 @@ +SUBSYSTEM_DEF(fire_burning) + name = "Fire Burning" + priority = FIRE_PRIOTITY_BURNING + flags = SS_NO_INIT|SS_BACKGROUND + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/list/currentrun = list() + var/list/processing = list() + +/datum/controller/subsystem/fire_burning/stat_entry() + ..("P:[processing.len]") + + +/datum/controller/subsystem/fire_burning/fire(resumed = 0) + if(!resumed) + src.currentrun = processing.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while(currentrun.len) + var/obj/O = currentrun[currentrun.len] + currentrun.len-- + if(!O || qdeleted(O)) + processing -= O + if(MC_TICK_CHECK) + return + continue + + if(O.burn_state == ON_FIRE) + if(O.burn_world_time < world.time) + O.burn() + else + processing -= O + + if(MC_TICK_CHECK) + return diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index efbe9502e7c..560d4f7c88d 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -79,7 +79,7 @@ debug_variables(vote) feedback_add_details("admin_verb","DVote") if("Fires") - debug_variables(fire_master) + debug_variables(SSfire_burning) feedback_add_details("admin_verb","DFires") if("Mob") debug_variables(mob_master) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index b5d56555c3d..86790b5bcf5 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -139,7 +139,7 @@ /obj/fire_act(global_overlay=1) if(!burn_state) burn_state = ON_FIRE - fire_master.burning += src + SSfire_burning.processing[src] = src burn_world_time = world.time + burntime*rand(10,20) if(global_overlay) overlays += fire_overlay @@ -149,14 +149,14 @@ empty_object_contents(1, loc) var/obj/effect/decal/cleanable/ash/A = new(loc) A.desc = "Looks like this used to be a [name] some time ago." - fire_master.burning -= src + SSfire_burning.processing -= src qdel(src) /obj/proc/extinguish() if(burn_state == ON_FIRE) burn_state = FLAMMABLE overlays -= fire_overlay - fire_master.burning -= src + SSfire_burning.processing -= src /obj/proc/tesla_act(power) being_shocked = TRUE diff --git a/paradise.dme b/paradise.dme index 785a733526a..6f136b5c875 100644 --- a/paradise.dme +++ b/paradise.dme @@ -190,7 +190,6 @@ #include "code\controllers\Processes\alarm.dm" #include "code\controllers\Processes\event.dm" #include "code\controllers\Processes\fast_process.dm" -#include "code\controllers\Processes\fires.dm" #include "code\controllers\Processes\garbage.dm" #include "code\controllers\Processes\inactivity.dm" #include "code\controllers\Processes\lighting.dm" @@ -209,6 +208,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\fire_burning.dm" #include "code\controllers\subsystem\spacedrift.dm" #include "code\controllers\subsystem\throwing.dm" #include "code\datums\action.dm" From 7a548473d4d608c71fec89cacfb8bedb4c8024e4 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sun, 25 Mar 2018 18:52:06 -0400 Subject: [PATCH 2/2] name --- code/controllers/subsystem/{fire_burning.dm => fires.dm} | 8 ++++---- code/controllers/verbs.dm | 2 +- code/game/objects/obj_defense.dm | 6 +++--- paradise.dme | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) rename code/controllers/subsystem/{fire_burning.dm => fires.dm} (80%) diff --git a/code/controllers/subsystem/fire_burning.dm b/code/controllers/subsystem/fires.dm similarity index 80% rename from code/controllers/subsystem/fire_burning.dm rename to code/controllers/subsystem/fires.dm index 2f3d752c17b..50624aa8db0 100644 --- a/code/controllers/subsystem/fire_burning.dm +++ b/code/controllers/subsystem/fires.dm @@ -1,5 +1,5 @@ -SUBSYSTEM_DEF(fire_burning) - name = "Fire Burning" +SUBSYSTEM_DEF(fires) + name = "Fires" priority = FIRE_PRIOTITY_BURNING flags = SS_NO_INIT|SS_BACKGROUND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME @@ -7,11 +7,11 @@ SUBSYSTEM_DEF(fire_burning) var/list/currentrun = list() var/list/processing = list() -/datum/controller/subsystem/fire_burning/stat_entry() +/datum/controller/subsystem/fires/stat_entry() ..("P:[processing.len]") -/datum/controller/subsystem/fire_burning/fire(resumed = 0) +/datum/controller/subsystem/fires/fire(resumed = 0) if(!resumed) src.currentrun = processing.Copy() diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 560d4f7c88d..bad73292c82 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -79,7 +79,7 @@ debug_variables(vote) feedback_add_details("admin_verb","DVote") if("Fires") - debug_variables(SSfire_burning) + debug_variables(SSfires) feedback_add_details("admin_verb","DFires") if("Mob") debug_variables(mob_master) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 86790b5bcf5..d5ef8fce545 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -139,7 +139,7 @@ /obj/fire_act(global_overlay=1) if(!burn_state) burn_state = ON_FIRE - SSfire_burning.processing[src] = src + SSfires.processing[src] = src burn_world_time = world.time + burntime*rand(10,20) if(global_overlay) overlays += fire_overlay @@ -149,14 +149,14 @@ empty_object_contents(1, loc) var/obj/effect/decal/cleanable/ash/A = new(loc) A.desc = "Looks like this used to be a [name] some time ago." - SSfire_burning.processing -= src + SSfires.processing -= src qdel(src) /obj/proc/extinguish() if(burn_state == ON_FIRE) burn_state = FLAMMABLE overlays -= fire_overlay - SSfire_burning.processing -= src + SSfires.processing -= src /obj/proc/tesla_act(power) being_shocked = TRUE diff --git a/paradise.dme b/paradise.dme index 6f136b5c875..75274b9ee46 100644 --- a/paradise.dme +++ b/paradise.dme @@ -208,7 +208,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\fire_burning.dm" +#include "code\controllers\subsystem\fires.dm" #include "code\controllers\subsystem\spacedrift.dm" #include "code\controllers\subsystem\throwing.dm" #include "code\datums\action.dm"