#pragma once
#include "levelmanager.hpp"
#include "constants.hpp"
#include <deque>
#include "textures.hpp"
#include "guecs.hpp"
#include "ritual_ui.hpp"

namespace gui {
  class StatusUI {
    public:
      guecs::UI $gui;
      DinkyECS::Entity $log_to;
      std::map<std::string, size_t> $slots;
      std::deque<std::wstring> $messages;
      GameLevel $level;
      RitualUI $ritual_ui;

      StatusUI(GameLevel level);
      void select_slot(DinkyECS::Entity ent, std::any data);
      void select_ritual();
      void update_level(GameLevel &level);
      bool mouse(float x, float y, bool hover);
      void log(std::wstring msg);
      void init();
      void render(sf::RenderWindow &window);
      void update();
  };
}
