5 #ifndef TILESON_TILESON_FORWARD_HPP
6 #define TILESON_TILESON_FORWARD_HPP
35 if(json.
count(
"id") > 0)
37 m_id = json[
"id"].
get<uint32_t>() + 1;
38 if (m_tileset !=
nullptr)
39 m_gid = m_tileset->getFirstgid() + m_id - 1;
42 manageFlipFlagsByIdThenRemoveFlags(m_gid);
52 void tson::Tile::performDataCalculations()
54 if(m_tileset ==
nullptr || m_map ==
nullptr)
57 int firstId = m_tileset->getFirstgid();
58 int columns = m_tileset->getColumns();
59 int rows = m_tileset->getTileCount() / columns;
60 int lastId = (m_tileset->getFirstgid() + m_tileset->getTileCount()) - 1;
62 if (getGid() >= firstId && getGid() <= lastId)
64 int baseTilePosition = ((int)getGid() - firstId);
66 int tileModX = (baseTilePosition % columns);
67 int currentRow = (baseTilePosition / columns);
68 int offsetX = (tileModX != 0) ? ((tileModX) * m_map->getTileSize().x) : (0 * m_map->getTileSize().x);
69 int offsetY = (currentRow < rows-1) ? (currentRow * m_map->getTileSize().y) : ((rows-1) * m_map->getTileSize().y);
71 tson::Vector2i spacing = m_tileset->getMarginSpacingOffset({tileModX, currentRow});
72 m_drawingRect = { offsetX + spacing.
x, offsetY + spacing.
y, m_map->getTileSize().x, m_map->getTileSize().y };
75 m_drawingRect = {0, 0, 0, 0};
84 return {((float) std::get<0>(tileDataPos)) * m_drawingRect.width, ((
float) std::get<1>(tileDataPos)) * m_drawingRect.height};
105 return m_tile->getDrawingRect();
114 void tson::Layer::decompressData()
118 if(container->
empty())
121 if(m_encoding.empty() && m_compression.empty())
124 std::string data = m_base64Data;
125 bool hasBeenDecoded =
false;
126 if(!m_encoding.empty() && container->
contains(m_encoding))
129 hasBeenDecoded =
true;
132 if(!m_compression.empty() && container->
contains(m_compression))
158 if(fs::exists(data.path))
160 std::unique_ptr<tson::Map> map = parser->parse(data.path);
161 m_maps.push_back(std::move(map));
165 return m_maps.size();
Definition: DecompressorContainer.hpp:16
bool contains(std::string_view name) const
Definition: DecompressorContainer.hpp:44
bool empty() const
Definition: DecompressorContainer.hpp:91
IDecompressor< std::string_view, std::string > * get(std::string_view name)
Definition: DecompressorContainer.hpp:77
virtual TOut decompress(const TIn &input)=0
T get(std::string_view key)
Definition: IJson.hpp:72
virtual size_t count(std::string_view key) const =0
const Vector2i & getTileSize() const
Definition: Map.hpp:358
const tson::Rect & getDrawingRect() const
Definition: tileson_forward.hpp:103
void initialize(const std::tuple< int, int > &posInTileUnits, tson::Tile *tile)
Definition: tileson_forward.hpp:96
const tson::Vector2f getPosition(const std::tuple< int, int > &tileDataPos)
Definition: tileson_forward.hpp:82
const tson::Vector2i getTileSize() const
Definition: tileson_forward.hpp:25
bool parseId(IJson &json)
Definition: tileson_forward.hpp:33
const tson::Vector2i getPositionInTileUnits(const std::tuple< int, int > &tileDataPos)
Definition: Tile.hpp:307
Definition: tileson_parser.hpp:54
T y
Definition: Vector2.hpp:22
T x
Definition: Vector2.hpp:21
Definition: WorldMapData.hpp:11
int loadMaps(tson::Tileson *parser)
Definition: tileson_forward.hpp:153