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
5
6namespace yaze {
7namespace cli {
8namespace handlers {
9
14 public:
15 std::string GetName() const { return "dungeon-list-sprites"; }
16 std::string GetDescription() const {
17 return "List all sprites in a dungeon room";
18 }
19 std::string GetUsage() const {
20 return "dungeon-list-sprites --room <room_id> [--sprite-registry <path>] "
21 "[--format <json|text>]";
22 }
23
24 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
25 return parser.RequireArgs({"room"});
26 }
27
28 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
29 resources::OutputFormatter& formatter) override;
30};
31
36 public:
37 std::string GetName() const { return "dungeon-describe-room"; }
38 std::string GetDescription() const {
39 return "Get detailed description of a dungeon room";
40 }
41 std::string GetUsage() const {
42 return "dungeon-describe-room --room <room_id> [--sprite-registry <path>] "
43 "[--format <json|text>]";
44 }
45
46 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
47 return parser.RequireArgs({"room"});
48 }
49
50 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
51 resources::OutputFormatter& formatter) override;
52};
53
58 public:
59 std::string GetName() const { return "dungeon-list-chests"; }
60 std::string GetDescription() const {
61 return "List chest contents for dungeon rooms";
62 }
63 std::string GetUsage() const {
64 return "dungeon-list-chests [--room <room_id>] [--format <json|text>]";
65 }
66
67 absl::Status ValidateArgs(
68 const resources::ArgumentParser& /*parser*/) override {
69 return absl::OkStatus();
70 }
71
72 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
73 resources::OutputFormatter& formatter) override;
74};
75
80 public:
81 std::string GetName() const { return "dungeon-get-entrance"; }
82 std::string GetDescription() const {
83 return "Get entrance metadata for a dungeon room";
84 }
85 std::string GetUsage() const {
86 return "dungeon-get-entrance --entrance <entrance_id> [--spawn] "
87 "[--format <json|text>]";
88 }
89
90 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
91 return parser.RequireArgs({"entrance"});
92 }
93
94 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
95 resources::OutputFormatter& formatter) override;
96};
97
102 public:
103 std::string GetName() const { return "dungeon-export-room"; }
104 std::string GetDescription() const {
105 return "Export room data to JSON format";
106 }
107 std::string GetUsage() const {
108 return "dungeon-export-room --room <room_id> [--format <json|text>]";
109 }
110
111 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
112 return parser.RequireArgs({"room"});
113 }
114
115 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
116 resources::OutputFormatter& formatter) override;
117};
118
123 public:
124 std::string GetName() const { return "dungeon-list-objects"; }
125 std::string GetDescription() const {
126 return "List all objects in a dungeon room";
127 }
128 std::string GetUsage() const {
129 return "dungeon-list-objects --room <room_id> [--format <json|text>]";
130 }
131
132 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
133 return parser.RequireArgs({"room"});
134 }
135
136 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
137 resources::OutputFormatter& formatter) override;
138};
139
144 public:
145 std::string GetName() const { return "dungeon-get-room-tiles"; }
146 std::string GetDescription() const {
147 return "Get tile data for a dungeon room";
148 }
149 std::string GetUsage() const {
150 return "dungeon-get-room-tiles --room <room_id> [--format <json|text>]";
151 }
152
153 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
154 return parser.RequireArgs({"room"});
155 }
156
157 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
158 resources::OutputFormatter& formatter) override;
159};
160
165 public:
166 std::string GetName() const { return "dungeon-set-room-property"; }
167 std::string GetDescription() const {
168 return "Set a property on a dungeon room";
169 }
170 std::string GetUsage() const {
171 return "dungeon-set-room-property --room <room_id> --property <property> "
172 "--value <value> [--format <json|text>]";
173 }
174
175 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
176 return parser.RequireArgs({"room", "property", "value"});
177 }
178
179 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
180 resources::OutputFormatter& formatter) override;
181};
182
187 public:
188 std::string GetName() const { return "dungeon-room-header"; }
189 std::string GetDescription() const {
190 return "Read raw room header bytes for debugging ROM address issues";
191 }
192 std::string GetUsage() const {
193 return "dungeon-room-header --room <room_id> [--format <json|text>]";
194 }
195
196 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
197 return parser.RequireArgs({"room"});
198 }
199
200 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
201 resources::OutputFormatter& formatter) override;
202};
203
213 public:
214 std::string GetName() const { return "dungeon-generate-track-collision"; }
215 std::string GetDescription() const {
216 return "Generate collision overlay from rail objects for minecart rooms";
217 }
218 std::string GetUsage() const {
219 return "dungeon-generate-track-collision --room <room_id> | "
220 "--rooms <hex,hex,...> "
221 "[--write] [--preserve-stops] [--visualize] [--promote-switch X,Y] "
222 "[--project-context <path.yaze|path.yazeproj>] "
223 "[--format <json|text>]";
224 }
225
226 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
227 // Accept either --room (single) or --rooms (batch)
228 if (parser.GetString("room").has_value() ||
229 parser.GetString("rooms").has_value()) {
230 return absl::OkStatus();
231 }
232 return absl::InvalidArgumentError("Either --room or --rooms is required");
233 }
234
235 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
236 resources::OutputFormatter& formatter) override;
237};
238
239} // namespace handlers
240} // namespace cli
241} // namespace yaze
242
243#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:28
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.