# pragma once
# include "olcUTIL_Geometry2D.h"
struct XMLTag ;
enum MapName {
LEVEL1 ,
LEVEL2 ,
CAMPAIGN_1_1 ,
} ;
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 ;
} ;