#pragma once
#include "dinkyecs.hpp"
#include "map.hpp"
#include "combat.hpp"
#include <deque>
#include "tser.hpp"

namespace components {
  struct Player {
    DinkyECS::Entity entity;
    DEFINE_SERIALIZABLE(Player, entity);
  };

  struct Position {
    Point location;
    DEFINE_SERIALIZABLE(Position, location);
  };

  struct Motion {
    int dx;
    int dy;
    DEFINE_SERIALIZABLE(Motion, dx, dy);
  };

  struct Loot {
    int amount;
    DEFINE_SERIALIZABLE(Loot, amount);
  };

  struct Inventory {
    int gold;
    DEFINE_SERIALIZABLE(Inventory, gold);
  };

  struct Tile {
    std::string chr;
    DEFINE_SERIALIZABLE(Tile, chr);
  };

  struct MapConfig {
    std::string PLAYER_TILE;
    std::string ENEMY_TILE;
  };

  struct EnemyConfig {
    int HEARING_DISTANCE;
  };

  struct Debug {
    bool PATHS=false;
    bool LIGHT=false;
  };
}
