yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_commands.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_HANDLERS_DUNGEON_COMMANDS_H_
2#define YAZE_SRC_CLI_HANDLERS_DUNGEON_COMMANDS_H_
3
4#include <string_view>
5
7
8namespace yaze {
9namespace cli {
10namespace handlers {
11
12// Writes the dedicated seven-record dungeon spawn schema. If object_title is
13// non-empty, the report is nested under an object with that name.
14absl::Status WriteDungeonSpawnPointReport(Rom* rom, int spawn_id,
15 resources::OutputFormatter& formatter,
16 std::string_view object_title);
17
22 public:
23 std::string GetName() const { return "dungeon-list-sprites"; }
24 std::string GetDescription() const {
25 return "List all sprites in a dungeon room";
26 }
27 std::string GetUsage() const {
28 return "dungeon-list-sprites --room <room_id> [--sprite-registry <path>] "
29 "[--format <json|text>]";
30 }
31
32 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
33 return parser.RequireArgs({"room"});
34 }
35
36 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
37 resources::OutputFormatter& formatter) override;
38};
39
44 public:
45 std::string GetName() const { return "dungeon-describe-room"; }
46 std::string GetDescription() const {
47 return "Get detailed description of a dungeon room";
48 }
49 std::string GetUsage() const {
50 return "dungeon-describe-room --room <room_id> [--sprite-registry <path>] "
51 "[--include-objects] [--include-staircase-resolution] [--format "
52 "<json|text>]";
53 }
54
55 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
56 return parser.RequireArgs({"room"});
57 }
58
59 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
60 resources::OutputFormatter& formatter) override;
61};
62
67 public:
68 std::string GetName() const { return "dungeon-list-chests"; }
69 std::string GetDescription() const {
70 return "List chest contents for dungeon rooms";
71 }
72 std::string GetUsage() const {
73 return "dungeon-list-chests [--room <room_id>] [--format <json|text>]";
74 }
75
76 absl::Status ValidateArgs(
77 const resources::ArgumentParser& /*parser*/) override {
78 return absl::OkStatus();
79 }
80
81 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
82 resources::OutputFormatter& formatter) override;
83};
84
89 public:
90 std::string GetName() const { return "dungeon-get-entrance"; }
91 std::string GetDescription() const {
92 return "Get entrance metadata for a dungeon room";
93 }
94 std::string GetUsage() const {
95 return "dungeon-get-entrance --entrance <entrance_id> [--spawn] "
96 "[--format <json|text>]";
97 }
98
99 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
100 return parser.RequireArgs({"entrance"});
101 }
102
103 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
104 resources::OutputFormatter& formatter) override;
105};
106
111 public:
112 std::string GetName() const { return "dungeon-export-room"; }
113 std::string GetDescription() const {
114 return "Export room data to JSON format";
115 }
116 std::string GetUsage() const {
117 return "dungeon-export-room --room <room_id> [--format <json|text>]";
118 }
119
120 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
121 return parser.RequireArgs({"room"});
122 }
123
124 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
125 resources::OutputFormatter& formatter) override;
126};
127
132 public:
133 std::string GetName() const { return "dungeon-list-objects"; }
134 std::string GetDescription() const {
135 return "List all objects in a dungeon room";
136 }
137 std::string GetUsage() const {
138 return "dungeon-list-objects --room <room_id> [--format <json|text>]";
139 }
140
141 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
142 return parser.RequireArgs({"room"});
143 }
144
145 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
146 resources::OutputFormatter& formatter) override;
147};
148
153 public:
154 std::string GetName() const { return "dungeon-get-room-tiles"; }
155 std::string GetDescription() const {
156 return "Get tile data for a dungeon room";
157 }
158 std::string GetUsage() const {
159 return "dungeon-get-room-tiles --room <room_id> [--format <json|text>]";
160 }
161
162 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
163 return parser.RequireArgs({"room"});
164 }
165
166 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
167 resources::OutputFormatter& formatter) override;
168};
169
174 public:
175 std::string GetName() const { return "dungeon-set-room-property"; }
176 std::string GetDescription() const {
177 return "Set a property on a dungeon room";
178 }
179 std::string GetUsage() const {
180 return "dungeon-set-room-property --room <room_id> --property <property> "
181 "--value <value> [--manifest <path>] [--format <json|text>]";
182 }
183
184 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
185 return parser.RequireArgs({"room", "property", "value"});
186 }
187
188 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
189 resources::OutputFormatter& formatter) override;
190};
191
196 public:
197 std::string GetName() const { return "dungeon-room-header"; }
198 std::string GetDescription() const {
199 return "Read raw room header bytes for debugging ROM address issues";
200 }
201 std::string GetUsage() const {
202 return "dungeon-room-header --room <room_id> [--format <json|text>]";
203 }
204
205 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
206 return parser.RequireArgs({"room"});
207 }
208
209 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
210 resources::OutputFormatter& formatter) override;
211};
212
222 public:
223 std::string GetName() const { return "dungeon-generate-track-collision"; }
224 std::string GetDescription() const {
225 return "Generate collision overlay from rail objects for minecart rooms";
226 }
227 std::string GetUsage() const {
228 return "dungeon-generate-track-collision --room <room_id> | "
229 "--rooms <hex,hex,...> "
230 "[--write] [--preserve-stops] [--visualize] [--promote-switch X,Y] "
231 "[--project-context <path.yaze|path.yazeproj>] "
232 "[--format <json|text>]";
233 }
234
235 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
236 // Accept either --room (single) or --rooms (batch)
237 if (parser.GetString("room").has_value() ||
238 parser.GetString("rooms").has_value()) {
239 return absl::OkStatus();
240 }
241 return absl::InvalidArgumentError("Either --room or --rooms is required");
242 }
243
244 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
245 resources::OutputFormatter& formatter) override;
246};
247
248} // namespace handlers
249} // namespace cli
250} // namespace yaze
251
252#endif // YAZE_SRC_CLI_HANDLERS_DUNGEON_COMMANDS_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:49
Command handler for describing a dungeon room.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
Command handler for exporting room data.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
Generate track collision data from rail objects in a room.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
Command handler for inspecting a dungeon entrance.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
Command handler for listing chest items in dungeon rooms.
std::string GetName() const
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &) override
Validate command arguments.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Command handler for listing objects in a room.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Command handler for listing sprites in a dungeon room.
std::string GetName() const
Get the command name.
std::string GetUsage() const
Get the command usage string.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
Command handler for reading raw room header bytes (diagnostic)
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const
Get the command name.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetUsage() const
Get the command usage string.
Command handler for setting room properties.
std::string GetUsage() const
Get the command usage string.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const
Get the command name.
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)
absl::Status RequireArgs(const std::vector< std::string > &required) const
Validate that required arguments are present.
Base class for CLI command handlers.
Utility for consistent output formatting across commands.
absl::Status WriteDungeonSpawnPointReport(Rom *rom, int spawn_id, resources::OutputFormatter &formatter, std::string_view object_title)