diff --git a/combat_ui.cpp b/combat_ui.cpp index 436d2c8..4ce8e87 100644 --- a/combat_ui.cpp +++ b/combat_ui.cpp @@ -1,35 +1,14 @@ #include "combat_ui.hpp" -#include // for Render -#include // for ftxui -#include -#include -#include #include "constants.hpp" #include "color.hpp" namespace gui { - using namespace ftxui; - CombatUI::CombatUI(GameLevel level) : - Panel(COMBAT_UI_X, COMBAT_UI_Y, COMBAT_UI_WIDTH, COMBAT_UI_HEIGHT, false), $level(level) { - default_bg = {0,0,0}; } - void CombatUI::create_render() { - $attack1_button = Button("ATTACK1", []{ fmt::println("ATTACK1 clicked"); }); - $attack2_button = Button("ATTACK2", []{ fmt::println("ATTACK2 clicked"); }); - - auto combat_rend = Renderer([&]{ - return hbox({ - $attack1_button->Render(), - $attack2_button->Render() - }); - }); - - set_renderer(combat_rend); - add($attack1_button); - add($attack2_button); + void CombatUI::draw(sf::RenderWindow& window) { + (void)window; } } diff --git a/combat_ui.hpp b/combat_ui.hpp index 7759fe6..1f3b7ae 100644 --- a/combat_ui.hpp +++ b/combat_ui.hpp @@ -1,18 +1,15 @@ #pragma once #include "panel.hpp" #include "levelmanager.hpp" -#include +#include namespace gui { - class CombatUI : public Panel { + class CombatUI { public: GameLevel $level; - Component $attack1_button; - Component $attack2_button; - CombatUI(GameLevel level); - void create_render(); + void draw(sf::RenderWindow& window); void update_level(GameLevel &level) { $level = level; } }; } diff --git a/gui.cpp b/gui.cpp index 8ca9d0e..6cd434c 100644 --- a/gui.cpp +++ b/gui.cpp @@ -50,7 +50,6 @@ namespace gui { $rayview.position_camera($player.x + 0.5, $player.y + 0.5); $status_view.create_render(); - $combat_view.create_render(); $renderer.init_terminal(); $map_view.create_render(); @@ -62,15 +61,16 @@ namespace gui { } void FSM::MAPPING(Event ev) { + using enum Event; // BUG: can't close window when in mapping switch(ev) { - case Event::MAP_OPEN: + case MAP_OPEN: state(State::IDLE); break; - case Event::CLOSE: + case CLOSE: state(State::IDLE); break; - case Event::TICK: + case TICK: break; default: dbc::log("invalid event sent to MAPPING"); @@ -86,8 +86,9 @@ namespace gui { } void FSM::ATTACKING(Event ev) { + using enum Event; switch(ev) { - case Event::TICK: + case TICK: $rotation_count++; // just do 10 ticks @@ -109,43 +110,43 @@ namespace gui { } void FSM::IDLE(Event ev) { - using FU = Event; + using enum Event; switch(ev) { - case FU::QUIT: + case QUIT: $window.close(); state(State::END); return; // done - case FU::MOVE_FORWARD: + case MOVE_FORWARD: try_move(1, false); break; - case FU::MOVE_BACK: + case MOVE_BACK: try_move(-1, false); break; - case FU::MOVE_LEFT: + case MOVE_LEFT: try_move(1, true); break; - case FU::MOVE_RIGHT: + case MOVE_RIGHT: try_move(-1, true); break; - case FU::ROTATE_LEFT: + case ROTATE_LEFT: $camera.plan_rotate($rayview, 1); state(State::ROTATING); break; - case FU::ROTATE_RIGHT: + case ROTATE_RIGHT: $camera.plan_rotate($rayview, -1); state(State::ROTATING); break; - case FU::MAP_OPEN: + case MAP_OPEN: $renderer.resize_grid(MAX_FONT_SIZE, $map_view); $map_view.resize_canvas(); state(State::MAPPING); break; - case FU::ATTACK: + case ATTACK: $rotation = -30.0f; state(State::ATTACKING); break; - case FU::CLOSE: + case CLOSE: dbc::log("Nothing to close."); break; default: @@ -154,13 +155,14 @@ namespace gui { } void FSM::try_move(int dir, bool strafe) { + using enum State; // prevent moving into occupied space Point move_to = $camera.plan_move($rayview, dir, strafe); if($level.map->can_move(move_to) && !$level.collision->occupied(move_to)) { - state(State::MOVING); + state(MOVING); } else { - state(State::IDLE); + state(IDLE); $camera.abort_plan($rayview); } } @@ -269,8 +271,7 @@ namespace gui { $status_view.render(); $renderer.draw($status_view); - $combat_view.render(); - $renderer.draw($combat_view); + $combat_view.draw($window); auto debug = $level.world->get_the(); if(debug.FPS) draw_stats();