feat: Improve Argument Parsing in OverworldGetTile and Implement ROM Saving in PaletteImport
- Enhanced argument parsing in OverworldGetTile to handle map_id, x, and y parameters more robustly, ensuring proper usage feedback. - Added functionality to save the modified palette to the ROM in PaletteImport, updating the success message to confirm the save operation and display the filename.
This commit is contained in:
@@ -27,14 +27,22 @@ namespace yaze {
|
||||
namespace cli {
|
||||
|
||||
absl::Status OverworldGetTile::Run(const std::vector<std::string>& arg_vec) {
|
||||
if (arg_vec.size() < 3) {
|
||||
return absl::InvalidArgumentError("Usage: overworld get-tile --map <map_id> --x <x> --y <y>");
|
||||
int map_id = -1, x = -1, y = -1;
|
||||
|
||||
for (size_t i = 0; i < arg_vec.size(); ++i) {
|
||||
const std::string& arg = arg_vec[i];
|
||||
if ((arg == "--map") && i + 1 < arg_vec.size()) {
|
||||
map_id = std::stoi(arg_vec[++i]);
|
||||
} else if ((arg == "--x") && i + 1 < arg_vec.size()) {
|
||||
x = std::stoi(arg_vec[++i]);
|
||||
} else if ((arg == "--y") && i + 1 < arg_vec.size()) {
|
||||
y = std::stoi(arg_vec[++i]);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Implement proper argument parsing
|
||||
int map_id = std::stoi(arg_vec[0]);
|
||||
int x = std::stoi(arg_vec[1]);
|
||||
int y = std::stoi(arg_vec[2]);
|
||||
if (map_id == -1 || x == -1 || y == -1) {
|
||||
return absl::InvalidArgumentError("Usage: overworld get-tile --map <map_id> --x <x> --y <y>");
|
||||
}
|
||||
|
||||
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
||||
if (rom_file.empty()) {
|
||||
@@ -63,15 +71,24 @@ absl::Status OverworldGetTile::Run(const std::vector<std::string>& arg_vec) {
|
||||
}
|
||||
|
||||
absl::Status OverworldSetTile::Run(const std::vector<std::string>& arg_vec) {
|
||||
if (arg_vec.size() < 4) {
|
||||
return absl::InvalidArgumentError("Usage: overworld set-tile --map <map_id> --x <x> --y <y> --tile <tile_id>");
|
||||
int map_id = -1, x = -1, y = -1, tile_id = -1;
|
||||
|
||||
for (size_t i = 0; i < arg_vec.size(); ++i) {
|
||||
const std::string& arg = arg_vec[i];
|
||||
if ((arg == "--map") && i + 1 < arg_vec.size()) {
|
||||
map_id = std::stoi(arg_vec[++i]);
|
||||
} else if ((arg == "--x") && i + 1 < arg_vec.size()) {
|
||||
x = std::stoi(arg_vec[++i]);
|
||||
} else if ((arg == "--y") && i + 1 < arg_vec.size()) {
|
||||
y = std::stoi(arg_vec[++i]);
|
||||
} else if ((arg == "--tile") && i + 1 < arg_vec.size()) {
|
||||
tile_id = std::stoi(arg_vec[++i], nullptr, 16);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Implement proper argument parsing
|
||||
int map_id = std::stoi(arg_vec[0]);
|
||||
int x = std::stoi(arg_vec[1]);
|
||||
int y = std::stoi(arg_vec[2]);
|
||||
int tile_id = std::stoi(arg_vec[3], nullptr, 16);
|
||||
if (map_id == -1 || x == -1 || y == -1 || tile_id == -1) {
|
||||
return absl::InvalidArgumentError("Usage: overworld set-tile --map <map_id> --x <x> --y <y> --tile <tile_id>");
|
||||
}
|
||||
|
||||
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
||||
if (rom_file.empty()) {
|
||||
|
||||
@@ -127,9 +127,13 @@ absl::Status PaletteImport::Run(const std::vector<std::string>& arg_vec) {
|
||||
*pal = snes_palette;
|
||||
|
||||
// TODO: Implement saving the modified palette back to the ROM.
|
||||
auto save_status = rom_.SaveToFile({.save_new = false});
|
||||
if (!save_status.ok()) {
|
||||
return save_status;
|
||||
}
|
||||
|
||||
std::cout << "Successfully imported palette " << palette_id << " to group " << group_name << " from " << input_file << std::endl;
|
||||
std::cout << "(Saving to ROM not yet implemented)" << std::endl;
|
||||
std::cout << "✅ ROM saved to: " << rom_.filename() << std::endl;
|
||||
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user