yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_usage_tracker.cc
Go to the documentation of this file.
2
3#include "imgui/imgui.h"
4
5namespace yaze::editor {
6
7void DungeonUsageTracker::CalculateUsageStats(const std::array<zelda3::Room, 0x128>& rooms) {
8 blockset_usage_.clear();
9 spriteset_usage_.clear();
10 palette_usage_.clear();
11
12 for (const auto& room : rooms) {
13 if (blockset_usage_.find(room.blockset) == blockset_usage_.end()) {
14 blockset_usage_[room.blockset] = 1;
15 } else {
16 blockset_usage_[room.blockset] += 1;
17 }
18
19 if (spriteset_usage_.find(room.spriteset) == spriteset_usage_.end()) {
20 spriteset_usage_[room.spriteset] = 1;
21 } else {
22 spriteset_usage_[room.spriteset] += 1;
23 }
24
25 if (palette_usage_.find(room.palette) == palette_usage_.end()) {
26 palette_usage_[room.palette] = 1;
27 } else {
28 palette_usage_[room.palette] += 1;
29 }
30 }
31}
32
34 if (ImGui::Button("Refresh")) {
36 }
37
38 ImGui::Text("Usage Statistics");
39 ImGui::Separator();
40
41 ImGui::Text("Blocksets: %zu used", blockset_usage_.size());
42 ImGui::Text("Spritesets: %zu used", spriteset_usage_.size());
43 ImGui::Text("Palettes: %zu used", palette_usage_.size());
44
45 ImGui::Separator();
46
47 // Detailed usage breakdown
48 if (ImGui::CollapsingHeader("Blockset Usage")) {
49 for (const auto& [blockset, count] : blockset_usage_) {
50 ImGui::Text("Blockset 0x%02X: %d rooms", blockset, count);
51 }
52 }
53
54 if (ImGui::CollapsingHeader("Spriteset Usage")) {
55 for (const auto& [spriteset, count] : spriteset_usage_) {
56 ImGui::Text("Spriteset 0x%02X: %d rooms", spriteset, count);
57 }
58 }
59
60 if (ImGui::CollapsingHeader("Palette Usage")) {
61 for (const auto& [palette, count] : palette_usage_) {
62 ImGui::Text("Palette 0x%02X: %d rooms", palette, count);
63 }
64 }
65}
66
68 // TODO: Implement usage grid visualization
69 ImGui::Text("Usage grid visualization not yet implemented");
70}
71
72void DungeonUsageTracker::RenderSetUsage(const absl::flat_hash_map<uint16_t, int>& usage_map,
73 uint16_t& selected_set, int spriteset_offset) {
74 // TODO: Implement set usage rendering
75 ImGui::Text("Set usage rendering not yet implemented");
76}
77
79 selected_blockset_ = 0xFFFF;
80 selected_spriteset_ = 0xFFFF;
81 selected_palette_ = 0xFFFF;
82 spriteset_usage_.clear();
83 blockset_usage_.clear();
84 palette_usage_.clear();
85}
86
87} // namespace yaze::editor
absl::flat_hash_map< uint16_t, int > palette_usage_
void CalculateUsageStats(const std::array< zelda3::Room, 0x128 > &rooms)
void RenderSetUsage(const absl::flat_hash_map< uint16_t, int > &usage_map, uint16_t &selected_set, int spriteset_offset=0x00)
absl::flat_hash_map< uint16_t, int > spriteset_usage_
absl::flat_hash_map< uint16_t, int > blockset_usage_
Editors are the view controllers for the application.