yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_commands.cc
Go to the documentation of this file.
2
3#include "absl/strings/numbers.h"
4#include "absl/strings/str_format.h"
5
6namespace yaze {
7namespace cli {
8namespace handlers {
9
11 resources::OutputFormatter& formatter) {
12 auto tile_id_str = parser.GetString("tile").value();
13
14 int tile_id;
15 if (!absl::SimpleHexAtoi(tile_id_str, &tile_id)) {
16 return absl::InvalidArgumentError(
17 "Invalid tile ID format. Must be hex.");
18 }
19
20 formatter.BeginObject("Overworld Tile Search");
21 formatter.AddField("tile_id", absl::StrFormat("0x%03X", tile_id));
22 formatter.AddField("matches_found", 0);
23 formatter.AddField("status", "not_implemented");
24 formatter.AddField("message", "Tile search requires overworld system integration");
25
26 formatter.BeginArray("matches");
27 formatter.EndArray();
28 formatter.EndObject();
29
30 return absl::OkStatus();
31}
32
34 resources::OutputFormatter& formatter) {
35 auto screen_id_str = parser.GetString("screen").value();
36
37 int screen_id;
38 if (!absl::SimpleHexAtoi(screen_id_str, &screen_id)) {
39 return absl::InvalidArgumentError(
40 "Invalid screen ID format. Must be hex.");
41 }
42
43 formatter.BeginObject("Overworld Map Description");
44 formatter.AddField("screen_id", absl::StrFormat("0x%02X", screen_id));
45 formatter.AddField("width", 32);
46 formatter.AddField("height", 32);
47 formatter.AddField("status", "not_implemented");
48 formatter.AddField("message", "Map description requires overworld system integration");
49
50 formatter.BeginObject("properties");
51 formatter.AddField("has_warps", "Unknown");
52 formatter.AddField("has_sprites", "Unknown");
53 formatter.AddField("has_entrances", "Unknown");
54 formatter.EndObject();
55 formatter.EndObject();
56
57 return absl::OkStatus();
58}
59
61 resources::OutputFormatter& formatter) {
62 auto screen_id_str = parser.GetString("screen").value_or("all");
63
64 formatter.BeginObject("Overworld Warps");
65 formatter.AddField("screen_filter", screen_id_str);
66 formatter.AddField("total_warps", 0);
67 formatter.AddField("status", "not_implemented");
68 formatter.AddField("message", "Warp listing requires overworld system integration");
69
70 formatter.BeginArray("warps");
71 formatter.EndArray();
72 formatter.EndObject();
73
74 return absl::OkStatus();
75}
76
78 resources::OutputFormatter& formatter) {
79 auto screen_id_str = parser.GetString("screen").value_or("all");
80
81 formatter.BeginObject("Overworld Sprites");
82 formatter.AddField("screen_filter", screen_id_str);
83 formatter.AddField("total_sprites", 0);
84 formatter.AddField("status", "not_implemented");
85 formatter.AddField("message", "Sprite listing requires overworld system integration");
86
87 formatter.BeginArray("sprites");
88 formatter.EndArray();
89 formatter.EndObject();
90
91 return absl::OkStatus();
92}
93
95 resources::OutputFormatter& formatter) {
96 auto entrance_id_str = parser.GetString("entrance").value();
97
98 int entrance_id;
99 if (!absl::SimpleHexAtoi(entrance_id_str, &entrance_id)) {
100 return absl::InvalidArgumentError(
101 "Invalid entrance ID format. Must be hex.");
102 }
103
104 formatter.BeginObject("Overworld Entrance");
105 formatter.AddField("entrance_id", absl::StrFormat("0x%02X", entrance_id));
106 formatter.AddField("status", "not_implemented");
107 formatter.AddField("message", "Entrance info requires overworld system integration");
108
109 formatter.BeginObject("properties");
110 formatter.AddField("destination", "Unknown");
111 formatter.AddField("screen", "Unknown");
112 formatter.AddField("coordinates", "Unknown");
113 formatter.EndObject();
114 formatter.EndObject();
115
116 return absl::OkStatus();
117}
118
120 resources::OutputFormatter& formatter) {
121 auto screen_id_str = parser.GetString("screen").value_or("all");
122
123 formatter.BeginObject("Overworld Tile Statistics");
124 formatter.AddField("screen_filter", screen_id_str);
125 formatter.AddField("total_tiles", 0);
126 formatter.AddField("unique_tiles", 0);
127 formatter.AddField("status", "not_implemented");
128 formatter.AddField("message", "Tile stats require overworld system integration");
129
130 formatter.BeginArray("tile_counts");
131 formatter.EndArray();
132 formatter.EndObject();
133
134 return absl::OkStatus();
135}
136
137} // namespace handlers
138} // namespace cli
139} // namespace yaze
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:71
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Utility for parsing common CLI argument patterns.
std::optional< std::string > GetString(const std::string &name) const
Parse a named argument (e.g., –format=json or –format json)
Utility for consistent output formatting across commands.
void BeginArray(const std::string &key)
Begin an array.
void BeginObject(const std::string &title="")
Start a JSON object or text section.
void EndObject()
End a JSON object or text section.
void AddField(const std::string &key, const std::string &value)
Add a key-value pair.
Main namespace for the application.