Fix sprites being indexed funky. Consolidated tile group code, broke some of the overlapping tiles functionality.
@ -921,10 +921,13 @@ void Crawler::LoadLevel(MapName map){
|
|||||||
int tileSheetY=tileSheetIndex/tileSheetWidth;
|
int tileSheetY=tileSheetIndex/tileSheetWidth;
|
||||||
#pragma region TileGroupShenanigans
|
#pragma region TileGroupShenanigans
|
||||||
auto SetupTileGroups=[&](std::function<bool(TilesheetData,int)>IsForeground,TileRenderData tile,std::set<vi2d>&foregroundTilesIncluded,std::vector<TileGroup>&groups){
|
auto SetupTileGroups=[&](std::function<bool(TilesheetData,int)>IsForeground,TileRenderData tile,std::set<vi2d>&foregroundTilesIncluded,std::vector<TileGroup>&groups){
|
||||||
if(IsForeground(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find({x,y})==foregroundTilesIncluded.end()){
|
int layerID=layer.tag.GetInteger("id");
|
||||||
|
if(IsForeground(tileSheet,tileSheetIndex)){
|
||||||
|
if(foregroundTilesIncluded.find({x,y})==foregroundTilesIncluded.end()){
|
||||||
std::queue<vi2d>tileGroupChecks;
|
std::queue<vi2d>tileGroupChecks;
|
||||||
TileGroup group;
|
TileGroup group;
|
||||||
foregroundTilesIncluded.insert({x,y});
|
foregroundTilesIncluded.insert({x,y});
|
||||||
|
group.originatingLayer=layerID;
|
||||||
group.InsertTile(tile);
|
group.InsertTile(tile);
|
||||||
if(x>0)tileGroupChecks.push({x-1,y});
|
if(x>0)tileGroupChecks.push({x-1,y});
|
||||||
if(x<WORLD_SIZE.x-1)tileGroupChecks.push({x+1,y});
|
if(x<WORLD_SIZE.x-1)tileGroupChecks.push({x+1,y});
|
||||||
@ -941,7 +944,7 @@ void Crawler::LoadLevel(MapName map){
|
|||||||
int tileSheetX=tileSheetIndex%tileSheetWidth;
|
int tileSheetX=tileSheetIndex%tileSheetWidth;
|
||||||
int tileSheetY=tileSheetIndex/tileSheetWidth;
|
int tileSheetY=tileSheetIndex/tileSheetWidth;
|
||||||
TileRenderData tile={tileSheet.tileset.tileset->Decal(),pos*24,vi2d{tileSheetX,tileSheetY}*24};
|
TileRenderData tile={tileSheet.tileset.tileset->Decal(),pos*24,vi2d{tileSheetX,tileSheetY}*24};
|
||||||
if(IsForegroundTile(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find(pos)==foregroundTilesIncluded.end()){
|
if(IsForeground(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find(pos)==foregroundTilesIncluded.end()){
|
||||||
foregroundTilesIncluded.insert(pos);
|
foregroundTilesIncluded.insert(pos);
|
||||||
group.InsertTile(tile);
|
group.InsertTile(tile);
|
||||||
if(pos.x>0)tileGroupChecks.push(pos+vi2d{-1,0});
|
if(pos.x>0)tileGroupChecks.push(pos+vi2d{-1,0});
|
||||||
@ -952,10 +955,11 @@ void Crawler::LoadLevel(MapName map){
|
|||||||
}
|
}
|
||||||
groups.push_back(group);
|
groups.push_back(group);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
TileRenderData tile={tileSheet.tileset.tileset->Decal(),vi2d{x,y}*24,vi2d{tileSheetX,tileSheetY}*24};
|
TileRenderData tile={tileSheet.tileset.tileset->Decal(),vi2d{x,y}*24,vi2d{tileSheetX,tileSheetY}*24};
|
||||||
SetupTileGroups([&](TilesheetData sheet,int tileID){return IsForegroundTile(sheet,tileID);},tile,foregroundTilesAdded,foregroundTileGroups);
|
SetupTileGroups([&](TilesheetData sheet,int tileID){return IsForegroundTile(sheet,tileID);},tile,foregroundTilesAdded,foregroundTileGroups);
|
||||||
SetupTileGroups([&](TilesheetData sheet,int tileID){return IsUpperForegroundTile(sheet,tileID);},tile,foregroundTilesAdded,foregroundTileGroups);
|
SetupTileGroups([&](TilesheetData sheet,int tileID){return IsUpperForegroundTile(sheet,tileID);},tile,upperForegroundTilesAdded,upperForegroundTileGroups);
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,4 +109,12 @@ public:
|
|||||||
datafiledoubledata GetDoubleList(std::string key);
|
datafiledoubledata GetDoubleList(std::string key);
|
||||||
static void OutputDebugInfo(const char*key,std::size_t len);
|
static void OutputDebugInfo(const char*key,std::size_t len);
|
||||||
void InitializeLevels();
|
void InitializeLevels();
|
||||||
|
|
||||||
|
struct TileGroupData{
|
||||||
|
vi2d tilePos;
|
||||||
|
int layer;
|
||||||
|
bool operator<(const TileGroupData&rhs)const{
|
||||||
|
return layer<rhs.layer||(layer==rhs.layer&&tilePos<rhs.tilePos);
|
||||||
|
}
|
||||||
|
};
|
||||||
};
|
};
|
@ -44,4 +44,5 @@ public:
|
|||||||
void InsertTile(TileRenderData tile);
|
void InsertTile(TileRenderData tile);
|
||||||
bool playerBehind=false;
|
bool playerBehind=false;
|
||||||
float fadeFactor=0.f;
|
float fadeFactor=0.f;
|
||||||
|
int originatingLayer=-1;
|
||||||
};
|
};
|
@ -2,7 +2,7 @@
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_PATCH 0
|
#define VERSION_PATCH 0
|
||||||
#define VERSION_BUILD 1069
|
#define VERSION_BUILD 1079
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |