2023-06-21 14:30:14 -07:00
# pragma once
2023-06-22 23:28:16 -07:00
# include "olcUTIL_Geometry2D.h"
2023-06-22 22:09:11 -07:00
2023-06-23 20:42:55 -07:00
struct XMLTag ;
2023-06-21 14:30:14 -07:00
enum MapName {
2023-06-21 22:59:06 -07:00
CAMPAIGN_1_1 ,
2023-07-26 20:37:52 +00:00
CAMPAIGN_1_2 ,
BOSS_1 ,
WORLD_MAP
2023-06-22 22:09:11 -07:00
} ;
2023-06-23 20:42:55 -07:00
struct TileCollisionData {
geom2d : : rect < int > collision ;
} ;
2023-06-22 22:09:11 -07:00
struct TilesetData {
2023-09-06 23:07:15 -05:00
Renderable * tileset = nullptr ;
2023-06-22 22:09:11 -07:00
std : : map < int , XMLTag > foregroundTiles ;
2023-07-06 14:24:43 -05:00
std : : map < int , XMLTag > upperForegroundTiles ;
2023-06-23 20:42:55 -07:00
std : : map < int , TileCollisionData > collision ;
2023-07-06 15:07:44 -05:00
std : : map < int , XMLTag > staircaseTiles ;
2023-06-22 22:09:11 -07:00
} ;
struct TileRenderData {
Decal * tileset ;
vi2d pos ;
vi2d tileSheetPos ;
2023-06-22 23:28:16 -07:00
} ;
struct TileGroup {
private :
geom2d : : rect < int > range ;
std : : vector < TileRenderData > tiles ;
2023-07-10 18:48:57 -05:00
int minX = 0 , minY = 0 , maxX = 0 , maxY = 0 ;
2023-06-22 23:28:16 -07:00
public :
2023-07-11 15:33:50 +00:00
static float FADE_TIME ;
//0-255. 255 indicates fully invisible.
static uint8_t FADE_AMT ;
2023-06-22 23:28:16 -07:00
geom2d : : rect < int > GetRange ( ) ;
2023-07-11 15:33:50 +00:00
//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 ( ) ;
2023-06-22 23:28:16 -07:00
std : : vector < TileRenderData > & GetTiles ( ) ;
void InsertTile ( TileRenderData tile ) ;
bool playerBehind = false ;
2023-07-11 15:33:50 +00:00
float fadeFactor = 0.f ;
2023-09-07 04:41:23 -05:00
int originatingLayer = - 1 ;
2023-06-21 14:30:14 -07:00
} ;