Merge pull request #6902 from GinjaNinja32/machinelist

More machinery list speedups
This commit is contained in:
Chinsky
2014-11-01 02:18:09 +03:00
3 changed files with 31 additions and 2 deletions
+23
View File
@@ -430,6 +430,29 @@ proc/listclearnulls(list/list)
return (result + L.Copy(Li, 0))
return (result + R.Copy(Ri, 0))
// Insert an object into a sorted list, preserving sortedness
/proc/dd_insertObjectList(var/list/L, var/O)
var/min = 1
var/max = L.len
var/Oval = O:dd_SortValue()
while(1)
var/mid = min+round((max-min)/2)
if(mid == max)
L.Insert(mid, O)
return
var/Lmid = L[mid]
var/midval = Lmid:dd_SortValue()
if(Oval == midval)
L.Insert(mid, O)
return
else if(Oval < midval)
max = mid
else
min = mid+1
/*
proc/dd_sortedObjectList(list/incoming)
/*
+3
View File
@@ -121,6 +121,9 @@ datum/controller/game_controller/proc/setup_objects()
//Set up spawn points.
populate_spawn_points()
// Sort the machinery list so it doesn't cause a lagspike at roundstart
process_machines_sort()
world << "\red \b Initializations complete."
sleep(-1)
+5 -2
View File
@@ -113,8 +113,11 @@ Class Procs:
/obj/machinery/New()
..()
machines += src
machinery_sort_required = 1
if(!machinery_sort_required && ticker)
dd_insertObjectList(machines, src)
else
machines += src
machinery_sort_required = 1
/obj/machinery/Del()
machines -= src