Files
fulpstation/code/__HELPERS/level_traits.dm
SomethingFish edb232b692 March TGU (#953)
* lol.

* bit of changes

* deletes stuff

* some map path updates

* more changes

* deletes unit test that was gonna be deleted in tg

* see if this fixes anything
2023-04-04 22:12:01 -04:00

31 lines
1.2 KiB
Plaintext

// Helpers for checking whether a z-level conforms to a specific requirement
// Basic levels
#define is_centcom_level(z) SSmapping.level_trait(z, ZTRAIT_CENTCOM)
GLOBAL_LIST_EMPTY(station_levels_cache)
// Used to prevent z from being re-evaluated
GLOBAL_VAR(station_level_z_scratch)
// Called a lot, somewhat slow, so has its own cache
#define is_station_level(z) \
( \
z && \
( \
/* The right hand side of this guarantees that we'll have the space to fill later on, while also not failing the condition */ \
(GLOB.station_levels_cache.len < (GLOB.station_level_z_scratch = z) && (GLOB.station_levels_cache.len = GLOB.station_level_z_scratch)) \
|| isnull(GLOB.station_levels_cache[GLOB.station_level_z_scratch]) \
) \
? (GLOB.station_levels_cache[GLOB.station_level_z_scratch] = !!SSmapping.level_trait(z, ZTRAIT_STATION)) \
: GLOB.station_levels_cache[GLOB.station_level_z_scratch] \
)
#define is_mining_level(z) SSmapping.level_trait(z, ZTRAIT_MINING)
#define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED)
#define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY)
#define is_secret_level(z) SSmapping.level_trait(z, ZTRAIT_SECRET)