Boss fight is now working. Turned out to be something really dumb.

This commit is contained in:
Zed A. Shaw 2025-12-19 12:04:51 -05:00
parent 4958f24c1d
commit 4b4f9b3916
8 changed files with 154 additions and 127 deletions

View file

@ -5,35 +5,39 @@
#include "boss/ui.hpp"
#include "events.hpp"
#include "battle.hpp"
#include "gui/event_router.hpp"
#include <memory>
#include <any>
namespace boss {
using namespace DinkyECS;
using std::shared_ptr;
enum class State {
START=0,
PLAYER_REQUESTS=1,
PLAN_BATTLE=2,
EXEC_PLAN=3,
END=4
START=__LINE__,
PLAYER_REQUESTS=__LINE__,
PLAN_BATTLE=__LINE__,
EXEC_PLAN=__LINE__,
END=__LINE__
};
class Fight : public DeadSimpleFSM<State, game::Event> {
public:
shared_ptr<World> $world = nullptr;
DinkyECS::Entity $boss_id = NONE;
sf::RenderWindow* $window = nullptr;
shared_ptr<DinkyECS::World> $world = nullptr;
DinkyECS::Entity $boss_id = DinkyECS::NONE;
combat::BattleEngine $battle;
boss::UI $ui;
sf::Vector2f mouse_pos{0,0};
Entity $host = NONE;
DinkyECS::Entity $host = DinkyECS::NONE;
components::Combat* $host_combat = nullptr;
gui::routing::Router $router;
Fight(shared_ptr<World> world, Entity boss_id, Entity player_id);
Fight(shared_ptr<DinkyECS::World> world,
DinkyECS::Entity boss_id,
DinkyECS::Entity player_id);
void set_window(sf::RenderWindow* window);
bool handle_mouse(game::Event ev);
bool event(game::Event ev, std::any data);
void event(game::Event ev, std::any data);
void START(game::Event ev, std::any data);
void PLAYER_REQUESTS(game::Event ev, std::any data);
@ -42,12 +46,14 @@ namespace boss {
void END(game::Event ev, std::any data);
void render(sf::RenderWindow& window);
void handle_world_events();
bool handle_world_events();
void run_systems();
bool player_dead();
void init_fight();
void do_combat(std::any data);
void next_combat_dumb_name();
sf::Vector2f mouse_position();
bool handle_keyboard_mouse();
};
}