|
|
|
#pragma once
|
|
|
|
#include "levelmanager.hpp"
|
|
|
|
#include <SFML/Graphics/RenderWindow.hpp>
|
|
|
|
#include <SFML/System/Clock.hpp>
|
|
|
|
#include "stats.hpp"
|
|
|
|
#include "overlay_ui.hpp"
|
|
|
|
#include "raycaster.hpp"
|
|
|
|
#include "camera.hpp"
|
|
|
|
#include <optional>
|
|
|
|
|
|
|
|
namespace gui {
|
|
|
|
|
|
|
|
class MainUI {
|
|
|
|
public:
|
|
|
|
int $compass_dir = 0;
|
|
|
|
std::array<std::string, 8> $compass{
|
|
|
|
"E", "SE", "S", "SW", "W", "NW", "N", "NE"
|
|
|
|
};
|
|
|
|
bool $show_level = false;
|
|
|
|
bool $needs_render = true;
|
|
|
|
Stats $stats;
|
|
|
|
sf::Clock $clock;
|
|
|
|
sf::RenderWindow& $window;
|
|
|
|
GameLevel $level;
|
|
|
|
OverlayUI $overlay_ui;
|
|
|
|
Raycaster $rayview;
|
|
|
|
CameraLOL $camera;
|
|
|
|
|
|
|
|
MainUI(sf::RenderWindow& window);
|
|
|
|
|
|
|
|
void mouse(int x, int y);
|
|
|
|
void debug();
|
|
|
|
void draw_stats();
|
|
|
|
void draw_blood();
|
|
|
|
|
|
|
|
void plan_rotate(int dir);
|
|
|
|
bool play_rotate();
|
|
|
|
std::optional<Point> play_move();
|
|
|
|
Point plan_move(int dir, bool strafe);
|
|
|
|
void abort_plan();
|
|
|
|
void update_level(GameLevel level);
|
|
|
|
|
|
|
|
void init();
|
|
|
|
void render();
|
|
|
|
void dirty();
|
|
|
|
|
|
|
|
void show_level();
|
|
|
|
void dead_entity(DinkyECS::Entity entity);
|
|
|
|
};
|
|
|
|
}
|