mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 20:17:15 +01:00
Port SSoverlays & Convert turfs to use it (#5004)
* Added "Display Initialize() Log" admin debug command so you can see it mid-round. * Ported the core of the overlays management subsystem from /tg - Added SSoverlays subsystem for compiling overlay lists and applying them to atoms in a controlled anti-lag subsystem. - Added vars and procs to atom which should eventually replace all direct interaction with BYOND's /atom/overlays var outside the subsystem. - Added OVERLAY_QUEUED flag to var/atom/flags bitfield. - Added small framework for subsystem performance tracking. So far used only by SSoverlays - Added admin debug command "Display overlay Log" to see performance stats mid-round. * Fix runtime on universal pipe adaptor update_icons * Workaround for appearance_bro not initialized Unfortuantely BYOND's initialization order is strange, and the appearance_bro var is only half initialized when map starts to load, causing errors. We temporarily fix by moving it to be a global-scoped global. * Convert fire alarms to use add_overlay() A good first test. * Convert turfs to use add_overlays(), eliminating the turf_overlay_holder! - Converted as much as I could find about turf overlays to use add_overlay(). - This should be enough to stop BYOND from crashing, so we can eliminate the turf_overlay_holder hack. - This also lets us remove the anti-corruption hacks from walls and open space. - ZAS gas overlays can use priority overlays, so this also fixes the gas-goes-away-when-crowbarring-plating issue. - Stuff like that * Convert turf overlay interactions to use add_overlay. Note: This is a plain and simple conversion of existing code to use SSoverlays. However I look at the line changed, and note that that line likely never fully worked as intended, as it has no way of re-applying itself. I would make it use a priority overlay, but there is no code present for *removing* said overlay from neighbors when it is no longer required. That code should be implemented by original author.
This commit is contained in:
@@ -327,6 +327,36 @@
|
||||
|
||||
usr << browse(dellog.Join(), "window=dellog")
|
||||
|
||||
/client/proc/cmd_display_init_log()
|
||||
set category = "Debug"
|
||||
set name = "Display Initialize() Log"
|
||||
set desc = "Displays a list of things that didn't handle Initialize() properly"
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
src << browse(replacetext(SSatoms.InitLog(), "\n", "<br>"), "window=initlog")
|
||||
|
||||
/client/proc/cmd_display_overlay_log()
|
||||
set category = "Debug"
|
||||
set name = "Display overlay Log"
|
||||
set desc = "Display SSoverlays log of everything that's passed through it."
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
render_stats(SSoverlays.stats, src)
|
||||
|
||||
// Render stats list for round-end statistics.
|
||||
/proc/render_stats(list/stats, user, sort = /proc/cmp_generic_stat_item_time)
|
||||
sortTim(stats, sort, TRUE)
|
||||
|
||||
var/list/lines = list()
|
||||
for (var/entry in stats)
|
||||
var/list/data = stats[entry]
|
||||
lines += "[entry] => [num2text(data[STAT_ENTRY_TIME], 10)]ms ([data[STAT_ENTRY_COUNT]]) (avg:[num2text(data[STAT_ENTRY_TIME]/(data[STAT_ENTRY_COUNT] || 1), 99)])"
|
||||
|
||||
if (user)
|
||||
user << browse("<ol><li>[lines.Join("</li><li>")]</li></ol>", "window=[url_encode("stats:\ref[stats]")]")
|
||||
else
|
||||
. = lines.Join("\n")
|
||||
|
||||
/client/proc/cmd_admin_grantfullaccess(var/mob/M in mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Grant Full Access"
|
||||
|
||||
Reference in New Issue
Block a user