yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_entrance_camera.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_ENTRANCE_CAMERA_H_
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_ENTRANCE_CAMERA_H_
3
4#include <array>
5#include <cstdint>
6#include <string>
7#include <vector>
8
9namespace yaze::zelda3 {
11class RoomEntrance;
12} // namespace yaze::zelda3
13
14namespace yaze::editor {
15
20
23 int room_id = -1;
24 uint16_t player_x = 0;
25 uint16_t player_y = 0;
26 uint16_t camera_x = 0;
27 uint16_t camera_y = 0;
28 uint16_t trigger_x = 0;
29 uint16_t trigger_y = 0;
30 // QN, FN, QS, FS, QW, FW, QE, FE.
31 std::array<uint8_t, 8> boundaries{};
32 uint8_t quadrant = 0;
33 bool dirty = false;
34
35 bool operator==(const DungeonEntranceCameraState&) const = default;
36};
37
39 uint16_t camera_x = 0;
40 uint16_t camera_y = 0;
41 uint16_t trigger_x = 0;
42 uint16_t trigger_y = 0;
43 std::array<uint8_t, 8> boundaries{};
44 uint8_t quadrant = 0;
45};
46
49 std::vector<std::string> errors;
50 std::vector<std::string> differences;
54
55 bool geometry_valid() const { return errors.empty(); }
56 bool matches_derived() const { return differences.empty(); }
57 bool can_repair() const {
59 }
60};
61
62DungeonEntranceCameraDerived DeriveDungeonEntranceCamera(int room_id,
63 uint16_t player_x,
64 uint16_t player_y);
65
66DungeonEntranceCameraValidation ValidateDungeonEntranceCamera(
67 const DungeonEntranceCameraState& state);
68
69// Returns a copy with only camera-derived fields changed. Room 0x104 has a
70// known vanilla quadrant exception, so its quadrant is preserved.
71DungeonEntranceCameraState BuildRepairedDungeonEntranceCamera(
72 const DungeonEntranceCameraState& state);
73
74DungeonEntranceCameraState CaptureDungeonEntranceCamera(
75 const zelda3::RoomEntrance& entrance);
76DungeonEntranceCameraState CaptureDungeonSpawnCamera(
77 const zelda3::DungeonSpawnPoint& spawn);
78void ApplyDungeonEntranceCameraState(const DungeonEntranceCameraState& state,
79 zelda3::RoomEntrance* entrance);
80void ApplyDungeonSpawnCameraState(const DungeonEntranceCameraState& state,
82
83} // namespace yaze::editor
84
85#endif // YAZE_APP_EDITOR_DUNGEON_DUNGEON_ENTRANCE_CAMERA_H_
Dungeon Room Entrance or Spawn Point.
Editors are the view controllers for the application.
DungeonEntranceCameraState CaptureDungeonSpawnCamera(const zelda3::DungeonSpawnPoint &spawn)
DungeonEntranceCameraState BuildRepairedDungeonEntranceCamera(const DungeonEntranceCameraState &state)
DungeonEntranceCameraDerived DeriveDungeonEntranceCamera(int room_id, uint16_t player_x, uint16_t player_y)
void ApplyDungeonSpawnCameraState(const DungeonEntranceCameraState &state, zelda3::DungeonSpawnPoint *spawn)
DungeonEntranceCameraValidation ValidateDungeonEntranceCamera(const DungeonEntranceCameraState &state)
DungeonEntranceCameraState CaptureDungeonEntranceCamera(const zelda3::RoomEntrance &entrance)
void ApplyDungeonEntranceCameraState(const DungeonEntranceCameraState &state, zelda3::RoomEntrance *entrance)
Zelda 3 specific classes and functions.
bool operator==(const DungeonEntranceCameraState &) const =default