# 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 = nullptr ;
std : : map < int , XMLTag > foregroundTiles ;
std : : map < int , XMLTag > upperForegroundTiles ;
std : : map < int , TileCollisionData > collision ;
std : : map < int , XMLTag > staircaseTiles ;
std : : map < int , std : : vector < int > > animationData ;
} ;
struct TilesheetData {
TilesetData * tileset ;
int firstgid ;
} ;
struct TileRenderData {
TilesheetData tileSheet ;
vi2d pos ;
vi2d tileSheetPos ;
int tileID ;
int layerID ;
} ;
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 ;
} ;