Program Listing for File Inventory.hpp

Return to documentation for file (gui/API/Inventory/Inventory.hpp)

#pragma once

#include <cstddef>
#include <cstdint>
#include <map>
#include <string>

enum class Item : uint8_t {
  FOOD,
  LINEMATE,
  DERAUMERE,
  SIBUR,
  MENDIANE,
  PHIRAS,
  THYSTAME
};

class Inventory {
private:
  size_t _food = 0;
  size_t _linemate = 0;
  size_t _deraumere = 0;
  size_t _sibur = 0;
  size_t _mendiane = 0;
  size_t _phiras = 0;
  size_t _thystame = 0;

public:
  Inventory() = default;

  Inventory(
    size_t food,
    size_t linemate,
    size_t deraumere,
    size_t sibur,
    size_t mendiane,
    size_t phiras,
    size_t thystame);

  ~Inventory() = default;

  [[nodiscard]] std::map<std::string, size_t> GetInventory() const;

  void SetInventory(
    size_t food,
    size_t linemate,
    size_t deraumere,
    size_t sibur,
    size_t mendiane,
    size_t phiras,
    size_t thystame);

  void SetInventory(Item item, size_t quantity);

  void AddToInventory(Item item, size_t quantity);
};