/********************\
|  Copyright 2024,   |
|       Ulysse Cura  |
\********************/

//////////////////////////////////////////////////////////////////
//                                                              //
//   Composant d'inventaire, sert pour les coffre, PNJ, ou MOB. //
//                                                              //
//////////////////////////////////////////////////////////////////

#ifndef INVENTORY_HPP
#define INVENTORY_HPP

#include <memory>
#include <vector>
#include "ECS.hpp"
#include "../IP/IP.hpp"

using std::vector, std::unique_ptr, std::move;

class InventoryComponent : public Component {
  public:
    InventoryComponent() = default;
    InventoryComponent(vector<unique_ptr<Item>> items) : m_items(move(items))
    {}

    Item &addItem()
    {
        Item *i = new Item();
        unique_ptr<Item> uPtr{i};
        m_items.emplace_back(move(uPtr));
        return *i;
    }

    std::size_t getNumberOfItem()
    {
        return m_items.size();
    }

    void erase(std::size_t index)
    {
        if (index < m_items.size())
        {
            m_items.erase(m_items.begin() + index);
        }
    }

    vector<unique_ptr<Item>> &getItems() { return m_items; }

  private:
    vector<unique_ptr<Item>> m_items;
};

#endif
