raycaster/boss/ui.hpp

43 lines
1.1 KiB
C++

#pragma once
#include <memory>
#include <guecs/ui.hpp>
#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<DinkyECS::World> $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<DinkyECS::World> 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);
};
}