From 06cfcd156d5567d4874bf087cd25b25bc25dcb2e Mon Sep 17 00:00:00 2001 From: MINIMAN10000 Date: Mon, 18 Jun 2018 12:10:16 -0700 Subject: [PATCH] Better method of deffered processing --- code/__DEFINES/MC.dm | 1 + code/controllers/subsystem/machinery.dm | 16 ---------------- code/game/machinery/machinery.dm | 7 +++++-- code/modules/power/smes.dm | 2 +- 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index cbcf2c1dd90..a4fa99bcac3 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -21,6 +21,7 @@ #define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing += Datum} #define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = FALSE;Processor.processing -= Datum +#define START_DEFFERED_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing.Insert(1,Datum)} //SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) diff --git a/code/controllers/subsystem/machinery.dm b/code/controllers/subsystem/machinery.dm index 783156a74ff..a3e4d4bdb0c 100644 --- a/code/controllers/subsystem/machinery.dm +++ b/code/controllers/subsystem/machinery.dm @@ -11,7 +11,6 @@ SUBSYSTEM_DEF(machines) var/list/currentrun = list() var/list/powernets = list() var/list/deferred_powernet_rebuilds = list() - var/list/deferred_process = list() var/currentpart = SSMACHINES_DEFERREDPOWERNETS @@ -91,21 +90,6 @@ SUBSYSTEM_DEF(machines) while(currentrun.len) var/obj/machinery/thing = currentrun[currentrun.len] currentrun.len-- - if(thing.deferred_processing) - deferred_process += thing - else - if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) - if(thing.use_power) - thing.auto_use_power() //add back the power state - else - processing -= thing - if(!QDELETED(thing)) - thing.isprocessing = FALSE - if(MC_TICK_CHECK) - return - while(deferred_process.len) - var/obj/machinery/thing = deferred_process[deferred_process.len] - deferred_process.len-- if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) if(thing.use_power) thing.auto_use_power() //add back the power state diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 3eb5d08bb66..da647d281c8 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -118,7 +118,7 @@ Class Procs: var/list/settagwhitelist = list()//WHITELIST OF VARIABLES THAT THE set_tag HREF CAN MODIFY, DON'T PUT SHIT YOU DON'T NEED ON HERE, AND IF YOU'RE GONNA USE set_tag (format_tag() proc), ADD TO THIS LIST. atom_say_verb = "beeps" var/speed_process = 0 // Process as fast as possible? - var/deferred_processing = 0 + var/defer_process = 0 /obj/machinery/Initialize() addAtProcessing() @@ -129,7 +129,10 @@ Class Procs: if(use_power) myArea = get_area_master(src) if(!speed_process) - START_PROCESSING(SSmachines, src) + if(!src.defer_process) + START_PROCESSING(SSmachines, src) + else + START_DEFFERED_PROCESSING(SSmachines, src) else fast_processing += src isprocessing = TRUE // all of these isprocessing = TRUE can be removed when the PS is dead diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 136b933c92f..e5a669ef860 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -13,7 +13,7 @@ icon_state = "smes" density = 1 anchored = 1 - deferred_processing = 1 + defer_process = 1 var/capacity = 5e6 // maximum charge var/charge = 0 // actual charge