78 lines
1.5 KiB
C++
78 lines
1.5 KiB
C++
/*
|
|
* Map.cpp
|
|
*
|
|
* Created on: Feb 13, 2020
|
|
* Author: ayoungblood
|
|
*/
|
|
|
|
#include "Map.h"
|
|
#include "../game/Game.hpp"
|
|
#include <fstream>
|
|
#include "../ecs/ECS.h"
|
|
#include "../ecs/Components.h"
|
|
#include <string>
|
|
#include <iostream>
|
|
|
|
extern Manager manager;
|
|
|
|
Map::Map(std::string tID, int ms, int ts) : texID(tID), mapScale(ms), tileSize(ts)
|
|
{
|
|
scaledSize = ms* ts;
|
|
width = 0;
|
|
height = 0;
|
|
tSize = ts;
|
|
}
|
|
|
|
Map::~Map()
|
|
{
|
|
}
|
|
|
|
void Map::LoadMap(std::string path, int sizeX, int sizeY, int scale)
|
|
{
|
|
char c;
|
|
std::fstream mapFile;
|
|
mapFile.open(path);
|
|
int srcX, srcY;
|
|
|
|
width = tSize*scale*sizeX;
|
|
height = tSize*scale*sizeY;
|
|
|
|
for (int y = 0; y < sizeY; y++)
|
|
{
|
|
for (int x = 0; x < sizeX; x++)
|
|
{
|
|
mapFile.get(c);
|
|
srcY = atoi(&c) * tileSize;
|
|
mapFile.get(c);
|
|
srcX = atoi(&c) * tileSize;
|
|
AddTile(srcX, srcY, x*scaledSize, y*scaledSize);
|
|
mapFile.ignore(2,',');
|
|
}
|
|
}
|
|
|
|
mapFile.ignore();
|
|
// colliders
|
|
for (int y =0; y < sizeY; y++)
|
|
{
|
|
for (int x = 0; x < sizeX; x++)
|
|
{
|
|
mapFile.get(c);
|
|
if (c == '1')
|
|
{
|
|
auto& tcol(manager.addEntity());
|
|
tcol.addComponent<ColliderComponent>("terrain",x*scaledSize,y*scaledSize,tileSize,scale);
|
|
tcol.addGroup(Game::groupColliders);
|
|
}
|
|
mapFile.ignore(2,',');
|
|
}
|
|
}
|
|
mapFile.close();
|
|
}
|
|
|
|
void Map::AddTile(int srcX, int srcY, int xpos, int ypos)
|
|
{
|
|
auto& tile(manager.addEntity());
|
|
tile.addComponent<TileComponent>(srcX,srcY,xpos,ypos,tileSize, mapScale, texID);
|
|
tile.addGroup(Game::groupMap);
|
|
}
|