#pragma once
#include "components.hpp"
#include <nlohmann/json.hpp>

namespace components {
  using namespace nlohmann;

  struct InventoryItem {
    int count;
    json data;
  };

  struct Inventory {
    int gold=0;
    LightSource light{0, 0};
    std::vector<InventoryItem> items{};

    size_t count() { return items.size(); }

    void add(InventoryItem item);

    bool decrease(size_t at, int count);

    InventoryItem& get(size_t at);

    int item_index(std::string id);

    void erase_item(size_t at);
  };
}
