#pragma once
#include "levelmanager.hpp"
#include "constants.hpp"
#include <deque>
#include "textures.hpp"
#include <guecs/ui.hpp>
#include "gui/ritual_ui.hpp"
#include "gui/guecstra.hpp"

namespace gui {
  class StatusUI {
    public:
      guecs::UI $gui;
      GameLevel $level;
      ritual::UI $ritual_ui;

      explicit StatusUI(GameLevel level);

      StatusUI(const StatusUI& other) = delete;
      StatusUI(StatusUI&& other) = delete;
      ~StatusUI() = default;

      void select_ritual();
      void update_level(GameLevel &level);
      void init();
      void render(sf::RenderWindow &window);
      void update();
      bool mouse(float x, float y, bool hover);

      void remove_slot(guecs::Entity slot_id);
      bool place_slot(guecs::Entity gui_id, DinkyECS::Entity world_entity);
      bool drop_item(DinkyECS::Entity item_id);

      void swap(guecs::Entity gui_a, guecs::Entity gui_b);
      bool occupied(guecs::Entity slot);
  };
}
