Revert "SSmachines instancing PR (#9080)"

This reverts commit 4889b33cea.
This commit is contained in:
atermonera
2023-07-23 17:45:10 -08:00
parent b3b59c5c2a
commit a8a9054d08
17 changed files with 126 additions and 150 deletions
+34 -51
View File
@@ -1,7 +1,14 @@
#define SSMACHINES_PIPENETS 1
#define SSMACHINES_MACHINERY 2
#define SSMACHINES_POWERNETS 3
#define SSMACHINES_POWER_ITEMS 4
#define SSMACHINES_POWER_OBJECTS 4
//
// SSmachines subsystem - Processing machines, pipenets, and powernets!
//
// Implementation Plan:
// PHASE 1 - Add subsystem using the existing global list vars
// PHASE 2 - Move the global list vars into the subsystem.
SUBSYSTEM_DEF(machines)
name = "Machines"
@@ -12,17 +19,18 @@ SUBSYSTEM_DEF(machines)
var/current_step = SSMACHINES_PIPENETS
var/cost_pipenets = 0
var/cost_machinery = 0
var/cost_powernets = 0
var/cost_power_objects = 0
var/cost_pipenets = 0
var/cost_machinery = 0
var/cost_powernets = 0
var/cost_power_objects = 0
var/list/pipenets = list()
var/list/machinery = list()
var/list/powernets = list()
var/list/power_objects = list()
// TODO - PHASE 2 - Switch these from globals to instance vars
// var/list/pipenets = list()
// var/list/machinery = list()
// var/list/powernets = list()
// var/list/power_objects = list()
var/list/current_run = list()
var/list/current_run = list()
/datum/controller/subsystem/machines/Initialize(timeofday)
makepowernets()
@@ -33,10 +41,10 @@ SUBSYSTEM_DEF(machines)
/datum/controller/subsystem/machines/fire(resumed, no_mc_tick)
var/timer = TICK_USAGE
INTERNAL_PROCESS_STEP(SSMACHINES_POWER_ITEMS,FALSE,process_power_objects,cost_power_objects,SSMACHINES_PIPENETS) // Higher priority, damnit
INTERNAL_PROCESS_STEP(SSMACHINES_POWER_OBJECTS,FALSE,process_power_objects,cost_power_objects,SSMACHINES_PIPENETS) // Higher priority, damnit
INTERNAL_PROCESS_STEP(SSMACHINES_PIPENETS,TRUE,process_pipenets,cost_pipenets,SSMACHINES_MACHINERY)
INTERNAL_PROCESS_STEP(SSMACHINES_MACHINERY,FALSE,process_machinery,cost_machinery,SSMACHINES_POWERNETS)
INTERNAL_PROCESS_STEP(SSMACHINES_POWERNETS,FALSE,process_powernets,cost_powernets,SSMACHINES_POWER_ITEMS)
INTERNAL_PROCESS_STEP(SSMACHINES_POWERNETS,FALSE,process_powernets,cost_powernets,SSMACHINES_POWER_OBJECTS)
// rebuild all power networks from scratch - only called at world creation or by the admin verb
// The above is a lie. Turbolifts also call this proc.
@@ -80,16 +88,16 @@ SUBSYSTEM_DEF(machines)
msg += "PN:[round(cost_powernets,1)]|"
msg += "PO:[round(cost_power_objects,1)]"
msg += "} "
msg += "PI:[pipe_networks.len]|"
msg += "MC:[machinery.len]|"
msg += "PN:[powernets.len]|"
msg += "PO:[power_objects.len]|"
msg += "MC/MS:[round((cost ? machinery.len/cost_machinery : 0),0.1)]"
msg += "PI:[global.pipe_networks.len]|"
msg += "MC:[global.processing_machines.len]|"
msg += "PN:[global.powernets.len]|"
msg += "PO:[global.processing_power_items.len]|"
msg += "MC/MS:[round((cost ? global.processing_machines.len/cost_machinery : 0),0.1)]"
..(jointext(msg, null))
/datum/controller/subsystem/machines/proc/process_pipenets(resumed = 0)
if (!resumed)
src.current_run = pipe_networks.Copy()
src.current_run = global.pipe_networks.Copy()
//cache for sanic speed (lists are references anyways)
var/list/current_run = src.current_run
while(current_run.len)
@@ -98,7 +106,7 @@ SUBSYSTEM_DEF(machines)
if(istype(PN) && !QDELETED(PN))
PN.process(wait)
else
pipe_networks.Remove(PN)
global.pipe_networks.Remove(PN)
if(!QDELETED(PN))
DISABLE_BITFIELD(PN.datum_flags, DF_ISPROCESSING)
if(MC_TICK_CHECK)
@@ -106,7 +114,7 @@ SUBSYSTEM_DEF(machines)
/datum/controller/subsystem/machines/proc/process_machinery(resumed = 0)
if (!resumed)
src.current_run = machines.Copy()
src.current_run = global.processing_machines.Copy()
var/list/current_run = src.current_run
while(current_run.len)
@@ -114,7 +122,7 @@ SUBSYSTEM_DEF(machines)
current_run.len--
if(!istype(M) || QDELETED(M) || (M.process(wait) == PROCESS_KILL))
machines.Remove(M)
global.processing_machines.Remove(M)
if(!QDELETED(M))
DISABLE_BITFIELD(M.datum_flags, DF_ISPROCESSING)
if(MC_TICK_CHECK)
@@ -122,7 +130,7 @@ SUBSYSTEM_DEF(machines)
/datum/controller/subsystem/machines/proc/process_powernets(resumed = 0)
if (!resumed)
src.current_run = powernets.Copy()
src.current_run = global.powernets.Copy()
var/list/current_run = src.current_run
while(current_run.len)
@@ -131,7 +139,7 @@ SUBSYSTEM_DEF(machines)
if(istype(PN) && !QDELETED(PN))
PN.reset(wait)
else
powernets.Remove(PN)
global.powernets.Remove(PN)
if(!QDELETED(PN))
DISABLE_BITFIELD(PN.datum_flags, DF_ISPROCESSING)
if(MC_TICK_CHECK)
@@ -141,44 +149,19 @@ SUBSYSTEM_DEF(machines)
// Currently only used by powersinks. These items get priority processed before machinery
/datum/controller/subsystem/machines/proc/process_power_objects(resumed = 0)
if (!resumed)
src.current_run = power_objects.Copy()
src.current_run = global.processing_power_items.Copy()
var/list/current_run = src.current_run
while(current_run.len)
var/obj/item/I = current_run[current_run.len]
current_run.len--
if(!I.pwr_drain(wait)) // 0 = Process Kill, remove from processing list.
power_objects.Remove(I)
global.processing_power_items.Remove(I)
DISABLE_BITFIELD(I.datum_flags, DF_ISPROCESSING)
if(MC_TICK_CHECK)
return
/** Adds a datum to this subsystem
*
* `dat` - datum to be added
*
* `list = SSMACHINES_MACHINERY_LIST` - list to be added to, defaults to machines
*/
/datum/controller/subsystem/machines/proc/start_processing(dat, list = SSMACHINES_MACHINERY_LIST)
switch(list)
if(SSMACHINES_MACHINERY_LIST) machinery += dat
if(SSMACHINES_POWERNETS_LIST) powernets += dat
if(SSMACHINES_POWEROBJS_LIST) power_objects += dat
if(SSMACHINES_PIPENETS_LIST) pipenets += dat
/** Removes a datum from this subsystem
*
* ```dat``` - datum to be removed
*
*```list``` = SSMACHINES_MACHINERY_LIST` - list to be removed from, defaults to machines
*/
/datum/controller/subsystem/machines/proc/stop_processing(dat, list = SSMACHINES_MACHINERY_LIST)
switch(list)
if(SSMACHINES_MACHINERY_LIST) machinery -= dat
if(SSMACHINES_POWERNETS_LIST) powernets -= dat
if(SSMACHINES_POWEROBJS_LIST) power_objects -= dat
if(SSMACHINES_PIPENETS_LIST) pipenets -= dat
#undef SSMACHINES_PIPENETS
#undef SSMACHINES_MACHINERY
#undef SSMACHINES_POWER_ITEMS
#undef SSMACHINES_POWER_OBJECTS
@@ -4,7 +4,6 @@ PROCESSING_SUBSYSTEM_DEF(fastprocess)
name = "Fast Processing"
wait = 0.2 SECONDS
stat_tag = "FP"
var/list/machinery = list()
/datum/controller/subsystem/processing/fastprocess/Recover()
log_debug("[name] subsystem Recover().")
@@ -13,4 +12,4 @@ PROCESSING_SUBSYSTEM_DEF(fastprocess)
var/list/old_processing = SSfastprocess.processing.Copy()
for(var/datum/D in old_processing)
if(CHECK_BITFIELD(D.datum_flags, DF_ISPROCESSING))
processing |= D
processing |= D