yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
draw_routine_registry.cc
Go to the documentation of this file.
2
8
9namespace yaze {
10namespace zelda3 {
11
13 static DrawRoutineRegistry instance;
14 if (!instance.initialized_) {
15 instance.Initialize();
16 }
17 return instance;
18}
19
21 if (initialized_) return;
23 initialized_ = true;
24}
25
42
44 auto it = routine_map_.find(routine_id);
45 if (it == routine_map_.end()) {
46 return nullptr;
47 }
48 return it->second;
49}
50
52 const DrawRoutineInfo* info = GetRoutineInfo(routine_id);
53 return info != nullptr && info->draws_to_both_bgs;
54}
55
57 int* base_width,
58 int* base_height) const {
59 const DrawRoutineInfo* info = GetRoutineInfo(routine_id);
60 if (info == nullptr) {
61 return false;
62 }
63 if (base_width) *base_width = info->base_width;
64 if (base_height) *base_height = info->base_height;
65 return true;
66}
67
68} // namespace zelda3
69} // namespace yaze
70
Unified draw routine registry.
const DrawRoutineInfo * GetRoutineInfo(int routine_id) const
bool GetRoutineDimensions(int routine_id, int *base_width, int *base_height) const
bool RoutineDrawsToBothBGs(int routine_id) const
std::unordered_map< int, const DrawRoutineInfo * > routine_map_
std::vector< DrawRoutineInfo > routines_
static DrawRoutineRegistry & Get()
void RegisterDiagonalRoutines(std::vector< DrawRoutineInfo > &registry)
Register all diagonal draw routines to the registry.
void RegisterCornerRoutines(std::vector< DrawRoutineInfo > &registry)
Register all corner draw routines to the registry.
void RegisterDownwardsRoutines(std::vector< DrawRoutineInfo > &registry)
Register all downwards draw routines to the registry.
void RegisterRightwardsRoutines(std::vector< DrawRoutineInfo > &registry)
Register all rightwards draw routines to the registry.
void RegisterSpecialRoutines(std::vector< DrawRoutineInfo > &registry)
Register all special/miscellaneous draw routines to the registry.
Metadata about a draw routine.