Add Help component and update main menu to include Help option
This commit is contained in:
119
src/cli/tui.cc
119
src/cli/tui.cc
@@ -256,7 +256,7 @@ void LoadRomComponent(ftxui::ScreenInteractive &screen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Element ColorBox(const Color &color) {
|
Element ColorBox(const Color &color) {
|
||||||
return ftxui::text(" ") | ftxui::bgcolor(color);
|
return ftxui::text(" ") | ftxui::bgcolor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PaletteEditorComponent(ftxui::ScreenInteractive &screen) {
|
void PaletteEditorComponent(ftxui::ScreenInteractive &screen) {
|
||||||
@@ -382,6 +382,116 @@ void PaletteEditorComponent(ftxui::ScreenInteractive &screen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HelpComponent(ftxui::ScreenInteractive &screen) {
|
||||||
|
auto help_text = vbox({
|
||||||
|
text("z3ed") | bold | color(Color::Yellow),
|
||||||
|
text("by scawful") | color(Color::Magenta),
|
||||||
|
text("The Legend of Zelda: A Link to the Past Hacking Tool") | color(Color::Red),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("Command") | bold | underlined,
|
||||||
|
filler(),
|
||||||
|
text("Arg") | bold | underlined,
|
||||||
|
filler(),
|
||||||
|
text("Params") | bold | underlined,
|
||||||
|
}),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("Apply BPS Patch"),
|
||||||
|
filler(),
|
||||||
|
text("-a"),
|
||||||
|
filler(),
|
||||||
|
text("<rom_file> <bps_file>"),
|
||||||
|
}),
|
||||||
|
hbox({
|
||||||
|
text("Create BPS Patch"),
|
||||||
|
filler(),
|
||||||
|
text("-c"),
|
||||||
|
filler(),
|
||||||
|
text("<bps_file> <src_file> <modified_file>"),
|
||||||
|
}),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("Open ROM"),
|
||||||
|
filler(),
|
||||||
|
text("-o"),
|
||||||
|
filler(),
|
||||||
|
text("<rom_file>"),
|
||||||
|
}),
|
||||||
|
hbox({
|
||||||
|
text("Backup ROM"),
|
||||||
|
filler(),
|
||||||
|
text("-b"),
|
||||||
|
filler(),
|
||||||
|
text("<rom_file> <optional:new_file>"),
|
||||||
|
}),
|
||||||
|
hbox({
|
||||||
|
text("Expand ROM"),
|
||||||
|
filler(),
|
||||||
|
text("-x"),
|
||||||
|
filler(),
|
||||||
|
text("<rom_file> <file_size>"),
|
||||||
|
}),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("Transfer Tile16"),
|
||||||
|
filler(),
|
||||||
|
text("-t"),
|
||||||
|
filler(),
|
||||||
|
text("<src_rom> <dest_rom> <tile32_id_list:csv>"),
|
||||||
|
}),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("Export Graphics"),
|
||||||
|
filler(),
|
||||||
|
text("-e"),
|
||||||
|
filler(),
|
||||||
|
text("<rom_file> <bin_file>"),
|
||||||
|
}),
|
||||||
|
hbox({
|
||||||
|
text("Import Graphics"),
|
||||||
|
filler(),
|
||||||
|
text("-i"),
|
||||||
|
filler(),
|
||||||
|
text("<bin_file> <rom_file>"),
|
||||||
|
}),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
text("SNES to PC Address"),
|
||||||
|
filler(),
|
||||||
|
text("-s"),
|
||||||
|
filler(),
|
||||||
|
text("<address>"),
|
||||||
|
}),
|
||||||
|
hbox({
|
||||||
|
text("PC to SNES Address"),
|
||||||
|
filler(),
|
||||||
|
text("-p"),
|
||||||
|
filler(),
|
||||||
|
text("<address>"),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
auto help_text_component = Renderer([&] { return help_text; });
|
||||||
|
|
||||||
|
auto back_button = Button("Back", [&] { SwitchComponents(screen, LayoutID::kMainMenu); });
|
||||||
|
|
||||||
|
auto container = Container::Vertical({
|
||||||
|
help_text_component,
|
||||||
|
back_button,
|
||||||
|
});
|
||||||
|
|
||||||
|
auto renderer = Renderer(container, [&] {
|
||||||
|
return vbox({
|
||||||
|
help_text_component->Render() | center,
|
||||||
|
separator(),
|
||||||
|
back_button->Render() | center,
|
||||||
|
}) | border;
|
||||||
|
});
|
||||||
|
|
||||||
|
screen.Loop(renderer);
|
||||||
|
}
|
||||||
|
|
||||||
void MainMenuComponent(ftxui::ScreenInteractive &screen) {
|
void MainMenuComponent(ftxui::ScreenInteractive &screen) {
|
||||||
// Tracks which menu item is selected.
|
// Tracks which menu item is selected.
|
||||||
static int selected = 0;
|
static int selected = 0;
|
||||||
@@ -429,6 +539,9 @@ void MainMenuComponent(ftxui::ScreenInteractive &screen) {
|
|||||||
case MainMenuEntry::kPaletteEditor:
|
case MainMenuEntry::kPaletteEditor:
|
||||||
SwitchComponents(screen, LayoutID::kPaletteEditor);
|
SwitchComponents(screen, LayoutID::kPaletteEditor);
|
||||||
return true;
|
return true;
|
||||||
|
case MainMenuEntry::kHelp:
|
||||||
|
SwitchComponents(screen, LayoutID::kHelp);
|
||||||
|
return true;
|
||||||
case MainMenuEntry::kExit:
|
case MainMenuEntry::kExit:
|
||||||
SwitchComponents(screen, LayoutID::kExit);
|
SwitchComponents(screen, LayoutID::kExit);
|
||||||
return true;
|
return true;
|
||||||
@@ -463,10 +576,12 @@ void ShowMain() {
|
|||||||
case LayoutID::kGenerateSaveFile: {
|
case LayoutID::kGenerateSaveFile: {
|
||||||
GenerateSaveFileComponent(screen);
|
GenerateSaveFileComponent(screen);
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case LayoutID::kPaletteEditor: {
|
case LayoutID::kPaletteEditor: {
|
||||||
PaletteEditorComponent(screen);
|
PaletteEditorComponent(screen);
|
||||||
} break;
|
} break;
|
||||||
|
case LayoutID::kHelp: {
|
||||||
|
HelpComponent(screen);
|
||||||
|
} break;
|
||||||
case LayoutID::kError: {
|
case LayoutID::kError: {
|
||||||
// Display error message and return to main menu.
|
// Display error message and return to main menu.
|
||||||
auto error_button = Button("Back to Main Menu", [&] {
|
auto error_button = Button("Back to Main Menu", [&] {
|
||||||
|
|||||||
@@ -13,7 +13,11 @@ namespace yaze {
|
|||||||
namespace cli {
|
namespace cli {
|
||||||
|
|
||||||
const std::vector<std::string> kMainMenuEntries = {
|
const std::vector<std::string> kMainMenuEntries = {
|
||||||
"Load ROM", "Apply BPS Patch", "Generate Save File", "Palette Editor",
|
"Load ROM",
|
||||||
|
"Apply BPS Patch",
|
||||||
|
"Generate Save File",
|
||||||
|
"Palette Editor",
|
||||||
|
"Help",
|
||||||
"Exit",
|
"Exit",
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -22,6 +26,7 @@ enum class MainMenuEntry {
|
|||||||
kApplyBpsPatch,
|
kApplyBpsPatch,
|
||||||
kGenerateSaveFile,
|
kGenerateSaveFile,
|
||||||
kPaletteEditor,
|
kPaletteEditor,
|
||||||
|
kHelp,
|
||||||
kExit,
|
kExit,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -30,6 +35,7 @@ enum LayoutID {
|
|||||||
kApplyBpsPatch,
|
kApplyBpsPatch,
|
||||||
kGenerateSaveFile,
|
kGenerateSaveFile,
|
||||||
kPaletteEditor,
|
kPaletteEditor,
|
||||||
|
kHelp,
|
||||||
kExit,
|
kExit,
|
||||||
kMainMenu,
|
kMainMenu,
|
||||||
kError,
|
kError,
|
||||||
|
|||||||
Reference in New Issue
Block a user