#pragma once
#include "gui/guecstra.hpp"
#include "levelmanager.hpp"
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/Graphics/Font.hpp>
#include <guecs/ui.hpp>
#include "events.hpp"
#include "inventory.hpp"

namespace gui {
  class LootUI {
    public:
      bool active = false;
      guecs::UI $gui;
      GameLevel $level;
      DinkyECS::Entity $temp_loot;
      DinkyECS::Entity $target;

      LootUI(GameLevel level);

      void set_target(DinkyECS::Entity entity) {
        $target = entity;
      }

      void init();
      void update();
      void render(sf::RenderWindow& window);
      void update_level(GameLevel &level);
      bool mouse(float x, float y, bool hover);
      void make_button(const std::string &name, const std::wstring& label, Events::GUI event);

      void remove_slot(guecs::Entity slot_id);
      bool place_slot(guecs::Entity gui_id, DinkyECS::Entity world_entity);
      void add_loose_item(DinkyECS::Entity entity);
      bool drop_item(DinkyECS::Entity item_id);
      bool occupied(guecs::Entity gui_id);
      void swap(guecs::Entity gui_a, guecs::Entity gui_b);
  };
}
