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 &
EnsureRoom(
static_cast<size_t>(room_id));
47 if (room_id < 0 || room_id >=
static_cast<int>(
kRoomCount)) {
50 return rooms_[room_id].get();
55 return room !=
nullptr && room->IsLoaded() ? room :
nullptr;
60 return room !=
nullptr && room->IsLoaded() ? room :
nullptr;
78 for (
auto& room :
rooms_) {
83 template <
typename Fn>
85 for (
size_t i = 0; i <
rooms_.size(); ++i) {
87 fn(
static_cast<int>(i), *
rooms_[i]);
92 template <
typename Fn>
94 for (
size_t i = 0; i <
rooms_.size(); ++i) {
96 fn(
static_cast<int>(i), *
rooms_[i]);
101 template <
typename Fn>
110 template <
typename Fn>
128 auto room = std::make_unique<zelda3::Room>();
131 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 * TryEnsureRoom(int room_id) const
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
zelda3::Room * TryEnsureRoom(int room_id)
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