From e172483cc60d89763a296191cf538fcecae375e4 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Tue, 11 Jul 2023 17:24:50 +0000 Subject: [PATCH] Fade transition added to bridge fade layer and upper foreground layer as well Co-authored-by: sigonasr2 --- Crawler/Crawler.cpp | 23 ++++++++++++++--------- Crawler/Crawler.h | 1 + 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index 4c2c4456..7fdc7055 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -806,6 +806,11 @@ void Crawler::RenderWorld(float fElapsedTime){ } } } + if(bridgeLayerFade){ + bridgeFadeFactor=std::min(bridgeFadeFactor+fElapsedTime,TileGroup::FADE_TIME); + }else{ + bridgeFadeFactor=std::max(bridgeFadeFactor-fElapsedTime,0.f); + } #pragma endregion //DrawDecal({0,0},MAP_TILESETS["assets/maps/"+MAP_DATA[LEVEL1].TilesetData[1].data["source"]]->Decal()); std::vectormonstersBeforeLower,monstersAfterLower,monstersBeforeUpper,monstersAfterUpper; @@ -878,7 +883,7 @@ void Crawler::RenderWorld(float fElapsedTime){ int tileSheetIndex=tileID-(tileSheet.firstgid-1); int tileSheetX=tileSheetIndex%tileSheetWidth; int tileSheetY=tileSheetIndex/tileSheetWidth; - view.DrawPartialDecal(vi2d{x,y}*24,{24,24},tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*24,{24,24},{255,255,255,uint8_t(bridgeLayerFade?128:255)}); + view.DrawPartialDecal(vi2d{x,y}*24,{24,24},tileSheet.tileset.tileset->Decal(),vi2d{tileSheetX,tileSheetY}*24,{24,24},{255,255,255,uint8_t(255-bridgeFadeFactor/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); #ifdef DEBUG_COLLISIONS if(tileSheet.tileset.collision.find(tileSheetIndex)!=tileSheet.tileset.collision.end()){ geom2d::rectcollision=tileSheet.tileset.collision[tileSheetIndex].collision; @@ -912,16 +917,16 @@ void Crawler::RenderWorld(float fElapsedTime){ } #pragma region Upper Foreground Rendering for(TileGroup&group:upperForegroundTileGroups){ - if(geom2d::overlaps(group.GetRange(),player.pos)){ - group.playerBehind=true; - } else { - group.playerBehind=false; - } - if(view.IsRectVisible(group.GetRange().pos,group.GetRange().size)){ + if(geom2d::overlaps(group.GetFadeRange(),player.pos)){ + group.playerBehind=true; + group.fadeFactor=std::min(group.fadeFactor+fElapsedTime,TileGroup::FADE_TIME); + } else { + group.playerBehind=false; + group.fadeFactor=std::max(group.fadeFactor-fElapsedTime,0.f); + } for(TileRenderData&tile:group.GetTiles()){ - view.DrawPartialDecal(tile.pos,{24,24},tile.tileset,tile.tileSheetPos,{24,24},{255,255,255,uint8_t(group.playerBehind?128:255)}); + view.DrawPartialDecal(tile.pos,{24,24},tile.tileset,tile.tileSheetPos,{24,24},{255,255,255,uint8_t(255-group.fadeFactor/TileGroup::FADE_TIME*TileGroup::FADE_AMT)}); } - } } #pragma endregion for(std::vector::iterator it=DAMAGENUMBER_LIST.begin();it!=DAMAGENUMBER_LIST.end();++it){ diff --git a/Crawler/Crawler.h b/Crawler/Crawler.h index 771ce7dd..b7527d34 100644 --- a/Crawler/Crawler.h +++ b/Crawler/Crawler.h @@ -41,6 +41,7 @@ private: std::vectorforegroundTileGroups; std::vectorupperForegroundTileGroups; int bridgeLayerIndex=-1; + float bridgeFadeFactor=0.f; public: Crawler();