#pragma once #include "dinkyecs.hpp" #include #include #include #include "textures.hpp" #include "gui/combat_ui.hpp" #include "components.hpp" 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; components::Animation $boss_anim; sf::Vector2f $boss_pos; SpriteTexture $torch_left; SpriteTexture $torch_right; components::Animation $torch_left_anim; components::Animation $torch_right_anim; 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& cell_name, float scale, bool at_mid=false); void status(const std::wstring& msg); void move_boss(const std::string& cell_name); void move_player(const std::string& cell_name); void play_animations(sf::RenderWindow& window); }; }