Program Listing for File Tilemap.cpp

Return to documentation for file (gui/API/TileMap/Tilemap.cpp)

#include "Tilemap.hpp"
#include "API/Inventory/Inventory.hpp"

std::vector<std::vector<Tile>> Tilemap::GetTilemap()
{
  return _tilemap;
}

std::pair<int, int> Tilemap::GetSize() const
{
  return {_sizeX, _sizeY};
}

void Tilemap::SetSize(int x, int y)
{
  _sizeX = x;
  _sizeY = y;

  Tile tmp;
  _tilemap.clear();
  _tilemap.resize(y);

  for (int i = 0; i < y; i++) {
    for (int j = 0; j < x; j++) {
      tmp.SetPosition(j, i);
      _tilemap[i].push_back(tmp);
    }
  }
}

void Tilemap::SetTileInventory(
  int x,
  int y,
  size_t food,
  size_t linemate,
  size_t deraumere,
  size_t sibur,
  size_t mendiane,
  size_t phiras,
  size_t thystame)
{
  _tilemap[y][x].SetInventory(
    food, linemate, deraumere, sibur, mendiane, phiras, thystame);
}

void Tilemap::AddToInventory(int x, int y, Item item, int quantity)
{
  _tilemap[y][x].AddToInventory(item, quantity);
}

Inventory Tilemap::GetTileInventory(int x, int y)
{
  return _tilemap[y][x].GetInventory();
}

int Tilemap::GetItemQuantity(Item id)
{
  int quantity = 0;

  for (auto &tile: _tilemap) {
    for (auto t: tile) {
      switch (id) {
        case Item::FOOD:
          quantity += t.GetInventory().GetInventory()["food"];
          break;
        case Item::LINEMATE:
          quantity += t.GetInventory().GetInventory()["linemate"];
          break;
        case Item::DERAUMERE:
          quantity += t.GetInventory().GetInventory()["deraumere"];
          break;
        case Item::SIBUR:
          quantity += t.GetInventory().GetInventory()["sibur"];
          break;
        case Item::MENDIANE:
          quantity += t.GetInventory().GetInventory()["mendiane"];
          break;
        case Item::PHIRAS:
          quantity += t.GetInventory().GetInventory()["phiras"];
          break;
        case Item::THYSTAME:
          quantity += t.GetInventory().GetInventory()["thystame"];
          break;
        default:
          continue;
      }
    }
  }
  return quantity;
}