56 int routine_id)
const {
70 int* base_height)
const {
72 if (info ==
nullptr) {
96 for (
int id = 0x01;
id <= 0x02;
id++) {
99 for (
int id = 0x03;
id <= 0x04;
id++) {
102 for (
int id = 0x05;
id <= 0x06;
id++) {
105 for (
int id = 0x07;
id <= 0x08;
id++) {
109 for (
int id = 0x0A;
id <= 0x0B;
id++) {
114 for (
int id : {0x0C, 0x0D, 0x10, 0x11, 0x14}) {
117 for (
int id : {0x0E, 0x0F, 0x12, 0x13}) {
120 for (
int id : {0x15, 0x18, 0x19, 0x1C, 0x1D, 0x20}) {
123 for (
int id : {0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F}) {
130 for (
int id = 0x23;
id <= 0x2E;
id++) {
157 for (
int id = 0x3F;
id <= 0x46;
id++) {
190 for (
int id = 0x61;
id <= 0x62;
id++) {
193 for (
int id = 0x63;
id <= 0x64;
id++) {
196 for (
int id = 0x65;
id <= 0x66;
id++) {
199 for (
int id = 0x67;
id <= 0x68;
id++) {
203 for (
int id = 0x6A;
id <= 0x6B;
id++) {
258 for (
int id = 0x97;
id <= 0x9F;
id++) {
304 for (
int id = 0xC5;
id <= 0xCA;
id++) {
332 for (
int id = 0xE0;
id <= 0xE8;
id++) {
335 for (
int id = 0xE9;
id <= 0xEF;
id++) {
340 for (
int id = 0xF0;
id <= 0xF7;
id++) {
344 for (
int id = 0xF9;
id <= 0xFD;
id++) {
351 for (
int id = 0x100;
id <= 0x107;
id++) {
354 for (
int id = 0x108;
id <= 0x10F;
id++) {
357 for (
int id = 0x110;
id <= 0x113;
id++) {
360 for (
int id = 0x114;
id <= 0x117;
id++) {
363 for (
int id = 0x118;
id <= 0x11B;
id++) {
386 for (
int id = 0x130;
id <= 0x133;
id++) {
406 for (
int id = 0xF83;
id <= 0xF89;
id++) {
409 for (
int id = 0xF8A;
id <= 0xF8C;
id++) {
426 for (
int id = 0xF9B;
id <= 0xF9D;
id++) {
429 for (
int id = 0xF9E;
id <= 0xFA1;
id++) {
432 for (
int id = 0xFA2;
id <= 0xFA5;
id++) {
435 for (
int id = 0xFA6;
id <= 0xFA9;
id++) {
448 for (
int id = 0xFB4;
id <= 0xFB9;
id++) {
455 for (
int id = 0xFBE;
id <= 0xFC6;
id++) {
466 for (
int id = 0xFCF;
id <= 0xFD3;
id++) {
471 for (
int id = 0xFD6;
id <= 0xFDA;
id++) {
482 for (
int id = 0xFE3;
id <= 0xFE5;
id++) {
507 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
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 kDamFloodGate
constexpr int kDownwardsEdge1x1_1to16plus7
constexpr int kRightwardsHasEdge1x1_1to16_plus23
constexpr int kWaterHopStairsB
constexpr int kFloorLight
constexpr int kCustomObject
constexpr int kWeird2x4_1to16
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.
bool kEnableCustomObjects
Metadata about a draw routine.