diff --git a/assets/config.json b/assets/config.json index 25a64d5..487730d 100644 --- a/assets/config.json +++ b/assets/config.json @@ -116,5 +116,9 @@ }, "player": { "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" } } diff --git a/src/gui/fsm.cpp b/src/gui/fsm.cpp index d47e0d3..ab7a984 100644 --- a/src/gui/fsm.cpp +++ b/src/gui/fsm.cpp @@ -377,9 +377,6 @@ namespace gui { case KEY::A: event(Event::MOVE_LEFT); break; - case KEY::R: - dbc::log("HEY! DIPSHIT! You need to move debug ui so you can rest stats."); - break; case KEY::M: event(Event::MAP_OPEN); break; @@ -395,10 +392,6 @@ namespace gui { $debug_ui.debug(); shaders::reload(); break; - case KEY::X: - show_scene("NEXT_LEVEL"); - state(State::NEXT_LEVEL_SCENE); - break; case KEY::Z: $main_ui.toggle_mind_reading(); break; @@ -406,7 +399,11 @@ namespace gui { player_died(); break; case KEY::N: - player_won(); + check_player_wins(); + break; + case KEY::H: + case KEY::F1: + toggle_help(); break; case KEY::F5: take_screenshot(); @@ -530,8 +527,7 @@ namespace gui { event(Event::ATTACK, data); break; case eGUI::STAIRS_DOWN: - show_scene("NEXT_LEVEL"); - state(State::NEXT_LEVEL_SCENE); + check_player_wins(); break; case eGUI::START: event(Event::START, data); @@ -591,8 +587,29 @@ namespace gui { state(State::DEATH_SCENE); } - void FSM::player_won() { - show_scene("WIN"); - state(State::WIN_SCENE); + 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"); + 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"); + } } } diff --git a/src/gui/fsm.hpp b/src/gui/fsm.hpp index aec9127..f71806d 100644 --- a/src/gui/fsm.hpp +++ b/src/gui/fsm.hpp @@ -52,6 +52,7 @@ namespace gui { std::shared_ptr $cur_scene = nullptr; std::shared_ptr $story = nullptr; + bool $display_help = false; FSM(sf::RenderWindow& window); @@ -89,6 +90,7 @@ namespace gui { void show_scene(const std::string& name); void close_scene(); void player_died(); - void player_won(); + void check_player_wins(); + void toggle_help(); }; }