yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_inspect.h
Go to the documentation of this file.
1#ifndef YAZE_CLI_HANDLERS_OVERWORLD_INSPECT_H_
2#define YAZE_CLI_HANDLERS_OVERWORLD_INSPECT_H_
3
4#include <cstdint>
5#include <optional>
6#include <string>
7#include <string_view>
8#include <vector>
9
10#include "absl/status/statusor.h"
11
12namespace yaze {
13class Rom;
14
15namespace zelda3 {
16class Overworld;
17class OverworldEntrance;
18class OverworldExit;
19class OverworldMap;
20}
21
22namespace cli {
23namespace overworld {
24
25enum class WarpType {
27 kHole,
28 kExit,
29};
30
31struct MapSummary {
32 int map_id;
33 int world;
35 int map_x;
36 int map_y;
40 std::string area_size;
41 uint16_t message_id;
43 uint8_t area_palette;
44 uint8_t main_palette;
45 uint8_t animated_gfx;
48 std::vector<uint8_t> sprite_graphics;
49 std::vector<uint8_t> sprite_palettes;
50 std::vector<uint8_t> area_music;
51 std::vector<uint8_t> static_graphics;
53 uint16_t overlay_id;
54};
55
56struct WarpEntry {
58 uint16_t raw_map_id;
59 int map_id;
60 int world;
62 int map_x;
63 int map_y;
68 uint16_t map_pos;
69 bool deleted;
70 bool is_hole;
71 std::optional<uint8_t> entrance_id;
72 std::optional<std::string> entrance_name;
73 std::optional<uint16_t> room_id;
74 std::optional<uint16_t> door_type_1;
75 std::optional<uint16_t> door_type_2;
76};
77
78struct WarpQuery {
79 std::optional<int> world;
80 std::optional<int> map_id;
81 std::optional<WarpType> type;
82};
83
84struct TileMatch {
85 int map_id;
86 int world;
91};
92
94 std::optional<int> map_id;
95 std::optional<int> world;
96};
97
99 uint8_t sprite_id;
101 int world;
102 int x;
103 int y;
104 std::optional<std::string> sprite_name;
105};
106
108 std::optional<int> map_id;
109 std::optional<int> world;
110 std::optional<uint8_t> sprite_id;
111};
112
114 uint8_t entrance_id;
116 int world;
117 int x;
118 int y;
119 uint8_t area_x;
120 uint8_t area_y;
121 uint16_t map_pos;
123 std::optional<std::string> entrance_name;
124};
125
128 int world;
129 uint16_t tile_id;
130 int count;
131 std::vector<std::pair<int, int>> positions; // (x, y) positions
132};
133
134absl::StatusOr<int> ParseNumeric(std::string_view value, int base = 0);
135absl::StatusOr<int> ParseWorldSpecifier(std::string_view value);
136absl::StatusOr<int> InferWorldFromMapId(int map_id);
137std::string WorldName(int world);
138std::string WarpTypeName(WarpType type);
139
140absl::StatusOr<MapSummary> BuildMapSummary(zelda3::Overworld& overworld,
141 int map_id);
142
143absl::StatusOr<std::vector<WarpEntry>> CollectWarpEntries(
144 const zelda3::Overworld& overworld, const WarpQuery& query);
145
146absl::StatusOr<std::vector<TileMatch>> FindTileMatches(
147 zelda3::Overworld& overworld, uint16_t tile_id,
148 const TileSearchOptions& options = {});
149
150absl::StatusOr<std::vector<OverworldSprite>> CollectOverworldSprites(
151 const zelda3::Overworld& overworld, const SpriteQuery& query);
152
153absl::StatusOr<EntranceDetails> GetEntranceDetails(
154 const zelda3::Overworld& overworld, uint8_t entrance_id);
155
156absl::StatusOr<TileStatistics> AnalyzeTileUsage(
157 zelda3::Overworld& overworld, uint16_t tile_id,
158 const TileSearchOptions& options = {});
159
160} // namespace overworld
161} // namespace cli
162} // namespace yaze
163
164#endif // YAZE_CLI_HANDLERS_OVERWORLD_INSPECT_H_
Represents the full Overworld data, light and dark world.
Definition overworld.h:135
absl::StatusOr< int > InferWorldFromMapId(int map_id)
absl::StatusOr< MapSummary > BuildMapSummary(zelda3::Overworld &overworld, int map_id)
absl::StatusOr< std::vector< WarpEntry > > CollectWarpEntries(const zelda3::Overworld &overworld, const WarpQuery &query)
absl::StatusOr< int > ParseNumeric(std::string_view value, int base)
absl::StatusOr< TileStatistics > AnalyzeTileUsage(zelda3::Overworld &overworld, uint16_t tile_id, const TileSearchOptions &options)
absl::StatusOr< int > ParseWorldSpecifier(std::string_view value)
absl::StatusOr< EntranceDetails > GetEntranceDetails(const zelda3::Overworld &overworld, uint8_t entrance_id)
absl::StatusOr< std::vector< OverworldSprite > > CollectOverworldSprites(const zelda3::Overworld &overworld, const SpriteQuery &query)
absl::StatusOr< std::vector< TileMatch > > FindTileMatches(zelda3::Overworld &overworld, uint16_t tile_id, const TileSearchOptions &options)
std::string WarpTypeName(WarpType type)
std::string WorldName(int world)
Main namespace for the application.
std::optional< std::string > entrance_name
std::vector< uint8_t > sprite_graphics
std::vector< uint8_t > static_graphics
std::vector< uint8_t > sprite_palettes
std::vector< uint8_t > area_music
std::optional< std::string > sprite_name
std::optional< uint8_t > sprite_id
std::vector< std::pair< int, int > > positions
std::optional< std::string > entrance_name
std::optional< uint16_t > door_type_1
std::optional< uint16_t > door_type_2
std::optional< uint8_t > entrance_id
std::optional< uint16_t > room_id
std::optional< WarpType > type