yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_room_selector.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_SELECTOR_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_SELECTOR_H
3
4#include <functional>
5
6#include "app/editor/editor.h"
7#include "rom/rom.h"
8#include "imgui/imgui.h"
11#include "zelda3/game_data.h"
12
13namespace yaze {
14namespace editor {
15
20 public:
21 explicit DungeonRoomSelector(Rom* rom = nullptr) : rom_(rom) {}
22
23 void Draw();
24 void DrawRoomSelector();
26
27 // Unified context setter (preferred)
29 rom_ = ctx.rom;
31 }
32 EditorContext context() const { return {rom_, game_data_}; }
33
34 // Individual setters for compatibility
35 void SetRom(Rom* rom) { rom_ = rom; }
36 Rom* rom() const { return rom_; }
39
40 // Room selection
41 void set_current_room_id(uint16_t room_id) { current_room_id_ = room_id; }
42 int current_room_id() const { return current_room_id_; }
43
44 void set_active_rooms(const ImVector<int>& rooms) { active_rooms_ = rooms; }
45 const ImVector<int>& active_rooms() const { return active_rooms_; }
46 ImVector<int>& mutable_active_rooms() { return active_rooms_; }
47
48 // Entrance selection
49 void set_current_entrance_id(int entrance_id) {
50 current_entrance_id_ = entrance_id;
51 }
53
54 // Room data access
55 void set_rooms(std::array<zelda3::Room, 0x128>* rooms) { rooms_ = rooms; }
56 void set_entrances(std::array<zelda3::RoomEntrance, 0x8C>* entrances) {
57 entrances_ = entrances;
58 }
59
60 // Callback for room selection events
61 void SetRoomSelectedCallback(std::function<void(int)> callback) {
62 room_selected_callback_ = std::move(callback);
63 }
64 [[deprecated("Use SetRoomSelectedCallback() instead")]]
65 void set_room_selected_callback(std::function<void(int)> callback) {
66 SetRoomSelectedCallback(std::move(callback));
67 }
68
69 // Callback for entrance selection events (triggers room opening)
70 void SetEntranceSelectedCallback(std::function<void(int)> callback) {
71 entrance_selected_callback_ = std::move(callback);
72 }
73 [[deprecated("Use SetEntranceSelectedCallback() instead")]]
74 void set_entrance_selected_callback(std::function<void(int)> callback) {
75 SetEntranceSelectedCallback(std::move(callback));
76 }
77
78 private:
79 Rom* rom_ = nullptr;
81 uint16_t current_room_id_ = 0;
83 ImVector<int> active_rooms_;
84
85 std::array<zelda3::Room, 0x128>* rooms_ = nullptr;
86 std::array<zelda3::RoomEntrance, 0x8C>* entrances_ = nullptr;
87
88 // Callback for room selection events
89 std::function<void(int)> room_selected_callback_;
90
91 // Callback for entrance selection events
92 std::function<void(int)> entrance_selected_callback_;
93
94 ImGuiTextFilter room_filter_;
95 ImGuiTextFilter entrance_filter_;
96};
97
98} // namespace editor
99} // namespace yaze
100
101#endif
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
Handles room and entrance selection UI.
void set_entrances(std::array< zelda3::RoomEntrance, 0x8C > *entrances)
void set_entrance_selected_callback(std::function< void(int)> callback)
void SetGameData(zelda3::GameData *game_data)
void SetEntranceSelectedCallback(std::function< void(int)> callback)
const ImVector< int > & active_rooms() const
void set_current_entrance_id(int entrance_id)
void set_room_selected_callback(std::function< void(int)> callback)
std::array< zelda3::RoomEntrance, 0x8C > * entrances_
std::function< void(int)> room_selected_callback_
void SetRoomSelectedCallback(std::function< void(int)> callback)
std::array< zelda3::Room, 0x128 > * rooms_
void set_active_rooms(const ImVector< int > &rooms)
zelda3::GameData * game_data() const
std::function< void(int)> entrance_selected_callback_
void set_rooms(std::array< zelda3::Room, 0x128 > *rooms)
Lightweight view into the essential runtime context (Rom + GameData)
Definition editor.h:67
zelda3::GameData * game_data
Definition editor.h:69