From 5a7c60ac7c396030a5dd84dcd96bee236e08acee Mon Sep 17 00:00:00 2001 From: NicoNicoNii Date: Wed, 24 Jul 2024 21:33:58 -0500 Subject: [PATCH] [Compiler Error] Implement delayed lock-on targeting when multiple targets get marks at the same time (for more dramatic effect) --- .../AdventuresInLestoria.cpp | 49 ++++++++--- Adventures in Lestoria/AdventuresInLestoria.h | 5 ++ Adventures in Lestoria/Animation.cpp | 80 +++++++++--------- Adventures in Lestoria/BulletTypes.h | 2 +- Adventures in Lestoria/Monster.cpp | 3 +- .../assets/nico-Witch_512.png | Bin 2999 -> 3281 bytes Adventures in Lestoria/assets/nico-witch.png | Bin 8018 -> 16618 bytes Adventures in Lestoria/assets/nico-witch.xcf | Bin 30115 -> 30661 bytes 8 files changed, 82 insertions(+), 57 deletions(-) diff --git a/Adventures in Lestoria/AdventuresInLestoria.cpp b/Adventures in Lestoria/AdventuresInLestoria.cpp index b42d6054..9b4e7f79 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.cpp +++ b/Adventures in Lestoria/AdventuresInLestoria.cpp @@ -2290,6 +2290,7 @@ void AiL::_PrepareLevel(MapName map,MusicChange changeMusic){ hudOverlay.Reset(); backgroundEffects.clear(); foregroundEffects.clear(); + lockOnTargets.clear(); ItemDrop::drops.clear(); GameEvent::events.clear(); Audio::SetBGMPitch(1.f); @@ -4236,7 +4237,10 @@ void AiL::UpdateMonsters(){ MONSTER_LIST.push_back(std::make_unique(m)); if(MONSTER_LIST.capacity()>prevCapacity)LOG(std::format("WARNING! The monster list has automatically reserved more space and resized to {}! This caused one potential frame where bullet/effect hitlists that stored information on what monsters were hit to potentially be hit a second time or cause monsters that should've been hit to never be hit. Consider starting with a larger default reserved size for MONSTER_LIST if your intention was to have this many monsters!",MONSTER_LIST.capacity())); } - if(aMonsterIsMarkedForDeletion)std::erase_if(MONSTER_LIST,[](const std::unique_ptr&m){return m->markedForDeletion;}); + if(aMonsterIsMarkedForDeletion)std::erase_if(MONSTER_LIST,[](const std::unique_ptr&m){ + if(m->markedForDeletion)std::erase_if(lockOnTargets.begin(),lockOnTargets.end(),[&](const std::tuple&markData){return &*std::get<0>(markData)==m;}) //Marked targets may have dangling pointers, remove them before removing the monsters for good. + return m->markedForDeletion; + }); aMonsterIsMarkedForDeletion=false; game->monstersToBeSpawned.clear(); } @@ -4272,23 +4276,36 @@ void AiL::GlobalGameUpdates(){ ) #pragma region Damage Numbers update - for(std::vector>::iterator it=DAMAGENUMBER_LIST.begin();it!=DAMAGENUMBER_LIST.end();++it){ - DamageNumber*dn=(*it).get(); - if(dn->pauseTime>0){ - dn->pauseTime-=GetElapsedTime(); - } else{ - dn->lifeTime+=GetElapsedTime(); - if(dn->lifeTime<=1){ - if(dn->lifeTimeinvertedDirection){ - dn->pos.y+=dn->riseSpd*GetElapsedTime(); - }else{ - dn->pos.y-=dn->riseSpd*GetElapsedTime(); + for(std::vector>::iterator it=DAMAGENUMBER_LIST.begin();it!=DAMAGENUMBER_LIST.end();++it){ + DamageNumber*dn=(*it).get(); + if(dn->pauseTime>0){ + dn->pauseTime-=GetElapsedTime(); + } else{ + dn->lifeTime+=GetElapsedTime(); + if(dn->lifeTime<=1){ + if(dn->lifeTimeinvertedDirection){ + dn->pos.y+=dn->riseSpd*GetElapsedTime(); + }else{ + dn->pos.y-=dn->riseSpd*GetElapsedTime(); + } } } } } - } + #pragma endregion + + #pragma region Marked Targets Update + if(lockOnTargets.size()>0){ + lastLockOnTargetTime=std::max(0.f,lastLockOnTargetTime-GetElapsedTime()); + if(lastLockOnTargetTime<=0.f){ + const auto&[monster,stackCount,time]=lockOnTargets.front(); + monster->AddBuff(BuffType::TRAPPER_MARK,time,stackCount); + SoundEffect::PlaySFX("Lock On",monster->GetPos()); + lockOnTargets.erase(lockOnTargets.begin()); + lastLockOnTargetTime=0.2f; + } + } #pragma endregion if(GetMousePos()!=lastMousePos){ @@ -4416,4 +4433,8 @@ void AiL::PlayFootstepSound(){ const std::map&AiL::GetTilesets()const{ return MAP_TILESETS; +} + +void AiL::AddToMarkedTargetList(std::tuplemarkData){ + lockOnTargets.emplace_back(markData); } \ No newline at end of file diff --git a/Adventures in Lestoria/AdventuresInLestoria.h b/Adventures in Lestoria/AdventuresInLestoria.h index d31053c1..dc7345ee 100644 --- a/Adventures in Lestoria/AdventuresInLestoria.h +++ b/Adventures in Lestoria/AdventuresInLestoria.h @@ -69,6 +69,8 @@ BULLET_LIST.push_back(std::make_unique(type using HurtReturnValue=bool; using HurtList=std::vector,HurtReturnValue>>; +using StackCount=uint8_t; +using MarkTime=float; enum class HurtType{ PLAYER=0b01, @@ -227,6 +229,8 @@ private: Overlay hudOverlay{"pixel.png",BLANK}; float targetZoom{1.f}; float zoomAdjustSpeed{0.1f}; + std::vector>lockOnTargets; + float lastLockOnTargetTime{}; public: AiL(); bool OnUserCreate() override; @@ -381,6 +385,7 @@ public: //Plays the correct footstep sound based on player's current tile. void PlayFootstepSound(); const std::map&GetTilesets()const; + void AddToMarkedTargetList(std::tuplemarkData); struct TileGroupData{ vi2d tilePos; diff --git a/Adventures in Lestoria/Animation.cpp b/Adventures in Lestoria/Animation.cpp index 70f006b2..be155f05 100644 --- a/Adventures in Lestoria/Animation.cpp +++ b/Adventures in Lestoria/Animation.cpp @@ -270,70 +270,70 @@ void sig::Animation::InitializeAnimations(){ //Witch animations SetupClassWalkIdleAnimations(GFX["nico-witch.png"],"WITCH"); - Animate2D::FrameSequence pl_wizard_idle_attack_s; - pl_wizard_idle_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4,0}*24,{24,24}}}); - ANIMATION_DATA["WITCH_IDLE_ATTACK_S"]=pl_wizard_idle_attack_s; - Animate2D::FrameSequence pl_wizard_idle_attack_e; - pl_wizard_idle_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4,3}*24,{24,24}}}); - ANIMATION_DATA["WITCH_IDLE_ATTACK_E"]=pl_wizard_idle_attack_e; - Animate2D::FrameSequence pl_wizard_idle_attack_w; - pl_wizard_idle_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4,2}*24,{24,24}}}); - ANIMATION_DATA["WITCH_IDLE_ATTACK_W"]=pl_wizard_idle_attack_w; - Animate2D::FrameSequence pl_wizard_idle_attack_n; - pl_wizard_idle_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4,1}*24,{24,24}}}); - ANIMATION_DATA["WITCH_IDLE_ATTACK_N"]=pl_wizard_idle_attack_n; - Animate2D::FrameSequence pl_wizard_attack_s(0.2f); + Animate2D::FrameSequence pl_witch_idle_attack_s; + pl_witch_idle_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4,0}*24,{24,24}}}); + ANIMATION_DATA["WITCH_IDLE_ATTACK_S"]=pl_witch_idle_attack_s; + Animate2D::FrameSequence pl_witch_idle_attack_e; + pl_witch_idle_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4,3}*24,{24,24}}}); + ANIMATION_DATA["WITCH_IDLE_ATTACK_E"]=pl_witch_idle_attack_e; + Animate2D::FrameSequence pl_witch_idle_attack_w; + pl_witch_idle_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4,2}*24,{24,24}}}); + ANIMATION_DATA["WITCH_IDLE_ATTACK_W"]=pl_witch_idle_attack_w; + Animate2D::FrameSequence pl_witch_idle_attack_n; + pl_witch_idle_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4,1}*24,{24,24}}}); + ANIMATION_DATA["WITCH_IDLE_ATTACK_N"]=pl_witch_idle_attack_n; + Animate2D::FrameSequence pl_witch_attack_s(0.2f); for(int i=0;i<3;i++){ - pl_wizard_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,0}*24,{24,24}}}); + pl_witch_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,0}*24,{24,24}}}); if(i==1){ - pl_wizard_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4,0}*24,{24,24}}}); + pl_witch_attack_s.AddFrame({&GFX["nico-witch.png"],{vi2d{4,0}*24,{24,24}}}); } } - ANIMATION_DATA["WITCH_ATTACK_S"]=pl_wizard_attack_s; - Animate2D::FrameSequence pl_wizard_attack_e(0.2f); + ANIMATION_DATA["WITCH_ATTACK_S"]=pl_witch_attack_s; + Animate2D::FrameSequence pl_witch_attack_e(0.2f); for(int i=0;i<3;i++){ - pl_wizard_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,3}*24,{24,24}}}); + pl_witch_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,3}*24,{24,24}}}); if(i==1){ - pl_wizard_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4,3}*24,{24,24}}}); + pl_witch_attack_e.AddFrame({&GFX["nico-witch.png"],{vi2d{4,3}*24,{24,24}}}); } } - ANIMATION_DATA["WITCH_ATTACK_E"]=pl_wizard_attack_e; - Animate2D::FrameSequence pl_wizard_attack_w(0.2f); + ANIMATION_DATA["WITCH_ATTACK_E"]=pl_witch_attack_e; + Animate2D::FrameSequence pl_witch_attack_w(0.2f); for(int i=0;i<3;i++){ - pl_wizard_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,2}*24,{24,24}}}); + pl_witch_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,2}*24,{24,24}}}); if(i==1){ - pl_wizard_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4,2}*24,{24,24}}}); + pl_witch_attack_w.AddFrame({&GFX["nico-witch.png"],{vi2d{4,2}*24,{24,24}}}); } } - ANIMATION_DATA["WITCH_ATTACK_W"]=pl_wizard_attack_w; - Animate2D::FrameSequence pl_wizard_attack_n(0.2f); + ANIMATION_DATA["WITCH_ATTACK_W"]=pl_witch_attack_w; + Animate2D::FrameSequence pl_witch_attack_n(0.2f); for(int i=0;i<3;i++){ - pl_wizard_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,1}*24,{24,24}}}); + pl_witch_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4+i,1}*24,{24,24}}}); if(i==1){ - pl_wizard_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4,1}*24,{24,24}}}); + pl_witch_attack_n.AddFrame({&GFX["nico-witch.png"],{vi2d{4,1}*24,{24,24}}}); } } - ANIMATION_DATA["WITCH_ATTACK_N"]=pl_wizard_attack_n; - Animate2D::FrameSequence pl_wizard_cast_s(0.1f); + ANIMATION_DATA["WITCH_ATTACK_N"]=pl_witch_attack_n; + Animate2D::FrameSequence pl_witch_cast_s(0.1f); for(int i=0;i<2;i++){ - pl_wizard_cast_s.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,0}*24,{24,24}}}); + pl_witch_cast_s.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,0}*24,{24,24}}}); } - ANIMATION_DATA["WITCH_CAST_S"]=pl_wizard_cast_s; - Animate2D::FrameSequence pl_wizard_cast_e(0.1f); + ANIMATION_DATA["WITCH_CAST_S"]=pl_witch_cast_s; + Animate2D::FrameSequence pl_witch_cast_e(0.1f); for(int i=0;i<2;i++){ - pl_wizard_cast_e.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,3}*24,{24,24}}}); + pl_witch_cast_e.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,3}*24,{24,24}}}); } - ANIMATION_DATA["WITCH_CAST_E"]=pl_wizard_cast_e; - Animate2D::FrameSequence pl_wizard_cast_n(0.1f); + ANIMATION_DATA["WITCH_CAST_E"]=pl_witch_cast_e; + Animate2D::FrameSequence pl_witch_cast_n(0.1f); for(int i=0;i<2;i++){ - pl_wizard_cast_n.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,1}*24,{24,24}}}); + pl_witch_cast_n.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,1}*24,{24,24}}}); } - ANIMATION_DATA["WITCH_CAST_N"]=pl_wizard_cast_n; - Animate2D::FrameSequence pl_wizard_cast_w(0.1f); + ANIMATION_DATA["WITCH_CAST_N"]=pl_witch_cast_n; + Animate2D::FrameSequence pl_witch_cast_w(0.1f); for(int i=0;i<2;i++){ - pl_wizard_cast_w.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,2}*24,{24,24}}}); + pl_witch_cast_w.AddFrame({&GFX["nico-witch.png"],{vi2d{7+i,2}*24,{24,24}}}); } - ANIMATION_DATA["WITCH_CAST_W"]=pl_wizard_cast_w; + ANIMATION_DATA["WITCH_CAST_W"]=pl_witch_cast_w; CreateHorizontalAnimationSequence("ground-slam-attack-back.png",5,{64,64},{0.02f,Animate2D::Style::OneShot}); CreateHorizontalAnimationSequence("ground-slam-attack-front.png",5,{64,64},{0.02f,Animate2D::Style::OneShot}); diff --git a/Adventures in Lestoria/BulletTypes.h b/Adventures in Lestoria/BulletTypes.h index e6913f0e..68268f4b 100644 --- a/Adventures in Lestoria/BulletTypes.h +++ b/Adventures in Lestoria/BulletTypes.h @@ -325,4 +325,4 @@ struct PurpleEnergyBall:public Bullet{ private: const vf2d initialScale; const float homingRadius; -} \ No newline at end of file +}; \ No newline at end of file diff --git a/Adventures in Lestoria/Monster.cpp b/Adventures in Lestoria/Monster.cpp index aadb95b1..e5a232da 100644 --- a/Adventures in Lestoria/Monster.cpp +++ b/Adventures in Lestoria/Monster.cpp @@ -1257,8 +1257,7 @@ void Monster::ApplyMark(float time,uint8_t stackCount){ } } }else{ - AddBuff(BuffType::TRAPPER_MARK,time,stackCount); - SoundEffect::PlaySFX("Lock On",GetPos()); + game->AddToMarkedTargetList({this,stackCount,time}); } markApplicationTimer=0.5f; } diff --git a/Adventures in Lestoria/assets/nico-Witch_512.png b/Adventures in Lestoria/assets/nico-Witch_512.png index c3036ebeb7b781a4b99b403e2c3fe78a86fddb52..e90b24bc522c25100cb45ff162a8321ac4a58c77 100644 GIT binary patch delta 994 zcmdlkeo=CR8Vl!t1|VFpclqSW`YdvpFW4oS82Eh8@hLMfa3p!UIEGZ*dV6DkmWZRw zfsboE4JW*75}3-pD6qxl{sWIKT~R7?Uoc0odh4zU&d>}?T6<%r6EDZ4g8T>a0=){B zCX73^TMk6DZ0+NSI#c2I?Q>;=ymfK$?)bD6mdT9Vb^Hpwr^FnJw(5S^*Yy9cV)SGI zc9Y2qxLA~#7#LU>7!(*78kkpYVs%~VU2)>JyV|BRu{YmYGg|!Lr@e!5@Zfdz1v&L53vh}E{h4YQ?U1E?`>#%Mdamv{ zdx)KCKSEQvyMmU>Ss0qm{G<3g+Pe4O#H60cXKey&_A^-i3vT_pz9#(6IJ6)&2ai^J2PI%Y>S=o{clU%3IggENS^4vhIIqefIJ4 zqr8&~ImIR);8dE-&CX?EQE&`sMifwYy5Bwz`{E}_o9mYgI8EDWcuXm6+LnJZ|5uuS zuZp}@|IN+%?}e==pC|)e6n8Ce@<%qQ$@1*HlXr6PP2RvJsPk{_DX}SwFXvtLjr)JP zKfb%-9M}}M*ZCiQ74KQ^A8SA7&)iQR51QW>1%?-^`s4;y_Q|{01kE`Z7!p)s;f$s0L^ zCrbhyp}@%ka)8o5uT<_+7c;lN5}F6po-)(g)_h*gvuDTFHD66=ovZmi8x&^3Fl&KY zq>cahrEhG(LKQdD*^Y79*D`U>T zl70Y+JzPpVtpbVOqEc^<_l z70W~XR!dLb2z2cRHr~nYoYIO0K2voyj{jYJy7bjde>Zv6`g7XV*Eg-H|M|MMouP)g zfO&ESrxq}Pr8PIi!yQ>x-R$=MW$W|jo6g+b^?7B-SO2?KGgIHK_Flht{XtN?3QwNQ zB?wAfAm@qySbR#%BzpPXRl(=qd}C9cyZV;q2R;__$rst}g+NYzAhDS>pl8*D=WG6k rz2G;`2q{CxWu&i;>P=8&N8}qFaUw4tDnm{r-UW|TT{P@ delta 669 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 delta 3490 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�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 Bh*JOn