#pragma once
#include "levelmanager.hpp"
#include "textures.hpp"
#include "matrix.hpp"
#include <guecs/ui.hpp>
#include <string>

namespace gui {
  class MapViewUI {
    public:
      guecs::UI $gui;
      wchar_t $player_display = L'@';
      DinkyECS::Entity $log_to;
      EntityGrid $entity_map;
      std::deque<std::wstring> $messages;
      GameLevel $level;
      std::shared_ptr<sf::RenderTexture> $map_render;
      sf::Sprite $map_sprite;
      matrix::Matrix $map_tiles;

      MapViewUI(GameLevel &level);
      void init();
      void render(sf::RenderWindow &window, int compass_dir);
      void update_level(GameLevel &level);
      void log(std::wstring msg);
      void update();
  };
}
