Add equipment selection for sword, shield, and armor in save file generation

This commit is contained in:
scawful
2025-01-19 02:24:36 -05:00
parent 5523ffb3c7
commit e6a37970a0

View File

@@ -132,9 +132,6 @@ void GenerateSaveFileComponent(ftxui::ScreenInteractive &screen) {
"Magic Powder",
"Fire Rod",
"Ice Rod",
"Bombos",
"Ether",
"Quake",
"Lantern",
"Hammer",
"Shovel",
@@ -146,27 +143,46 @@ void GenerateSaveFileComponent(ftxui::ScreenInteractive &screen) {
"Magic Cape",
"Magic Mirror",
"Pegasus Boots",
"Power Glove",
"Titan's Mitt",
"Flippers",
"Moon Pearl",
"Sword",
"Shield",
"Mail",
"Bottle",
"Heart Container",
"Piece of Heart",
"Rupee",
"Bomb",
"Arrow"};
std::array<bool, 35> values = {};
"Bottle 1",
"Bottle 2",
"Bottle 3",
"Bottle 4"};
constexpr size_t kNumItems = 28;
std::array<bool, kNumItems> values = {};
auto checkboxes = Container::Vertical({});
for (size_t i = 0; i < items.size(); ++i) {
checkboxes->Add(Checkbox(items[i].data(), &values[i]));
for (size_t i = 0; i < items.size(); i += 4) {
auto row = Container::Horizontal({});
for (size_t j = 0; j < 4 && (i + j) < items.size(); ++j) {
row->Add(Checkbox(absl::StrCat(items[i + j], " ").data(), &values[i + j]));
}
checkboxes->Add(row);
}
// border container for sword, shield, armor with radioboxes
// to select the current item
// sword, shield, armor
static int sword = 0;
static int shield = 0;
static int armor = 0;
const std::vector<std::string> sword_items = {"Fighter", "Master", "Tempered",
"Golden"};
const std::vector<std::string> shield_items = {"Small", "Fire", "Mirror"};
const std::vector<std::string> armor_items = {"Green", "Blue", "Red"};
auto sword_radiobox = Radiobox(&sword_items, &sword);
auto shield_radiobox = Radiobox(&shield_items, &shield);
auto armor_radiobox = Radiobox(&armor_items, &armor);
auto equipment_container = Container::Vertical({
sword_radiobox,
shield_radiobox,
armor_radiobox,
});
auto save_button = Button("Generate Save File", [&] {
// Generate the save file here.
// You can use the values vector to determine which items are checked.
@@ -179,6 +195,7 @@ void GenerateSaveFileComponent(ftxui::ScreenInteractive &screen) {
auto container = Container::Vertical({
checkboxes,
equipment_container,
save_button,
back_button,
});
@@ -187,6 +204,7 @@ void GenerateSaveFileComponent(ftxui::ScreenInteractive &screen) {
return vbox({text("Generate Save File") | center, separator(),
text("Select items to include in the save file:"),
checkboxes->Render(), separator(),
equipment_container->Render(), separator(),
hbox({
save_button->Render() | center,
separator(),
@@ -324,8 +342,10 @@ void PaletteEditorComponent(ftxui::ScreenInteractive &screen) {
});
auto palette_editor_renderer = Renderer(palette_editor_container, [&] {
return vbox({text("Palette Editor") | center, separator(),
palette_grid->Render(), separator(),
return vbox({text(gfx::kPaletteCategoryNames[selected_palette_group]
.data()) |
center,
separator(), palette_grid->Render(), separator(),
hbox({
save_button->Render() | center,
separator(),