mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-18 13:04:45 +00:00
- Removes unnecessary real global vars. - Adds comments pointing to the init order defined in /code/game/world.dm. - Prevent people using `GLOBAL_REAL_VAR` and `GLOBAL_REAL` to circumvent init order. - Properly type `PROFILE_STORE` real global. - Refactored `make_datum_references_lists()` and moved the call to it into `GLOB` init with duct tape. - Renamed `GLOB.admin_log` to `GLOB.admin_activities` as it wasn't actually a log file. - Whitelist loading happens in config. - Renamed `SSdbcore`'s `SetRoundID()` to `InitializeRound()`. Now handles calling `CheckSchemaVersion()`. - Created macro for setting up log `GLOB`s. - Removed log line for `GLOB` count. - Moved call to `make_datum_reference_lists()` to `/datum/controller/global_vars/Initialize()`. I slimmed it down where possible too. - Updated comments about world init order. - Move `load_admins()` call to after log setup. - Removes unused function `gib_stack_trace()`. - Removes a bunch of unused log `GLOB`s. - Unlocks the secrets of the universe by finally making the first executed line of code deterministic. No functional changes. Closes #74792 Testmerge thoroughly. --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
63 lines
2.4 KiB
Plaintext
63 lines
2.4 KiB
Plaintext
// See also controllers/globals.dm
|
|
// See initialization order in /code/game/world.dm
|
|
|
|
/// Creates a global initializer with a given InitValue expression, do not use
|
|
#define GLOBAL_MANAGED(X, InitValue)\
|
|
/datum/controller/global_vars/proc/InitGlobal##X(){\
|
|
##X = ##InitValue;\
|
|
gvars_datum_init_order += #X;\
|
|
}
|
|
/// Creates an empty global initializer, do not use
|
|
#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; }
|
|
|
|
/// Prevents a given global from being VV'd
|
|
#ifndef TESTING
|
|
#define GLOBAL_PROTECT(X)\
|
|
/datum/controller/global_vars/InitGlobal##X(){\
|
|
..();\
|
|
gvars_datum_protected_varlist[#X] = TRUE;\
|
|
}
|
|
#else
|
|
#define GLOBAL_PROTECT(X)
|
|
#endif
|
|
|
|
/// Standard BYOND global, seriously do not use without an earthshakingly good reason
|
|
#define GLOBAL_REAL_VAR(X) var/global/##X;
|
|
|
|
|
|
/// Standard typed BYOND global, seriously do not use without an earthshakingly good reason
|
|
#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X;
|
|
|
|
/// Defines a global var on the controller, do not use
|
|
#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X
|
|
|
|
/// Create an untyped global with an initializer expression
|
|
#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue)
|
|
|
|
/// Create a global const var, do not use
|
|
#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X)
|
|
|
|
/// Create a list global with an initializer expression
|
|
#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue)
|
|
|
|
/// Create a list global that is initialized as an empty list
|
|
#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list())
|
|
|
|
/// Create a typed list global with an initializer expression
|
|
#define GLOBAL_LIST_INIT_TYPED(X, Typepath, InitValue) GLOBAL_RAW(/list##Typepath/X); GLOBAL_MANAGED(X, InitValue)
|
|
|
|
/// Create a typed list global that is initialized as an empty list
|
|
#define GLOBAL_LIST_EMPTY_TYPED(X, Typepath) GLOBAL_LIST_INIT_TYPED(X, Typepath, list())
|
|
|
|
/// Create a typed global with an initializer expression
|
|
#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue)
|
|
|
|
/// Create an untyped null global
|
|
#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X)
|
|
|
|
/// Create a null global list
|
|
#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X)
|
|
|
|
/// Create a typed null global
|
|
#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X)
|