#pragma once #include "dinkyecs.hpp" #include #include #include #include "textures.hpp" #include "gui/combat_ui.hpp" namespace components { struct BossFight; } namespace boss { using std::shared_ptr; using namespace DinkyECS; using namespace textures; struct UI { shared_ptr $world = nullptr; Entity $boss_id = NONE; components::BossFight& $scene; gui::CombatUI $combat_ui; SpriteTexture $boss_sprite; SpriteTexture $player_sprite; SpriteTexture $floor_sprite; guecs::UI $arena; guecs::UI $actions; UI(shared_ptr world, Entity boss_id); void init(); void render(sf::RenderWindow& window); bool mouse(float x, float y, guecs::Modifiers mods); void position_sprite(SpriteTexture& st, const std::string& name, float scale, bool at_mid=false); bool boss_dead(); void run_systems(); void attack(int attack_id); }; }