From ba8a1bd091d5ef2cff8413df25390736fdc6c168 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 16 Sep 2023 04:38:38 -0500 Subject: [PATCH] Monster water reflections implemented. --- Crawler/Crawler.cpp | 6 +++++- Crawler/Monster.cpp | 11 ++++++----- Crawler/Monster.h | 1 + Crawler/Player.cpp | 1 - Crawler/Version.h | 2 +- Crawler/assets/Campaigns/1_1_v2.tmx | 21 +++++++++++++++++++-- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index d3f7a868..927128d4 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -603,7 +603,11 @@ void Crawler::RenderWorld(float fElapsedTime){ float multiplierX=0.9; multiplierX*=(1-abs(sin(reflectionStepTime))*"water_reflection_scale_factor"_F); multiplierX*=(1-abs(cos(1.5*reflectionStepTime))*"water_reflection_scale_factor"_F); - RenderPlayer(player->GetPos()+vf2d{abs(sin(reflectionStepTime))*"water_reflection_scale_factor"_F*player->GetFrame().GetSourceRect().size.x,float(player->GetFrame().GetSourceRect().size.y)-8}*player->GetSizeMult(),{multiplierX,-1}); + float reflectionRatioX=abs(sin(reflectionStepTime))*"water_reflection_scale_factor"_F; + RenderPlayer(player->GetPos()+vf2d{reflectionRatioX*player->GetFrame().GetSourceRect().size.x,float(player->GetFrame().GetSourceRect().size.y)-8}*player->GetSizeMult(),{multiplierX,-1}); + for(Monster&m:MONSTER_LIST){ + m.DrawReflection(reflectionRatioX,multiplierX); + } SetDecalMode(DecalMode::NORMAL); } for (int x = view.GetTopLeftTile().x/24-1; x <= view.GetBottomRightTile().x/24; x++){ diff --git a/Crawler/Monster.cpp b/Crawler/Monster.cpp index 8de075e9..5e3805c8 100644 --- a/Crawler/Monster.cpp +++ b/Crawler/Monster.cpp @@ -188,11 +188,12 @@ void Monster::Draw(){ vf2d shadowScale=vf2d{8*GetSizeMult()/3.f,1}/std::max(1.f,GetZ()/24); game->view.DrawDecal(GetPos()-vf2d{3,3}*shadowScale/2+vf2d{0,6*GetSizeMult()},game->GFX_Circle.Decal(),shadowScale,BLACK); } - if(GetFacingDirection()==RIGHT){ - game->view.DrawPartialDecal((GetPos()+vf2d{float(GetFrame().GetSourceRect().size.x),0}*GetSizeMult())-vf2d{12,12}*GetSizeMult()-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,vf2d(GetSizeMult()*-1,GetSizeMult()),GetBuffs(BuffType::SLOWDOWN).size()>0?Pixel{uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(128+127*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration)))}:WHITE); - } else { - game->view.DrawPartialDecal(GetPos()-vf2d{12,12}*GetSizeMult()-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,vf2d(GetSizeMult(),GetSizeMult()),GetBuffs(BuffType::SLOWDOWN).size()>0?Pixel{uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(128+127*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration)))}:WHITE); - } + game->view.DrawPartialRotatedDecal(GetPos()-vf2d{0,GetZ()},GetFrame().GetSourceImage()->Decal(),0,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,vf2d(GetSizeMult()*(GetFacingDirection()==RIGHT?-1:1),GetSizeMult()),GetBuffs(BuffType::SLOWDOWN).size()>0?Pixel{uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(128+127*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration)))}:WHITE); +} +void Monster::DrawReflection(float drawRatioX,float multiplierX){ + game->SetDecalMode(DecalMode::ADDITIVE); + game->view.DrawPartialRotatedDecal(GetPos()+vf2d{drawRatioX*GetFrame().GetSourceRect().size.x,GetZ()+(GetFrame().GetSourceRect().size.y-16)*GetSizeMult()},GetFrame().GetSourceImage()->Decal(),0,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,vf2d(GetSizeMult()*(GetFacingDirection()==RIGHT?-1:1)*multiplierX,GetSizeMult()*-1),GetBuffs(BuffType::SLOWDOWN).size()>0?Pixel{uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(255*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration))),uint8_t(128+127*abs(sin(1.4*GetBuffs(BuffType::SLOWDOWN)[0].duration)))}:WHITE); + game->SetDecalMode(DecalMode::NORMAL); } void Monster::Collision(Player*p){ if(MONSTER_DATA[id].GetCollisionDmg()>0&&!hasHitPlayer){ diff --git a/Crawler/Monster.h b/Crawler/Monster.h index 0aa20159..f2b3c393 100644 --- a/Crawler/Monster.h +++ b/Crawler/Monster.h @@ -112,6 +112,7 @@ public: vf2d&GetTargetPos(); Key GetFacingDirection(); void Draw(); + void DrawReflection(float drawRatioX,float multiplierX); void Collision(Player*p); void Collision(Monster&p); void Collision(); diff --git a/Crawler/Player.cpp b/Crawler/Player.cpp index 15db6da0..af984c46 100644 --- a/Crawler/Player.cpp +++ b/Crawler/Player.cpp @@ -348,7 +348,6 @@ void Player::Update(float fElapsedTime){ SetState(State::NORMAL); castInfo.castTimer=castInfo.castTotalTime=0; } - if(AllowedToCast(ability)&&ability.action(this,{})){ ability.cooldown=ability.COOLDOWN_TIME; mana-=ability.manaCost; diff --git a/Crawler/Version.h b/Crawler/Version.h index 92ed6dac..2377960c 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 1283 +#define VERSION_BUILD 1293 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/assets/Campaigns/1_1_v2.tmx b/Crawler/assets/Campaigns/1_1_v2.tmx index 76ad304c..c6700215 100644 --- a/Crawler/assets/Campaigns/1_1_v2.tmx +++ b/Crawler/assets/Campaigns/1_1_v2.tmx @@ -1,5 +1,5 @@ - + @@ -1961,6 +1961,23 @@ - + + + + + + + + + + + + + + + + + +