1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_STORE_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_ROOM_STORE_H
35 if (room_id < 0 || room_id >=
static_cast<int>(
kRoomCount)) {
38 return rooms_[room_id].get();
43 return room !=
nullptr && room->IsLoaded() ? room :
nullptr;
48 return room !=
nullptr && room->IsLoaded() ? room :
nullptr;
66 for (
auto& room :
rooms_) {
71 template <
typename Fn>
73 for (
size_t i = 0; i <
rooms_.size(); ++i) {
75 fn(
static_cast<int>(i), *
rooms_[i]);
80 template <
typename Fn>
82 for (
size_t i = 0; i <
rooms_.size(); ++i) {
84 fn(
static_cast<int>(i), *
rooms_[i]);
89 template <
typename Fn>
98 template <
typename Fn>
116 auto room = std::make_unique<zelda3::Room>();
119 rooms_[index] = std::move(room);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
const zelda3::Room * GetIfLoaded(int room_id) const
zelda3::Room * GetIfMaterialized(int room_id)
static constexpr size_t kRoomCount
void ForEachMaterialized(Fn &&fn) const
const zelda3::Room & operator[](size_t index) const
zelda3::Room * GetIfLoaded(int room_id)
DungeonRoomStore()=default
std::array< std::unique_ptr< zelda3::Room >, kRoomCount > rooms_
void SetGameData(zelda3::GameData *game_data)
const zelda3::Room * GetIfMaterialized(int room_id) const
zelda3::GameData * game_data_
zelda3::GameData * game_data() const
void ForEachMaterialized(Fn &&fn)
void ForEachLoaded(Fn &&fn)
zelda3::Room & EnsureRoom(size_t index) const
void ForEachLoaded(Fn &&fn) const
zelda3::Room & operator[](size_t index)
DungeonRoomStore(Rom *rom, zelda3::GameData *game_data=nullptr)
void SetGameData(GameData *data)
Editors are the view controllers for the application.
constexpr int kNumberOfRooms