#pragma once #include #include #include "gui/combat_ui.hpp" #include "scene.hpp" #include "camera.hpp" namespace components { struct Animation; } // needed to break an include cycle namespace GameDB { struct Level; } namespace boss { using std::shared_ptr; struct UI { shared_ptr $world = nullptr; DinkyECS::Entity $boss_id = DinkyECS::NONE; DinkyECS::Entity $player_id = DinkyECS::NONE; gui::CombatUI $combat_ui; scene::Engine $arena; guecs::UI $actions; sf::RenderTexture $view_texture; sf::Sprite $view_sprite; cinematic::Camera $camera; UI(shared_ptr world, DinkyECS::Entity boss_id, DinkyECS::Entity player_id); void init(); void render(sf::RenderWindow& window); bool mouse(float x, float y, guecs::Modifiers mods); void status(const std::wstring& msg); void move_actor(const std::string& actor, const std::string& cell_name); void animate_actor(const std::string& actor); void update_stats(); void play_animations(); void zoom(const std::string &cell, double ratio); }; }