diff --git a/Adventures in Lestoria/AdventuresInLestoria.cpp b/Adventures in Lestoria/AdventuresInLestoria.cpp index f3ec5351..0d9158ff 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.cpp +++ b/Adventures in Lestoria/AdventuresInLestoria.cpp @@ -455,8 +455,8 @@ void AiL::HandleUserInput(float fElapsedTime){ int truncatedPlayerY=int(player->GetY())/game->GetCurrentMapData().tilewidth; int tileID=layer.tiles[truncatedPlayerY][truncatedPlayerX]; TilesheetData dat=GetTileSheet(GetCurrentLevel(),tileID); - if (dat.tileset.staircaseTiles.find(tileID)!=dat.tileset.staircaseTiles.end()){ - return dat.tileset.staircaseTiles.at(tileID).data.at("value"); + if(MAP_TILESETS.at(dat.tilesetName).staircaseTiles.find(tileID)!=MAP_TILESETS.at(dat.tilesetName).staircaseTiles.end()){ + return MAP_TILESETS.at(dat.tilesetName).staircaseTiles.at(tileID).data.at("value"); } } return std::string("NONE"); @@ -955,55 +955,55 @@ void AiL::PopulateRenderLists(){ void AiL::RenderTile(vi2d pos,TilesheetData tileSheet,int tileSheetIndex,vi2d tileSheetPos){ Pixel tempCol=worldColorFunc(pos*game->GetCurrentMapData().tilewidth); - if(tileSheet.tileset.animationData.count(tileSheetIndex)){ - int animationDuration_ms=int(tileSheet.tileset.animationData.at(tileSheetIndex).size()*"animation_tile_precision"_I); - int animatedIndex=tileSheet.tileset.animationData.at(tileSheetIndex)[size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; + if(MAP_TILESETS.at(tileSheet.tilesetName).animationData.count(tileSheetIndex)){ + int animationDuration_ms=int(MAP_TILESETS.at(tileSheet.tilesetName).animationData.at(tileSheetIndex).size()*"animation_tile_precision"_I); + int animatedIndex=MAP_TILESETS.at(tileSheet.tilesetName).animationData.at(tileSheetIndex)[size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; int tileSheetX=animatedIndex%tileSheetWidth; int tileSheetY=animatedIndex/tileSheetWidth; - if(tileSheet.tileset.tileRepeatData.count(tileSheetIndex)){ - for(int y=0;yGetCurrentMapData().tilewidth+vf2d{float(x),float(y)}*game->GetCurrentMapData().tilewidth/vf2d{tileSheet.tileset.tileRepeatData.at(tileSheetIndex)},vf2d{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)}/vf2d{tileSheet.tileset.tileRepeatData.at(tileSheetIndex)},tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*tileSheet.tileset.tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tempCol); + if(MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.count(tileSheetIndex)){ + for(int y=0;yGetCurrentMapData().tilewidth+vf2d{float(x),float(y)}*game->GetCurrentMapData().tilewidth/vf2d{MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.at(tileSheetIndex)},vf2d{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)}/vf2d{MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.at(tileSheetIndex)},MAP_TILESETS.at(tileSheet.tilesetName).tileset->Decal(),vi2d{tileSheetX,tileSheetY}*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},tempCol); } } - }else view.DrawPartialDecal(pos*game->GetCurrentMapData().tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*tileSheet.tileset.tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tempCol); + }else view.DrawPartialDecal(pos*game->GetCurrentMapData().tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tilesetName).tileset->Decal(),vi2d{tileSheetX,tileSheetY}*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},tempCol); }else{ - if(tileSheet.tileset.tileRepeatData.count(tileSheetIndex)){ - for(int y=0;yGetCurrentMapData().tilewidth+vi2d{x,y}*game->GetCurrentMapData().tilewidth/tileSheet.tileset.tileRepeatData.at(tileSheetIndex),{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tileSheet.tileset.tileset->Decal(),tileSheetPos*tileSheet.tileset.tilewidth,vf2d{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)}/tileSheet.tileset.tileRepeatData.at(tileSheetIndex),tempCol); + if(MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.count(tileSheetIndex)){ + for(int y=0;yGetCurrentMapData().tilewidth+vi2d{x,y}*game->GetCurrentMapData().tilewidth/MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.at(tileSheetIndex),{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tilesetName).tileset->Decal(),tileSheetPos*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,vf2d{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)}/MAP_TILESETS.at(tileSheet.tilesetName).tileRepeatData.at(tileSheetIndex),tempCol); } } }else{ - view.DrawPartialDecal(pos*game->GetCurrentMapData().tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tileSheet.tileset.tileset->Decal(),tileSheetPos*tileSheet.tileset.tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tempCol); + view.DrawPartialDecal(pos*game->GetCurrentMapData().tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tilesetName).tileset->Decal(),tileSheetPos*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},tempCol); if("debug_tileIDs"_I)view.DrawStringDecal(pos*game->GetCurrentMapData().tilewidth,std::to_string(tileSheetIndex)); } } } void AiL::RenderTile(TileRenderData&tileSheet,Pixel col){ - if(tileSheet.tileSheet.tileset.animationData.count(tileSheet.tileID%1000000)){ - int animationDuration_ms=int(tileSheet.tileSheet.tileset.animationData.at(tileSheet.tileID%1000000).size()*"animation_tile_precision"_I); - int animatedIndex=tileSheet.tileSheet.tileset.animationData.at(tileSheet.tileID%1000000)[size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; - int tileSheetWidth=tileSheet.tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileSheet.tileset.tilewidth; + if(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).animationData.count(tileSheet.tileID%1000000)){ + int animationDuration_ms=int(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).animationData.at(tileSheet.tileID%1000000).size()*"animation_tile_precision"_I); + int animatedIndex=MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).animationData.at(tileSheet.tileID%1000000)[size_t(fmod(levelTime*1000.f,animationDuration_ms)/"animation_tile_precision"_I)]; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth; int tileSheetX=animatedIndex%tileSheetWidth; int tileSheetY=animatedIndex/tileSheetWidth; - if(tileSheet.tileSheet.tileset.tileRepeatData.count(animatedIndex)){ - for(int y=0;yGetCurrentMapData().tilewidth/tileSheet.tileSheet.tileset.tileRepeatData.at(animatedIndex),{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},tileSheet.tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*vf2d{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},vf2d{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)}/tileSheet.tileSheet.tileset.tileRepeatData.at(animatedIndex),col); + if(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.count(animatedIndex)){ + for(int y=0;yGetCurrentMapData().tilewidth/MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.at(animatedIndex),{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileset->Decal(),vi2d{tileSheetX,tileSheetY}*vf2d{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},vf2d{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)}/MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.at(animatedIndex),col); } } - }else view.DrawPartialDecal(tileSheet.pos,{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},tileSheet.tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*vf2d{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},col); + }else view.DrawPartialDecal(tileSheet.pos,{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileset->Decal(),vi2d{tileSheetX,tileSheetY}*vf2d{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},col); }else{ - if(tileSheet.tileSheet.tileset.tileRepeatData.count(tileSheet.tileID)){ - for(int y=0;yGetCurrentMapData().tilewidth/tileSheet.tileSheet.tileset.tileRepeatData.at(tileSheet.tileID),{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},tileSheet.tileSheet.tileset.tileset->Decal(),tileSheet.tileSheetPos,vf2d{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)}/tileSheet.tileSheet.tileset.tileRepeatData.at(tileSheet.tileID),col); + if(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.count(tileSheet.tileID)){ + for(int y=0;yGetCurrentMapData().tilewidth/MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.at(tileSheet.tileID),{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileset->Decal(),tileSheet.tileSheetPos,vf2d{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)}/MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileRepeatData.at(tileSheet.tileID),col); } } - }else view.DrawPartialDecal(tileSheet.pos,{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},tileSheet.tileSheet.tileset.tileset->Decal(),tileSheet.tileSheetPos,{float(tileSheet.tileSheet.tileset.tilewidth),float(tileSheet.tileSheet.tileset.tileheight)},col); + }else view.DrawPartialDecal(tileSheet.pos,{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileset->Decal(),tileSheet.tileSheetPos,{float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tileSheet.tilesetName).tileheight)},col); } } @@ -1136,8 +1136,8 @@ void AiL::RenderWorld(float fElapsedTime){ int tileID=layer.tiles[y][x]-1; if(tileID!=-1){ TilesheetData tileSheet=GetTileSheet(currentLevel,tileID); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int tileSheetX=tileSheetIndex%tileSheetWidth; int tileSheetY=tileSheetIndex/tileSheetWidth; @@ -1147,8 +1147,8 @@ void AiL::RenderWorld(float fElapsedTime){ #pragma region Debug Collision boxes #ifdef _DEBUG if("debug_collision_boxes"_I){ - if(tileSheet.tileset.collision.find(tileSheetIndex)!=tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tileSheet.tileset).collision.at(tileSheetIndex).collision; + if(MAP_TILESETS.at(tileSheet.tilesetName).collision.find(tileSheetIndex)!=MAP_TILESETS.at(tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=const_cast(MAP_TILESETS.at(tileSheet.tilesetName)).collision.at(tileSheetIndex).collision; view.FillRectDecal(vf2d{float(x),float(y)}*float(GetCurrentMapData().tilewidth)+collision.pos,collision.size,{0,0,0,128}); view.DrawRectDecal(vf2d{float(x),float(y)}*float(GetCurrentMapData().tilewidth)+collision.pos,collision.size,GREY); } @@ -1167,8 +1167,8 @@ void AiL::RenderWorld(float fElapsedTime){ int tileID=layer.tiles[y][x]-1; if(tileID!=-1){ TilesheetData tileSheet=GetTileSheet(currentLevel,tileID); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int tileSheetX=tileSheetIndex%tileSheetWidth; int tileSheetY=tileSheetIndex/tileSheetWidth; @@ -1178,8 +1178,8 @@ void AiL::RenderWorld(float fElapsedTime){ } #ifdef _DEBUG if("debug_collision_boxes"_I){ - if(tileSheet.tileset.collision.find(tileSheetIndex)!=tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tileSheet.tileset).collision.at(tileSheetIndex).collision; + if(MAP_TILESETS.at(tileSheet.tilesetName).collision.find(tileSheetIndex)!=MAP_TILESETS.at(tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=const_cast(MAP_TILESETS.at(tileSheet.tilesetName)).collision.at(tileSheetIndex).collision; view.FillRectDecal(vf2d{float(x),float(y)}*float(GetCurrentMapData().tilewidth)+collision.pos,collision.size,{0,0,0,128}); view.DrawRectDecal(vf2d{float(x),float(y)}*float(GetCurrentMapData().tilewidth)+collision.pos,collision.size,GREY); } @@ -1282,12 +1282,12 @@ void AiL::RenderWorld(float fElapsedTime){ tile.group=&group; #pragma region Unhiding tile detection - auto it=tile.tileSheet.tileset.foregroundTiles.find(tile.tileID); //We're looking for tiles that are marked as should not be faded away by a tile group. - if(it!=tile.tileSheet.tileset.foregroundTiles.end()){ + auto it=MAP_TILESETS.at(tile.tileSheet.tilesetName).foregroundTiles.find(tile.tileID); //We're looking for tiles that are marked as should not be faded away by a tile group. + if(it!=MAP_TILESETS.at(tile.tileSheet.tilesetName).foregroundTiles.end()){ if(!(*it).second.hide)tile.tileOpacity=0.f; } #pragma endregion - if(tile.tileSheet.tileset.collision.find(tile.tileID)!=tile.tileSheet.tileset.collision.end()){ + if(MAP_TILESETS.at(tile.tileSheet.tilesetName).collision.find(tile.tileID)!=MAP_TILESETS.at(tile.tileSheet.tilesetName).collision.end()){ tilesWithCollision.push_back(&tile); }else{ tilesWithoutCollision.push_back(&tile); //Tiles without collision are assumed to always be in the foreground. They don't have any depth rules. @@ -1438,8 +1438,8 @@ void AiL::RenderWorld(float fElapsedTime){ #pragma endregion RenderTile(*tile,{255,255,255,uint8_t(255-tile->tileOpacity/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); float distToPlayer=geom2d::line(player->GetPos(),tile->pos+vf2d{12,12}).length(); - if(GameSettings::TerrainCollisionBoxesEnabled()&&distToPlayer<24*3&&tile->tileOpacity>0&&tile->tileSheet.tileset.collision.find(tile->tileID)!=tile->tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tile->tileSheet.tileset).collision.at(tile->tileID).collision; + if(GameSettings::TerrainCollisionBoxesEnabled()&&distToPlayer<24*3&&tile->tileOpacity>0&&MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.find(tile->tileID)!=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.at(tile->tileID).collision; distToPlayer/=4; if(distToPlayer<1){distToPlayer=1;} view.FillRectDecal(tile->pos+collision.pos,collision.size,{255,0,0,uint8_t(128*tile->tileOpacity/sqrt(distToPlayer))}); @@ -1498,8 +1498,8 @@ void AiL::RenderWorld(float fElapsedTime){ for(TileRenderData*tile:tilesWithoutCollision){ RenderTile(*tile,{255,255,255,uint8_t(255-tile->tileOpacity/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); float distToPlayer=geom2d::line(player->GetPos(),tile->pos+vf2d{12,12}).length(); - if(distToPlayer<24*3&&tile->tileOpacity>0&&tile->tileSheet.tileset.collision.find(tile->tileID)!=tile->tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tile->tileSheet.tileset).collision.at(tile->tileID).collision; + if(distToPlayer<24*3&&tile->tileOpacity>0&&MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.find(tile->tileID)!=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.at(tile->tileID).collision; distToPlayer/=4; if(distToPlayer<1){distToPlayer=1;} view.FillRectDecal(tile->pos+collision.pos,collision.size,{255,0,0,uint8_t(128*tile->tileOpacity/sqrt(distToPlayer))}); @@ -1527,16 +1527,16 @@ void AiL::RenderWorld(float fElapsedTime){ int tileID=bridgeLayer->tiles[y][x]-1; if(tileID!=-1){ TilesheetData tileSheet=GetTileSheet(currentLevel,tileID); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int tileSheetX=tileSheetIndex%tileSheetWidth; int tileSheetY=tileSheetIndex/tileSheetWidth; - view.DrawPartialDecal(vi2d{x,y}*game->GetCurrentMapData().tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*game->GetCurrentMapData().tilewidth,{float(tileSheet.tileset.tilewidth),float(tileSheet.tileset.tileheight)},{255,255,255,uint8_t(255-bridgeFadeFactor/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); + view.DrawPartialDecal(vi2d{x,y}*game->GetCurrentMapData().tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},MAP_TILESETS.at(tileSheet.tilesetName).tileset->Decal(),vi2d{tileSheetX,tileSheetY}*game->GetCurrentMapData().tilewidth,{float(MAP_TILESETS.at(tileSheet.tilesetName).tilewidth),float(MAP_TILESETS.at(tileSheet.tilesetName).tileheight)},{255,255,255,uint8_t(255-bridgeFadeFactor/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); #ifdef _DEBUG if("debug_collision_boxes"_I){ - if(tileSheet.tileset.collision.find(tileSheetIndex)!=tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tileSheet.tileset).collision.at(tileSheetIndex).collision; + if(MAP_TILESETS.at(tileSheet.tilesetName).collision.find(tileSheetIndex)!=MAP_TILESETS.at(tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=const_cast(MAP_TILESETS.at(tileSheet.tilesetName)).collision.at(tileSheetIndex).collision; view.FillRectDecal(vf2d{float(x),float(y)}*float(game->GetCurrentMapData().tilewidth)+collision.pos,collision.size,{0,0,0,128}); view.DrawRectDecal(vf2d{float(x),float(y)}*float(game->GetCurrentMapData().tilewidth)+collision.pos,collision.size,GREY); } @@ -1564,7 +1564,7 @@ void AiL::RenderWorld(float fElapsedTime){ if(GameState::STATE!=GameState::states[States::MAIN_MENU]){ //Don't fade out tile groups while we are on the main menu. group.fadeFactor=std::min(group.fadeFactor+fElapsedTime,TileGroup::FADE_TIME); } - } else { + }else{ group.fadeFactor=std::max(group.fadeFactor-fElapsedTime,0.f); } for(TileRenderData&tile:group.GetTiles()){ @@ -1572,13 +1572,13 @@ void AiL::RenderWorld(float fElapsedTime){ tile.group=&group; #pragma region Unhiding tile detection - auto it=tile.tileSheet.tileset.upperForegroundTiles.find(tile.tileID); //We're looking for tiles that are marked as should not be faded away by a tile group. - if(it!=tile.tileSheet.tileset.upperForegroundTiles.end()){ + auto it=MAP_TILESETS.at(tile.tileSheet.tilesetName).upperForegroundTiles.find(tile.tileID); //We're looking for tiles that are marked as should not be faded away by a tile group. + if(it!=MAP_TILESETS.at(tile.tileSheet.tilesetName).upperForegroundTiles.end()){ if(!(*it).second.hide)tile.tileOpacity=0.f; } #pragma endregion - if(tile.tileSheet.tileset.collision.find(tile.tileID)!=tile.tileSheet.tileset.collision.end()){ + if(MAP_TILESETS.at(tile.tileSheet.tilesetName).collision.find(tile.tileID)!=MAP_TILESETS.at(tile.tileSheet.tilesetName).collision.end()){ tilesWithCollision.push_back(&tile); }else{ tilesWithoutCollision.push_back(&tile); @@ -1747,8 +1747,8 @@ void AiL::RenderWorld(float fElapsedTime){ #pragma endregion RenderTile(*tile,{255,255,255,uint8_t(255-tile->tileOpacity/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); float distToPlayer=geom2d::line(player->GetPos(),tile->pos+vf2d{12,12}).length(); - if(GameSettings::TerrainCollisionBoxesEnabled()&&distToPlayer<24*3&&tile->tileOpacity>0&&tile->tileSheet.tileset.collision.find(tile->tileID)!=tile->tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tile->tileSheet.tileset).collision.at(tile->tileID).collision; + if(GameSettings::TerrainCollisionBoxesEnabled()&&distToPlayer<24*3&&tile->tileOpacity>0&&MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.find(tile->tileID)!=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.at(tile->tileID).collision; distToPlayer/=4; if(distToPlayer<1){distToPlayer=1;} view.FillRectDecal(tile->pos+collision.pos,collision.size,{255,0,0,uint8_t(128*tile->tileOpacity/sqrt(distToPlayer))}); @@ -1799,8 +1799,8 @@ void AiL::RenderWorld(float fElapsedTime){ for(TileRenderData*tile:tilesWithoutCollision){ RenderTile(*tile,{255,255,255,uint8_t(255-tile->tileOpacity/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); float distToPlayer=geom2d::line(player->GetPos(),tile->pos+vf2d{12,12}).length(); - if(distToPlayer<24*3&&tile->tileOpacity>0&&tile->tileSheet.tileset.collision.find(tile->tileID)!=tile->tileSheet.tileset.collision.end()){ - const geom2d::rectcollision=const_cast(tile->tileSheet.tileset).collision.at(tile->tileID).collision; + if(distToPlayer<24*3&&tile->tileOpacity>0&&MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.find(tile->tileID)!=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.end()){ + const geom2d::rectcollision=MAP_TILESETS.at(tile->tileSheet.tilesetName).collision.at(tile->tileID).collision; distToPlayer/=4; if(distToPlayer<1){distToPlayer=1;} view.FillRectDecal(tile->pos+collision.pos,collision.size,{255,0,0,uint8_t(128*tile->tileOpacity/sqrt(distToPlayer))}); @@ -2282,13 +2282,13 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){ int tileID=layer.tiles[y][x]-1; if(tileID!=-1){ TilesheetData tileSheet=GetTileSheet(map,tileID); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int tileSheetX=tileSheetIndex%tileSheetWidth; int tileSheetY=tileSheetIndex/tileSheetWidth; - vi2d pos=vi2d{x,y}*tileSheet.tileset.tilewidth; - DrawPartialSprite(pos,tileSheet.tileset.tileset->Sprite(),vi2d{tileSheetX,tileSheetY}*tileSheet.tileset.tilewidth,{tileSheet.tileset.tilewidth,tileSheet.tileset.tileheight}); + vi2d pos=vi2d{x,y}*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + DrawPartialSprite(pos,MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite(),vi2d{tileSheetX,tileSheetY}*MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,{MAP_TILESETS.at(tileSheet.tilesetName).tilewidth,MAP_TILESETS.at(tileSheet.tilesetName).tileheight}); } } } @@ -2477,8 +2477,8 @@ void AiL::_PrepareLevel(MapName map,MusicChange changeMusic){ int tileID=layer.tiles[y][x]-1; if(tileID!=-1){ TilesheetData tileSheet=GetTileSheet(currentLevel,tileID); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int realTileSheetIndex=(tileID%1000000)-(tileSheet.firstgid-1); int tileSheetX=realTileSheetIndex%tileSheetWidth; @@ -2503,8 +2503,8 @@ void AiL::_PrepareLevel(MapName map,MusicChange changeMusic){ if(!loopAll&&&layer==&layer2){layer2ID++;continue;}; int tileID=layer2.tiles[pos.y][pos.x]-1; TilesheetData tileSheet=GetTileSheet(currentLevel,tileID%1000000); - int tileSheetWidth=tileSheet.tileset.tileset->Sprite()->width/tileSheet.tileset.tilewidth; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/tileSheet.tileset.tileheight; + int tileSheetWidth=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->width/MAP_TILESETS.at(tileSheet.tilesetName).tilewidth; + int tileSheetHeight=MAP_TILESETS.at(tileSheet.tilesetName).tileset->Sprite()->height/MAP_TILESETS.at(tileSheet.tilesetName).tileheight; int tileSheetIndex=tileID-(tileSheet.firstgid-1); int realTileSheetIndex=(tileID%1000000)-(tileSheet.firstgid-1); int tileSheetX=realTileSheetIndex%tileSheetWidth; @@ -2590,10 +2590,10 @@ void AiL::_PrepareLevel(MapName map,MusicChange changeMusic){ for(auto&it=find_tiles.first;it!=find_tiles.second;++it){ //These are all tiles that were found adjacent to the location we are checking for. See if they match a potential group. TileRenderData&foundTile=(*it).second; - if(&tile.tileSheet.tileset==&foundTile.tileSheet.tileset){ //Let's first see if they are even in the same tileset. + if(tile.tileSheet.tilesetName==foundTile.tileSheet.tilesetName){ //Let's first see if they are even in the same tileset. //Let's get how many tiles wide this tile sheet is. - int tileWidth=tile.tileSheet.tileset.tilewidth; - int tileSheetWidth=tile.tileSheet.tileset.tileset->Sprite()->width/tileWidth; + int tileWidth=MAP_TILESETS.at(tile.tileSheet.tilesetName).tilewidth; + int tileSheetWidth=MAP_TILESETS.at(tile.tileSheet.tilesetName).tileset->Sprite()->width/tileWidth; if(IsAdjacent(tile.tileID,foundTile.tileID,tileSheetWidth)){ group.insert({loc,tile});//We add this tile to the group! It is adjacent! groupFound=true; @@ -2741,7 +2741,7 @@ bool AiL::IsUpperForegroundTile(int tileID){ } bool AiL::IsForegroundTile(TilesheetData sheet,int tileID){ - return sheet.tileset.foregroundTiles.find(tileID)!=sheet.tileset.foregroundTiles.end(); + return MAP_TILESETS.at(sheet.tilesetName).foregroundTiles.find(tileID)!=MAP_TILESETS.at(sheet.tilesetName).foregroundTiles.end(); } const TilesheetData AiL::GetTileSheet(MapName map,int tileID)const{ @@ -2749,7 +2749,7 @@ const TilesheetData AiL::GetTileSheet(MapName map,int tileID)const{ if(tileData.size()==1){ size_t slashMarkerSourceDir = tileData[0].data.at("source").find_last_of('/'); std::string baseSourceDir=tileData[0].data.at("source").substr(slashMarkerSourceDir+1); - return {MAP_TILESETS.at("assets/maps/"+baseSourceDir),1,MAP_TILESETS.at("assets/maps/"+baseSourceDir).tilecols[tileID]}; + return {"assets/maps/"+baseSourceDir,1,MAP_TILESETS.at("assets/maps/"+baseSourceDir).tilecols[tileID]}; } else { for (int i=1;iAiL::GetTileCollision(MapName map,vf2d pos,bool upperLe int tileID=layer.tiles[pos.y/mapData.tilewidth][pos.x/mapData.tilewidth]-1; if(tileID==-1)continue; const TilesheetData&data=GetTileSheet(map,tileID); - if(data.tileset.isTerrain){ + if(MAP_TILESETS.at(data.tilesetName).isTerrain){ hasTerrain=true; break; } @@ -2823,8 +2823,8 @@ const geom2d::rectAiL::GetTileCollision(MapName map,vf2d pos,bool upperLe } if(Unlock::IsUnlocked(layer.unlockCondition)){ int tileID=layer.tiles[int(pos.y)/mapData.tilewidth][int(pos.x)/mapData.tilewidth]-1; - if(tileID!=-1&&GetTileSheet(map,tileID%1000000).tileset.collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=GetTileSheet(map,tileID%1000000).tileset.collision.end()){ - const geom2d::rectcollisionRect=const_cast(GetTileSheet(map,tileID%1000000).tileset).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; + if(tileID!=-1&&MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.end()){ + const geom2d::rectcollisionRect=const_cast(MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName)).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; return collisionRect; } } @@ -2833,8 +2833,8 @@ const geom2d::rectAiL::GetTileCollision(MapName map,vf2d pos,bool upperLe #pragma endregion int tileID=MAP_DATA.at(map).LayerData[bridgeLayerIndex].tiles[int(pos.y)/mapData.tilewidth][int(pos.x)/mapData.tilewidth]-1; if(tileID!=-1){ - if (GetTileSheet(map,tileID%1000000).tileset.collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=GetTileSheet(map,tileID%1000000).tileset.collision.end()){ - return const_cast(GetTileSheet(map,tileID%1000000).tileset).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; + if(MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.end()){ + return const_cast(MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName)).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; } return NO_COLLISION; } @@ -2845,8 +2845,8 @@ const geom2d::rectAiL::GetTileCollision(MapName map,vf2d pos,bool upperLe //auto HasNoClass=[&](){return layer.tag.data.find("class")==layer.tag.data.end();}; if(counter!=bridgeLayerIndex){ int tileID=layer.tiles[int(pos.y)/mapData.tilewidth][int(pos.x)/mapData.tilewidth]-1; - if(tileID!=-1&&GetTileSheet(map,tileID%1000000).tileset.collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=GetTileSheet(map,tileID%1000000).tileset.collision.end()){ - const geom2d::rectcollisionRect=const_cast(GetTileSheet(map,tileID%1000000).tileset).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; + if(tileID!=-1&&MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.find(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1)!=MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName).collision.end()){ + const geom2d::rectcollisionRect=const_cast(MAP_TILESETS.at(GetTileSheet(map,tileID%1000000).tilesetName)).collision.at(tileID%1000000-GetTileSheet(map,tileID%1000000).firstgid+1).collision; if(foundRect==NO_COLLISION){ foundRect=collisionRect; }else{ @@ -3251,7 +3251,7 @@ void AiL::OutputDebugInfo(const char*key,std::size_t len){ } bool AiL::IsReflectiveTile(TilesheetData tileSheet,int tileID){ - return tileSheet.tileset.reflectiveData.find(tileID)!=tileSheet.tileset.reflectiveData.end(); + return MAP_TILESETS.at(tileSheet.tilesetName).reflectiveData.find(tileID)!=MAP_TILESETS.at(tileSheet.tilesetName).reflectiveData.end(); } bool AiL::OnUserDestroy(){ @@ -4457,4 +4457,8 @@ void AiL::PlayFootstepSound(){ }else{ SoundEffect::PlaySFX("Footstep",SoundEffect::CENTERED); } +} + +const std::map&AiL::GetTilesets()const{ + return MAP_TILESETS; } \ No newline at end of file diff --git a/Adventures in Lestoria/AdventuresInLestoria.h b/Adventures in Lestoria/AdventuresInLestoria.h index 8072da78..5940c6f4 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.h +++ b/Adventures in Lestoria/AdventuresInLestoria.h @@ -380,6 +380,7 @@ public: void SetWorldZoom(float newZoomScale); //Plays the correct footstep sound based on player's current tile. void PlayFootstepSound(); + const std::map&GetTilesets()const; struct TileGroupData{ vi2d tilePos; diff --git a/Adventures in Lestoria/Map.cpp b/Adventures in Lestoria/Map.cpp index 4aaa7aea..a3abd83b 100644 --- a/Adventures in Lestoria/Map.cpp +++ b/Adventures in Lestoria/Map.cpp @@ -74,12 +74,12 @@ void TileGroup::InsertTile(TileRenderData tile){ } range={{minX,minY},{maxX-minX,maxY-minY}}; } - if(tile.tileSheet.tileset.collision.find(tile.tileID%1000000)!=tile.tileSheet.tileset.collision.end()){ + if(game->GetTilesets().at(tile.tileSheet.tilesetName).collision.find(tile.tileID%1000000)!=game->GetTilesets().at(tile.tileSheet.tilesetName).collision.end()){ if(collisionRange.size==vf2d{0,0}){ - const geom2d::rectcollisionRect=const_cast(tile.tileSheet.tileset).collision.at(tile.tileID%1000000).collision; + const geom2d::rectcollisionRect=const_cast(game->GetTilesets().at(tile.tileSheet.tilesetName)).collision.at(tile.tileID%1000000).collision; collisionRange={tile.pos+collisionRect.pos,collisionRect.size}; }else{ - geom2d::rectnewCollision=const_cast(tile.tileSheet.tileset).collision.at(tile.tileID%1000000).collision; + geom2d::rectnewCollision=const_cast(game->GetTilesets().at(tile.tileSheet.tilesetName)).collision.at(tile.tileID%1000000).collision; newCollision.pos+=tile.pos; float minX=collisionRange.top().start.x; diff --git a/Adventures in Lestoria/Map.h b/Adventures in Lestoria/Map.h index 79864aff..e2a4d708 100644 --- a/Adventures in Lestoria/Map.h +++ b/Adventures in Lestoria/Map.h @@ -66,20 +66,19 @@ struct TilesetData{ std::unordered_maptileRepeatData; std::setreflectiveData; std::vectortilecols; + bool operator==(const TilesetData&rhs)const{ + return tileset==rhs.tileset; + } }; struct TilesheetData{ - const TilesetData&tileset; + std::string tilesetName; int firstgid; Pixel tilecol; - TilesheetData(const TilesetData&tileset,const int firstgid,const Pixel tilecol) - :tileset(tileset),firstgid(firstgid),tilecol(tilecol){}; - TilesheetData(const TilesheetData&ref)=default; - TilesheetData operator=(const TilesheetData&ref){ - return {ref.tileset,ref.firstgid,ref.tilecol}; - }; - bool operator==(const TilesheetData&rhs){ - return &tileset==&rhs.tileset&&firstgid==rhs.firstgid; + TilesheetData(std::string_view tilesetName,const int firstgid,const Pixel tilecol) + :tilesetName(tilesetName),firstgid(firstgid),tilecol(tilecol){}; + bool operator==(const TilesheetData&rhs)const{ + return firstgid==rhs.firstgid; } }; diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h index 000208e5..35533550 100644 --- a/Adventures in Lestoria/Version.h +++ b/Adventures in Lestoria/Version.h @@ -39,7 +39,7 @@ All rights reserved. #define VERSION_MAJOR 1 #define VERSION_MINOR 2 #define VERSION_PATCH 3 -#define VERSION_BUILD 10205 +#define VERSION_BUILD 10219 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx b/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx index 73d69780..9e555529 100644 --- a/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx +++ b/Adventures in Lestoria/assets/Campaigns/1_1_v2.tmx @@ -1,5 +1,5 @@ - + @@ -1476,7 +1476,7 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + @@ -1960,7 +1960,6 @@ - @@ -1996,6 +1995,7 @@ + diff --git a/Adventures in Lestoria/assets/Campaigns/2_5.tmx b/Adventures in Lestoria/assets/Campaigns/2_5.tmx index 24623415..8a7591aa 100644 --- a/Adventures in Lestoria/assets/Campaigns/2_5.tmx +++ b/Adventures in Lestoria/assets/Campaigns/2_5.tmx @@ -1,5 +1,5 @@ - + @@ -505,10 +505,10 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1367,1368,1369,1367,1368,1369,1367,1368,1369,1367,1368,1369,1367,1368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1419,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,1421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1471,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2912,1421,1419,1420,1421,1419,1420,1421,1419,1420,1421,1419,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,1421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1472,1473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -1651,7 +1651,6 @@ - @@ -1660,8 +1659,9 @@ + - + diff --git a/Adventures in Lestoria/assets/gamepack.pak b/Adventures in Lestoria/assets/gamepack.pak index 6331419f..756bc17f 100644 Binary files a/Adventures in Lestoria/assets/gamepack.pak and b/Adventures in Lestoria/assets/gamepack.pak differ diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe index 73392fa0..130f1d25 100644 Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ