29 std::memory_order_release);
52 int routine_id)
const {
66 int* base_height)
const {
68 if (info ==
nullptr) {
83 int16_t object_id,
bool custom_objects_enabled)
const {
84 if (object_id == 0x31 || object_id == 0x32 || object_id == 0x54) {
96 std::vector<int16_t> ids;
99 ids.push_back(object_id);
101 std::sort(ids.begin(), ids.end());
111 for (
int id = 0x01;
id <= 0x02;
id++) {
114 for (
int id = 0x03;
id <= 0x04;
id++) {
117 for (
int id = 0x05;
id <= 0x06;
id++) {
120 for (
int id = 0x07;
id <= 0x08;
id++) {
124 for (
int id = 0x0A;
id <= 0x0B;
id++) {
129 for (
int id : {0x0C, 0x0D, 0x10, 0x11, 0x14}) {
132 for (
int id : {0x0E, 0x0F, 0x12, 0x13}) {
135 for (
int id : {0x15, 0x18, 0x19, 0x1C, 0x1D, 0x20}) {
138 for (
int id : {0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F}) {
145 for (
int id = 0x23;
id <= 0x2E;
id++) {
169 for (
int id = 0x3F;
id <= 0x46;
id++) {
201 for (
int id = 0x61;
id <= 0x62;
id++) {
204 for (
int id = 0x63;
id <= 0x64;
id++) {
207 for (
int id = 0x65;
id <= 0x66;
id++) {
210 for (
int id = 0x67;
id <= 0x68;
id++) {
214 for (
int id = 0x6A;
id <= 0x6B;
id++) {
269 for (
int id = 0x97;
id <= 0x9F;
id++) {
315 for (
int id = 0xC5;
id <= 0xCA;
id++) {
343 for (
int id = 0xE0;
id <= 0xE8;
id++) {
346 for (
int id = 0xE9;
id <= 0xEF;
id++) {
351 for (
int id = 0xF0;
id <= 0xF7;
id++) {
355 for (
int id = 0xF9;
id <= 0xFD;
id++) {
362 for (
int id = 0x100;
id <= 0x107;
id++) {
365 for (
int id = 0x108;
id <= 0x10F;
id++) {
368 for (
int id = 0x110;
id <= 0x113;
id++) {
371 for (
int id = 0x114;
id <= 0x117;
id++) {
374 for (
int id = 0x118;
id <= 0x11B;
id++) {
397 for (
int id = 0x130;
id <= 0x133;
id++) {
417 for (
int id = 0xF83;
id <= 0xF89;
id++) {
420 for (
int id = 0xF8A;
id <= 0xF8C;
id++) {
441 for (
int id = 0xF9B;
id <= 0xF9D;
id++) {
444 for (
int id = 0xF9E;
id <= 0xFA1;
id++) {
447 for (
int id = 0xFA2;
id <= 0xFA5;
id++) {
450 for (
int id = 0xFA6;
id <= 0xFA9;
id++) {
463 for (
int id = 0xFB4;
id <= 0xFB9;
id++) {
470 for (
int id = 0xFBE;
id <= 0xFC6;
id++) {
481 for (
int id = 0xFCF;
id <= 0xFD3;
id++) {
486 for (
int id = 0xFD6;
id <= 0xFD9;
id++) {
498 for (
int id = 0xFE3;
id <= 0xFE5;
id++) {
523 for (
int id = 0xFFC;
id <= 0xFFE;
id++) {
Unified draw routine registry.
const DrawRoutineInfo * GetRoutineInfo(int routine_id) const
void BuildObjectMapping()
bool GetRoutineDimensions(int routine_id, int *base_width, int *base_height) const
bool CustomObjectsEnabled() const
std::vector< int16_t > GetMappedObjectIds() const
std::atomic< bool > custom_objects_enabled_
std::unordered_map< int16_t, int > object_to_routine_map_
bool RoutineDrawsToBothBGs(int routine_id) const
std::unordered_map< int, const DrawRoutineInfo * > routine_map_
int GetRoutineIdForObject(int16_t object_id) const
std::vector< DrawRoutineInfo > routines_
void RefreshFeatureFlagMappings()
static DrawRoutineRegistry & Get()
constexpr int kWaterHopStairsA
constexpr int kAgahnimsAltar
constexpr int kDamFloodGate
constexpr int kSanctuaryWall
constexpr int kVitreousGooDamage
constexpr int kDownwardsEdge1x1_1to16plus7
constexpr int kRightwardsHasEdge1x1_1to16_plus23
constexpr int kMagicBatAltar
constexpr int kWaterHopStairsB
constexpr int kBigGrayRock
constexpr int kSmithyFurnace
constexpr int kFloorLight
constexpr int kCustomObject
constexpr int kWeird2x4_1to16
constexpr int kFortuneTellerRoom
constexpr int kBigWallDecor
constexpr int kDownwardsHasEdge1x1_1to16_plus23
void RegisterDiagonalRoutines(std::vector< DrawRoutineInfo > ®istry)
Register all diagonal draw routines to the registry.
void RegisterCornerRoutines(std::vector< DrawRoutineInfo > ®istry)
Register all corner draw routines to the registry.
void RegisterDownwardsRoutines(std::vector< DrawRoutineInfo > ®istry)
Register all downwards draw routines to the registry.
void RegisterRightwardsRoutines(std::vector< DrawRoutineInfo > ®istry)
Register all rightwards draw routines to the registry.
void RegisterSpecialRoutines(std::vector< DrawRoutineInfo > ®istry)
Register all special/miscellaneous draw routines to the registry.
Metadata about a draw routine.