diff options
| author | Derek Hensley <hensley.derek58@gmail.com> | 2021-11-05 19:15:47 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-05 23:15:47 -0300 |
| commit | 49f55ff0052340d29cffe2767fdc7d2ee5adb9f4 (patch) | |
| tree | 775d90129d6d9bc8b7e960e55e62f1e030cd8f7b /src/code/z_env_flags.c | |
| parent | 2907da61c3268f440e9ebb706ac1939f21a5aa7e (diff) | |
EnvFlags OK (#404)
* Matched
* Remove magic number
* Rename system to EnvFlags
Diffstat (limited to 'src/code/z_env_flags.c')
| -rw-r--r-- | src/code/z_env_flags.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/code/z_env_flags.c b/src/code/z_env_flags.c new file mode 100644 index 000000000..d76681512 --- /dev/null +++ b/src/code/z_env_flags.c @@ -0,0 +1,33 @@ +#include "global.h" + +void EnvFlags_UnsetAll(GlobalContext* globalCtx) { + u8 i; + + for (i = 0; i < ARRAY_COUNT(globalCtx->envFlags); i++) { + globalCtx->envFlags[i] = 0; + } +} + +void EnvFlags_Set(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = 1 << bit; + + globalCtx->envFlags[index] |= mask; +} + +void EnvFlags_Unset(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = (1 << bit) ^ 0xFFFF; + + globalCtx->envFlags[index] &= mask; +} + +s32 EnvFlags_Get(GlobalContext* globalCtx, s16 flag) { + s16 index = flag / 16; + s16 bit = flag % 16; + s16 mask = 1 << bit; + + return globalCtx->envFlags[index] & mask; +} |
