yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_room_loader.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_LOADER_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_LOADER_H
3
4#include <unordered_map>
5#include <vector>
6
7#include "absl/status/status.h"
9#include "app/editor/editor.h"
10#include "rom/rom.h"
11#include "zelda3/dungeon/room.h"
13#include "zelda3/game_data.h"
14
15namespace yaze {
16namespace editor {
17
25 public:
26 explicit DungeonRoomLoader(Rom* rom) : rom_(rom) {}
27
28 // Unified context setter (preferred)
30 rom_ = ctx.rom;
32 }
33 EditorContext context() const { return {rom_, game_data_}; }
34
35 // Individual setters for compatibility
36 void SetRom(Rom* rom) { rom_ = rom; }
37 Rom* rom() const { return rom_; }
40
41 // Room loading
42 absl::Status LoadRoom(int room_id, zelda3::Room& room);
43 absl::Status LoadAllRooms(DungeonRoomStore& rooms);
44 absl::Status LoadRoomEntrances(
45 std::array<zelda3::RoomEntrance, zelda3::kNumDungeonEntranceSlots>&
46 entrances);
47 absl::Status LoadDungeonSpawnPoints(
48 std::array<zelda3::DungeonSpawnPoint, zelda3::kNumDungeonSpawnPoints>&
49 spawn_points);
50
51 // Room size management
53 uint64_t GetTotalRoomSize() const { return total_room_size_; }
54
55 // Room graphics
56 absl::Status LoadAndRenderRoomGraphics(zelda3::Room& room);
57 absl::Status ReloadAllRoomGraphics(DungeonRoomStore& rooms);
58
59 // Data access
60 const std::vector<int64_t>& GetRoomSizePointers() const {
62 }
63 const std::vector<int64_t>& GetRoomSizes() const { return room_sizes_; }
64 const std::unordered_map<int, int>& GetRoomSizeAddresses() const {
66 }
67 const std::unordered_map<int, ImVec4>& GetRoomPalette() const {
68 return room_palette_;
69 }
70
71 private:
74
75 std::vector<int64_t> room_size_pointers_;
76 std::vector<int64_t> room_sizes_;
77 std::unordered_map<int, int> room_size_addresses_;
78 std::unordered_map<int, ImVec4> room_palette_;
79 uint64_t total_room_size_ = 0;
80};
81
82} // namespace editor
83} // namespace yaze
84
85#endif // YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_LOADER_H
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
Manages loading and saving of dungeon room data.
const std::unordered_map< int, ImVec4 > & GetRoomPalette() const
const std::vector< int64_t > & GetRoomSizes() const
absl::Status ReloadAllRoomGraphics(DungeonRoomStore &rooms)
absl::Status LoadRoom(int room_id, zelda3::Room &room)
std::unordered_map< int, int > room_size_addresses_
std::vector< int64_t > room_size_pointers_
absl::Status LoadRoomEntrances(std::array< zelda3::RoomEntrance, zelda3::kNumDungeonEntranceSlots > &entrances)
absl::Status LoadAllRooms(DungeonRoomStore &rooms)
zelda3::GameData * game_data() const
absl::Status LoadDungeonSpawnPoints(std::array< zelda3::DungeonSpawnPoint, zelda3::kNumDungeonSpawnPoints > &spawn_points)
const std::vector< int64_t > & GetRoomSizePointers() const
std::unordered_map< int, ImVec4 > room_palette_
const std::unordered_map< int, int > & GetRoomSizeAddresses() const
void SetGameData(zelda3::GameData *game_data)
void SetContext(EditorContext ctx)
absl::Status LoadAndRenderRoomGraphics(zelda3::Room &room)
Lightweight view into the essential runtime context (Rom + GameData)
Definition editor.h:72
zelda3::GameData * game_data
Definition editor.h:74