mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 07:46:20 +00:00
## About The Pull Request Fixes all instances of numbers being used as assoc list keys in things that aren't alists, either by turning them into alists or changing the keys to something else. Also adds new macros to support creating global alists, as a few global lists became alists. Most of these are pretty simple and self-explanatory but - The GLOB.huds one necessitated rewriting because code depended on it being a non-assoc list, which it technically was because the defines it used as keys were numbers so BYOND turned it into a regular list, most of this was for loops through all the subtypes of `/datum/atom_hud/data/diagnostic` of which there's only one, so I just changed it to get that type directly by key - NT Frontier used number indexes which it looped through for some reason and also passed to TGUI, changed these to strings and adjusted the TGUI to match, I tested this and it works fine ## Why It's Good For The Game Makes the code compile, I couldn't test everything but I tried to check all usages of affected vars to make sure they wouldn't break from being switched to alists, a TM might be in order just to be sure nothing's fucked ## Changelog 🆑 refactor: rewrote all cases of numbers being used as keys in non-alist associative lists /🆑
69 lines
2.7 KiB
Plaintext
69 lines
2.7 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 an alist global with an initializer expression
|
|
#define GLOBAL_ALIST_INIT(X, InitValue) GLOBAL_RAW(/alist/##X); GLOBAL_MANAGED(X, InitValue)
|
|
|
|
// Create an alist global that is initialized as an empty list
|
|
#define GLOBAL_ALIST_EMPTY(X) GLOBAL_ALIST_INIT(X, alist())
|
|
|
|
/// 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)
|