mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 18:22:14 +00:00
## About The Pull Request This refactors code related to debugger and byond-tracy `/datum/debugger` and `/datum/tracy` - which live in the `GLOBAL_REAL` vars `Debugger` and `Tracy` respectively. This allows code related to those two to be grouped together in their own files, rather than mashed into `world.dm` with a bunch of other shit - while it still initializes during the same stages of init. In addition, this also ports https://github.com/BeeStation/BeeStation-Hornet/pull/8947, which prints runtime errors to chat when the debugger is enabled. <details> <summary><h3>Proof of Testing</h3></summary>      </details> ## Why It's Good For The Game Reduces some `GLOB` pollution, and groups a bunch of related code into dedicated files and datums. It's simply cleaner. Printing runtime errors to chat is also very useful, as it allows you to see when shit is fuck, if you don't want a breakpoint pause for each error. ## Changelog 🆑 refactor: Refactored some code related to initialization. code: Runtime errors will now print to the chat while debugging. /🆑
55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
/// The debugger instance.
|
|
/// This is a GLOBAL_REAL because it initializes before the MC or GLOB.
|
|
/// Really only used to check to see if the debugger is enabled or not,
|
|
/// and to separate debugger-related code into its own thing.
|
|
GLOBAL_REAL(Debugger, /datum/debugger)
|
|
|
|
/datum/debugger
|
|
/// Is the debugger enabled?
|
|
VAR_FINAL/enabled = FALSE
|
|
/// The error text, if initializing the debugger errored.
|
|
VAR_FINAL/error
|
|
/// The path to the auxtools debug DLL, if it sets.
|
|
/// Defaults to the environmental variable AUXTOOLS_DEBUG_DLL.
|
|
VAR_FINAL/dll_path
|
|
|
|
/datum/debugger/New(dll_path)
|
|
if(!isnull(Debugger))
|
|
CRASH("Attempted to initialize /datum/debugger when global.Debugger is already set!")
|
|
Debugger = src
|
|
#ifndef OPENDREAM_REAL
|
|
src.dll_path = dll_path || world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
|
|
enable()
|
|
#endif
|
|
|
|
/datum/debugger/Destroy()
|
|
#ifndef OPENDREAM_REAL
|
|
if(enabled)
|
|
call_ext(dll_path, "auxtools_shutdown")()
|
|
#endif
|
|
return ..()
|
|
|
|
/// Attempt to enable the debugger.
|
|
/datum/debugger/proc/enable()
|
|
#ifndef OPENDREAM_REAL
|
|
if(enabled)
|
|
CRASH("Attempted to enable debugger while its already enabled, somehow.")
|
|
if(!dll_path)
|
|
return FALSE
|
|
var/result = call_ext(dll_path, "auxtools_init")()
|
|
if(result != "SUCCESS")
|
|
error = result
|
|
return FALSE
|
|
enable_debugging()
|
|
enabled = TRUE
|
|
return TRUE
|
|
#else
|
|
return FALSE
|
|
#endif
|
|
|
|
/datum/debugger/vv_edit_var(var_name, var_value)
|
|
return FALSE // no.
|
|
|
|
/datum/debugger/CanProcCall(procname)
|
|
return FALSE // double no.
|