Remove a whole bunch of in world loops and rework machinery global lists (#3053)

Removes a whole bunch of in world loops.
Reworks SSmachinery to hold two lists: all_machines and processing_machines. all_machines contains all machines 5ever. All of them. Literally. Forever. And ever. processing_machines only contains machines that process with the SSmachinery controller.

I checked most types at runtime on the live server to see whether they're in processing_machines or in all_machines, and did debug to ensure that most machinery ends up and stays in all_machines.

Includes a basic UT to make sure all mapped in machinery types remain within the all_machines list post-init.
This commit is contained in:
skull132
2017-07-16 20:32:33 +03:00
committed by GitHub
parent 4645af8dcb
commit 0fc67f2cb9
70 changed files with 237 additions and 176 deletions

View File

@@ -9,7 +9,7 @@ var/list/ship_engines = list()
/datum/ship_engine/New(var/obj/machinery/holder)
engine = holder
zlevel = holder.z
for(var/obj/machinery/computer/engines/E in machines)
for(var/obj/machinery/computer/engines/E in SSmachinery.processing_machines)
if (E.z == zlevel && !(src in E.engines))
E.engines += src
break
@@ -53,8 +53,8 @@ var/list/ship_engines = list()
return 1
/datum/ship_engine/proc/die()
for(var/obj/machinery/computer/engines/E in machines)
for(var/obj/machinery/computer/engines/E in SSmachinery.processing_machines)
if (E.z == zlevel)
E.engines -= src
break
qdel(src)
qdel(src)

View File

@@ -16,11 +16,11 @@
/obj/effect/map/ship/Initialize()
. = ..()
for(var/obj/machinery/computer/engines/E in machines)
for(var/obj/machinery/computer/engines/E in SSmachinery.processing_machines)
if (E.z == map_z)
eng_control = E
break
for(var/obj/machinery/computer/helm/H in machines)
for(var/obj/machinery/computer/helm/H in SSmachinery.processing_machines)
if (H.z == map_z)
nav_control = H
break
@@ -112,5 +112,5 @@
var/turf/newloc = locate(x + deltas[1], y + deltas[2], z)
if(newloc)
Move(newloc)
if(rotate)
if(rotate)
rotate(get_heading())