#include "Sector.h"
Sector::Sector(std::string p_nom)
{
m_nom = p_nom;
}
void Sector::loadMap(Player* pPlayer, short *pGameState)
{
std::ifstream mapFile("Maps/" + m_nom + ".txt");
if (mapFile)
{
std::vector<char> mapRow;
char mapChar = ' ';
while (mapChar != '!')
{
mapChar = ' ';
mapFile.get(mapChar);
while (mapChar != '\n' && mapChar != '!' && !mapFile.eof())
{
mapRow.push_back(mapChar);
mapFile.get(mapChar);
}
if (mapChar == '\n')
{
m_map.push_back(mapRow);
mapRow.clear();
}
}
std::string data;
while (data != "EOF")
{
mapFile >> data;
if (data == "door")
{
std::string doorDestination;
mapFile >> doorDestination;
int doorCoordinatesX;
mapFile >> doorCoordinatesX;
int doorCoordinatesY;
mapFile >> doorCoordinatesY;
int doorDestinationCoordinatesX;
mapFile >> doorDestinationCoordinatesX;
int doorDestinationCoordinatesY;
mapFile >> doorDestinationCoordinatesY;
m_doorList.push_back(new Door(doorDestination, doorCoordinatesX, doorCoordinatesY, doorDestinationCoordinatesX, doorDestinationCoordinatesY, this, pPlayer, pGameState));
}
else if (data == "bchest")
{
int chestCoordinatesX;
mapFile >> chestCoordinatesX;
int chestCoordinatesY;
mapFile >> chestCoordinatesY;
m_interactableList.push_back(new Chest(chestCoordinatesX, chestCoordinatesY, pGameState));
}
else if (data == "trap")
{
int trapCoordinatesX;
mapFile >> trapCoordinatesX;
int trapCoordinatesY;
mapFile >> trapCoordinatesY;
m_interactableList.push_back(new Trap(trapCoordinatesX, trapCoordinatesY, 1, pPlayer, pGameState));
}
}
mapFile.close();
m_doorList.push_back(new Door("crashRoom", 0, 0, 11, 3, this, pPlayer, pGameState)); // This is Narnia...
}
}
Door* Sector::getDoorAt(int px, int py)
{
for (int i = 0; i < m_doorList.size(); i++)
{
if (m_doorList[i]->getCoordinates().x == px && m_doorList[i]->getCoordinates().y == py)
{
return m_doorList[i];
}
}
// Si la porte n'existe pas... retourner la porte de Narnia :D
return m_doorList[m_doorList.size() - 1];
}
Interactable* Sector::getInteractableAt(int px, int py)
{
for (int i = 0; i < m_interactableList.size(); i++)
{
if (m_interactableList[i]->getCoordinates().x == px && m_interactableList[i]->getCoordinates().y == py)
{
return m_interactableList[i];
}
}
// Si l'objet n'est pas dans la liste, retourner la porte de Narnia
return m_doorList[m_doorList.size() - 1];
}
std::vector<std::vector<char>>& Sector::getMap()
{
return m_map;
}
std::string Sector::getSectorName()
{
return m_nom;
}
Sector::~Sector()
{
}