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
8 const std::array<zelda3::Room, 0x128>& rooms) {
9 blockset_usage_.clear();
10 spriteset_usage_.clear();
11 palette_usage_.clear();
12
13 for (const auto& room : rooms) {
14 if (blockset_usage_.find(room.blockset) == blockset_usage_.end()) {
15 blockset_usage_[room.blockset] = 1;
16 } else {
17 blockset_usage_[room.blockset] += 1;
18 }
19
20 if (spriteset_usage_.find(room.spriteset) == spriteset_usage_.end()) {
21 spriteset_usage_[room.spriteset] = 1;
22 } else {
23 spriteset_usage_[room.spriteset] += 1;
24 }
25
26 if (palette_usage_.find(room.palette) == palette_usage_.end()) {
27 palette_usage_[room.palette] = 1;
28 } else {
29 palette_usage_[room.palette] += 1;
30 }
31 }
32}
33
35 if (ImGui::Button("Refresh")) {
37 }
38
39 ImGui::Text("Usage Statistics");
40 ImGui::Separator();
41
42 ImGui::Text("Blocksets: %zu used", blockset_usage_.size());
43 ImGui::Text("Spritesets: %zu used", spriteset_usage_.size());
44 ImGui::Text("Palettes: %zu used", palette_usage_.size());
45
46 ImGui::Separator();
47
48 // Detailed usage breakdown
49 if (ImGui::CollapsingHeader("Blockset Usage")) {
50 for (const auto& [blockset, count] : blockset_usage_) {
51 ImGui::Text("Blockset 0x%02X: %d rooms", blockset, count);
52 }
53 }
54
55 if (ImGui::CollapsingHeader("Spriteset Usage")) {
56 for (const auto& [spriteset, count] : spriteset_usage_) {
57 ImGui::Text("Spriteset 0x%02X: %d rooms", spriteset, count);
58 }
59 }
60
61 if (ImGui::CollapsingHeader("Palette Usage")) {
62 for (const auto& [palette, count] : palette_usage_) {
63 ImGui::Text("Palette 0x%02X: %d rooms", palette, count);
64 }
65 }
66}
67
69 // TODO: Implement usage grid visualization
70 ImGui::Text("Usage grid visualization not yet implemented");
71}
72
74 const absl::flat_hash_map<uint16_t, int>& usage_map, uint16_t& selected_set,
75 int spriteset_offset) {
76 // TODO: Implement set usage rendering
77 ImGui::Text("Set usage rendering not yet implemented");
78}
79
81 selected_blockset_ = 0xFFFF;
82 selected_spriteset_ = 0xFFFF;
83 selected_palette_ = 0xFFFF;
84 spriteset_usage_.clear();
85 blockset_usage_.clear();
86 palette_usage_.clear();
87}
88
89} // 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.
Definition agent_chat.cc:23