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 {
|
namespace cli {
|
||||||
|
|
||||||
absl::Status OverworldGetTile::Run(const std::vector<std::string>& arg_vec) {
|
absl::Status OverworldGetTile::Run(const std::vector<std::string>& arg_vec) {
|
||||||
if (arg_vec.size() < 3) {
|
int map_id = -1, x = -1, y = -1;
|
||||||
return absl::InvalidArgumentError("Usage: overworld get-tile --map <map_id> --x <x> --y <y>");
|
|
||||||
|
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
|
if (map_id == -1 || x == -1 || y == -1) {
|
||||||
int map_id = std::stoi(arg_vec[0]);
|
return absl::InvalidArgumentError("Usage: overworld get-tile --map <map_id> --x <x> --y <y>");
|
||||||
int x = std::stoi(arg_vec[1]);
|
}
|
||||||
int y = std::stoi(arg_vec[2]);
|
|
||||||
|
|
||||||
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
||||||
if (rom_file.empty()) {
|
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) {
|
absl::Status OverworldSetTile::Run(const std::vector<std::string>& arg_vec) {
|
||||||
if (arg_vec.size() < 4) {
|
int 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>");
|
|
||||||
|
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
|
if (map_id == -1 || x == -1 || y == -1 || tile_id == -1) {
|
||||||
int map_id = std::stoi(arg_vec[0]);
|
return absl::InvalidArgumentError("Usage: overworld set-tile --map <map_id> --x <x> --y <y> --tile <tile_id>");
|
||||||
int x = std::stoi(arg_vec[1]);
|
}
|
||||||
int y = std::stoi(arg_vec[2]);
|
|
||||||
int tile_id = std::stoi(arg_vec[3], nullptr, 16);
|
|
||||||
|
|
||||||
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
std::string rom_file = absl::GetFlag(FLAGS_rom);
|
||||||
if (rom_file.empty()) {
|
if (rom_file.empty()) {
|
||||||
|
|||||||
@@ -127,9 +127,13 @@ absl::Status PaletteImport::Run(const std::vector<std::string>& arg_vec) {
|
|||||||
*pal = snes_palette;
|
*pal = snes_palette;
|
||||||
|
|
||||||
// TODO: Implement saving the modified palette back to the ROM.
|
// 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 << "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();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user