mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-04-08 03:36:43 +00:00
rogueviz::seuphorica:: main menu, dictionary
This commit is contained in:
parent
36fea38a0d
commit
30d2dcf3f0
@ -423,6 +423,8 @@ void sort_hand() {
|
||||
});
|
||||
}
|
||||
|
||||
void seuphorica_menu();
|
||||
|
||||
void seuphorica_screen() {
|
||||
|
||||
if(last_spell_effect != "") {
|
||||
@ -431,7 +433,6 @@ void seuphorica_screen() {
|
||||
}
|
||||
|
||||
getcstat = '-';
|
||||
cmode = 0;
|
||||
cmode = sm::SIDE | sm::DIALOG_STRICT_X | sm::MAYDARK;
|
||||
|
||||
gamescreen();
|
||||
@ -547,8 +548,8 @@ void seuphorica_screen() {
|
||||
if(getcstat == SDLK_F1)
|
||||
dialog::add_key_action(SDLK_F1, [] { gotoHelp(fix(seuphorica::rules)); });
|
||||
|
||||
displayButton(lerp(ui.x0, ui.x2, 5/6.), vid.yres - vid.fsize, "menu", 'Q', 8);
|
||||
dialog::add_key_action('Q', [] { quitmainloop = true; });
|
||||
displayButton(lerp(ui.x0, ui.x2, 5/6.), vid.yres - vid.fsize, "menu", 'v', 8);
|
||||
dialog::add_key_action('v', [] { pushScreen(seuphorica_menu); });
|
||||
|
||||
keyhandler = [] (int sym, int uni) {
|
||||
handlePanning(sym, uni);
|
||||
@ -606,6 +607,75 @@ void seuphorica_screen() {
|
||||
};
|
||||
}
|
||||
|
||||
string logfile = "seuphorica-log.txt";
|
||||
|
||||
void seuphorica_dictionary() {
|
||||
cmode = sm::DARKEN;
|
||||
gamescreen();
|
||||
dialog::init("Seuphorica dictionary", 0xFFFF80);
|
||||
dialog::addBack();
|
||||
if(dialog::infix != "") mouseovers = dialog::infix;
|
||||
|
||||
dialog::start_list(900, 900, '1');
|
||||
if(dictionary_checked != dialog::infix) {
|
||||
dictionary_checked = dialog::infix;
|
||||
for(char& ch: dictionary_checked) if(ch >= 'a' && ch <= 'z') ch -= 32;
|
||||
find_words(dictionary_checked);
|
||||
}
|
||||
for(auto& wo: words_found) dialog::addItem(wo, dialog::list_fake_key++);
|
||||
dialog::end_list();
|
||||
|
||||
if(utf8_length(dictionary_checked) < 2) dialog::addInfo(str_least2);
|
||||
else if(words_found.empty()) dialog::addInfo(str_no_matching);
|
||||
else dialog::addInfo("(" + its(isize(words_found)) + str_matching->get() + ")");
|
||||
|
||||
dialog::addBreak(100);
|
||||
dialog::addHelp(fix(str_dict_help));
|
||||
|
||||
keyhandler = [] (int sym, int uni) {
|
||||
if(among(uni, '$', '?')) { dialog::infix += uni; return; }
|
||||
dialog::handleNavigation(sym, uni);
|
||||
if(dialog::editInfix(uni)) dialog::list_skip = 0;
|
||||
else if(doexiton(sym, uni)) popScreen();
|
||||
};
|
||||
|
||||
dialog::display();
|
||||
}
|
||||
|
||||
void seuphorica_newgame() {
|
||||
cmode = sm::DARKEN;
|
||||
gamescreen();
|
||||
dialog::init("Seuphorica: new game", 0xFFFF80);
|
||||
dialog::addBack();
|
||||
dialog::display();
|
||||
}
|
||||
|
||||
void seuphorica_menu() {
|
||||
cmode = sm::DARKEN;
|
||||
dictionary_checked = "";
|
||||
|
||||
gamescreen();
|
||||
dialog::init("Seuphorica", 0xFFFF80);
|
||||
dialog::addItem("dictionary", 'd');
|
||||
dialog::add_action_push(seuphorica_dictionary);
|
||||
dialog::addItem("new game", 'n');
|
||||
dialog::add_action_push(seuphorica_newgame);
|
||||
dialog::addItem("save log", 'l');
|
||||
dialog::add_action([] {
|
||||
dialog::openFileDialog(logfile, XLAT("where to save the log:"), ".txt",
|
||||
[] {
|
||||
fhstream f(logfile, "wt");
|
||||
if(!f.f) { addMessage("failed to open file"); return false; }
|
||||
print(f, fix(game_log.str()));
|
||||
return true;
|
||||
});
|
||||
});
|
||||
dialog::addItem("quit", 'q');
|
||||
dialog::add_action([] { quitmainloop = true; });
|
||||
dialog::addBack();
|
||||
dialog::display();
|
||||
}
|
||||
|
||||
void launch() {
|
||||
stop_game();
|
||||
enable_canvas();
|
||||
|
Loading…
x
Reference in New Issue
Block a user