Add a help screen and win.

This commit is contained in:
Zed A. Shaw 2026-04-04 00:17:51 -04:00
parent 831b46fa3f
commit b5c2fc3b5f
3 changed files with 37 additions and 14 deletions

View file

@ -116,5 +116,9 @@
}, },
"player": { "player": {
"hands": "hands_sword_attack" "hands": "hands_sword_attack"
},
"game_play": {
"levels_to_win": 4,
"help_text": "WASD moves\nQE rotates\nSpace attacks\nESC close\nRight-Click to heal\nClick on Ladders\nDev Tools:\nP: Debug\nZ: Mind Reader\nN: Next Level\nK: Die\nH/F1: Help\nF5: Screenshot\nReach Level 5 to Win\nAttack to Get Gud\nGet Hit to Get Tuff"
} }
} }

View file

@ -377,9 +377,6 @@ namespace gui {
case KEY::A: case KEY::A:
event(Event::MOVE_LEFT); event(Event::MOVE_LEFT);
break; break;
case KEY::R:
dbc::log("HEY! DIPSHIT! You need to move debug ui so you can rest stats.");
break;
case KEY::M: case KEY::M:
event(Event::MAP_OPEN); event(Event::MAP_OPEN);
break; break;
@ -395,10 +392,6 @@ namespace gui {
$debug_ui.debug(); $debug_ui.debug();
shaders::reload(); shaders::reload();
break; break;
case KEY::X:
show_scene("NEXT_LEVEL");
state(State::NEXT_LEVEL_SCENE);
break;
case KEY::Z: case KEY::Z:
$main_ui.toggle_mind_reading(); $main_ui.toggle_mind_reading();
break; break;
@ -406,7 +399,11 @@ namespace gui {
player_died(); player_died();
break; break;
case KEY::N: case KEY::N:
player_won(); check_player_wins();
break;
case KEY::H:
case KEY::F1:
toggle_help();
break; break;
case KEY::F5: case KEY::F5:
take_screenshot(); take_screenshot();
@ -530,8 +527,7 @@ namespace gui {
event(Event::ATTACK, data); event(Event::ATTACK, data);
break; break;
case eGUI::STAIRS_DOWN: case eGUI::STAIRS_DOWN:
show_scene("NEXT_LEVEL"); check_player_wins();
state(State::NEXT_LEVEL_SCENE);
break; break;
case eGUI::START: case eGUI::START:
event(Event::START, data); event(Event::START, data);
@ -591,8 +587,29 @@ namespace gui {
state(State::DEATH_SCENE); state(State::DEATH_SCENE);
} }
void FSM::player_won() { void FSM::check_player_wins() {
auto& level = GameDB::current_level();
auto config = settings::get("config");
size_t levels_to_win = config["game_play"]["levels_to_win"];
if(level.index <= levels_to_win) {
show_scene("NEXT_LEVEL");
state(State::NEXT_LEVEL_SCENE);
} else {
show_scene("WIN"); show_scene("WIN");
state(State::WIN_SCENE); state(State::WIN_SCENE);
} }
} }
void FSM::toggle_help() {
$display_help = !$display_help;
auto config = settings::get("config");
std::string help = config["game_play"]["help_text"];
if($display_help) {
$main_ui.$overlay_ui.show_text("middle", guecs::to_wstring(help));
} else{
$main_ui.$overlay_ui.close_text("middle");
}
}
}

View file

@ -52,6 +52,7 @@ namespace gui {
std::shared_ptr<gui::SceneUI> $cur_scene = nullptr; std::shared_ptr<gui::SceneUI> $cur_scene = nullptr;
std::shared_ptr<storyboard::UI> $story = nullptr; std::shared_ptr<storyboard::UI> $story = nullptr;
bool $display_help = false;
FSM(sf::RenderWindow& window); FSM(sf::RenderWindow& window);
@ -89,6 +90,7 @@ namespace gui {
void show_scene(const std::string& name); void show_scene(const std::string& name);
void close_scene(); void close_scene();
void player_died(); void player_died();
void player_won(); void check_player_wins();
void toggle_help();
}; };
} }