#pragma once #include "olcUTIL_Geometry2D.h" struct XMLTag; enum MapName{ CAMPAIGN_1_1, CAMPAIGN_1_2, BOSS_1, WORLD_MAP }; struct TileCollisionData{ geom2d::rect<int>collision; }; struct TilesetData{ Renderable*tileset; std::map<int,XMLTag>foregroundTiles; std::map<int,XMLTag>upperForegroundTiles; std::map<int,TileCollisionData>collision; std::map<int,XMLTag>staircaseTiles; }; struct TileRenderData{ Decal*tileset; vi2d pos; vi2d tileSheetPos; }; struct TileGroup{ private: geom2d::rect<int>range; std::vector<TileRenderData>tiles; int minX=0,minY=0,maxX=0,maxY=0; public: static float FADE_TIME; //0-255. 255 indicates fully invisible. static uint8_t FADE_AMT; geom2d::rect<int>GetRange(); //The fade range is the bounds in which this tile group will be considered "in range" of a player, one tile in each direction further than its actual range. geom2d::rect<int>GetFadeRange(); std::vector<TileRenderData>&GetTiles(); void InsertTile(TileRenderData tile); bool playerBehind=false; float fadeFactor=0.f; };