From 9a8859ffe8484793b95181d7b3a98ca251f1a863 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 24 Jun 2023 01:18:21 -0700 Subject: [PATCH] Adjusted shoot afar AI to account for collision tiles. --- Crawler/Animation.h | 2 + Crawler/Bullet.cpp | 4 +- Crawler/Crawler.cpp | 70 +++++++++++++++++++++++--- Crawler/Crawler.h | 3 ++ Crawler/Monster.cpp | 42 +++++++--------- Crawler/Monster.h | 10 ++-- Crawler/Player.cpp | 2 + Crawler/Player.h | 1 + Crawler/Version.h | 2 +- Crawler/assets/Campaigns/1_1_test.tmx | 6 +-- Crawler/assets/circle.png | Bin 95 -> 542 bytes Crawler/assets/circle_outline.png | Bin 0 -> 537 bytes Crawler/assets/nico-wizard.png | Bin 14245 -> 14525 bytes Crawler/assets/nico-wizard.xcf | Bin 18913 -> 23440 bytes 14 files changed, 100 insertions(+), 42 deletions(-) create mode 100644 Crawler/assets/circle_outline.png diff --git a/Crawler/Animation.h b/Crawler/Animation.h index ad84edee..d699e007 100644 --- a/Crawler/Animation.h +++ b/Crawler/Animation.h @@ -15,4 +15,6 @@ enum AnimationState{ WIZARD_IDLE_S,WIZARD_IDLE_E,WIZARD_IDLE_N,WIZARD_IDLE_W, BATTLECRY_EFFECT,SONICSLASH, WARRIOR_SWINGSONICSWORD_S,WARRIOR_SWINGSONICSWORD_E,WARRIOR_SWINGSONICSWORD_N,WARRIOR_SWINGSONICSWORD_W, + WIZARD_IDLE_ATTACK_S,WIZARD_IDLE_ATTACK_E,WIZARD_IDLE_ATTACK_N,WIZARD_IDLE_ATTACK_W, + WIZARD_ATTACK_S,WIZARD_ATTACK_E,WIZARD_ATTACK_N,WIZARD_ATTACK_W, }; \ No newline at end of file diff --git a/Crawler/Bullet.cpp b/Crawler/Bullet.cpp index ed8ed346..20c3633d 100644 --- a/Crawler/Bullet.cpp +++ b/Crawler/Bullet.cpp @@ -22,7 +22,7 @@ void Bullet::Draw(){ if(animated){ game->view.DrawPartialRotatedDecal(pos,GetFrame().GetSourceImage()->Decal(),rotates?atan2(vel.y,vel.x)-PI/2:0,GetFrame().GetSourceRect().size/2,GetFrame().GetSourceRect().pos,GetFrame().GetSourceRect().size,{1,1},col); } else { - game->view.FillCircle(pos,radius,col); - game->view.DrawCircle(pos,radius,WHITE,0xAA); + game->view.DrawDecal(pos,game->GFX_BulletCircle.Decal(),{radius,radius},col); + game->view.DrawDecal(pos,game->GFX_BulletCircleOutline.Decal(),{radius,radius},WHITE); } } \ No newline at end of file diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index e8605536..b4691d9e 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -52,6 +52,8 @@ bool Crawler::OnUserCreate(){ GFX_Battlecry_Effect.Load("assets/battlecry_effect.png"); GFX_Mana.Load("assets/mana.png"); GFX_SonicSlash.Load("assets/sonicslash.png"); + GFX_BulletCircle.Load("assets/circle.png"); + GFX_BulletCircleOutline.Load("assets/circle_outline.png"); //Animations InitializeAnimations(); @@ -88,6 +90,14 @@ bool Crawler::OnUserCreate(){ player.AddAnimation(AnimationState::WIZARD_IDLE_E); player.AddAnimation(AnimationState::WIZARD_IDLE_S); player.AddAnimation(AnimationState::WIZARD_IDLE_W); + player.AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_N); + player.AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_E); + player.AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_S); + player.AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_W); + player.AddAnimation(AnimationState::WIZARD_ATTACK_N); + player.AddAnimation(AnimationState::WIZARD_ATTACK_E); + player.AddAnimation(AnimationState::WIZARD_ATTACK_S); + player.AddAnimation(AnimationState::WIZARD_ATTACK_W); view=TileTransformedView{GetScreenSize(),{1,1}}; player.SetClass(WARRIOR); @@ -252,6 +262,50 @@ void Crawler::InitializeAnimations(){ Animate2D::FrameSequence pl_wizard_idle_n; pl_wizard_idle_n.AddFrame({&GFX_Wizard_Sheet,{vi2d{0,1}*24,{24,24}}}); ANIMATION_DATA[AnimationState::WIZARD_IDLE_N]=pl_wizard_idle_n; + Animate2D::FrameSequence pl_wizard_idle_attack_s; + pl_wizard_idle_attack_s.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,0}*24,{24,24}}}); + ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_S]=pl_wizard_idle_attack_s; + Animate2D::FrameSequence pl_wizard_idle_attack_e; + pl_wizard_idle_attack_e.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,3}*24,{24,24}}}); + ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_E]=pl_wizard_idle_attack_e; + Animate2D::FrameSequence pl_wizard_idle_attack_w; + pl_wizard_idle_attack_w.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,2}*24,{24,24}}}); + ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_W]=pl_wizard_idle_attack_w; + Animate2D::FrameSequence pl_wizard_idle_attack_n; + pl_wizard_idle_attack_n.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,1}*24,{24,24}}}); + ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_N]=pl_wizard_idle_attack_n; + Animate2D::FrameSequence pl_wizard_attack_s(0.2); + for(int i=0;i<3;i++){ + pl_wizard_attack_s.AddFrame({&GFX_Wizard_Sheet,{vi2d{4+i,0}*24,{24,24}}}); + if(i==1){ + pl_wizard_attack_s.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,0}*24,{24,24}}}); + } + } + ANIMATION_DATA[AnimationState::WIZARD_ATTACK_S]=pl_wizard_attack_s; + Animate2D::FrameSequence pl_wizard_attack_e(0.2); + for(int i=0;i<3;i++){ + pl_wizard_attack_e.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,3}*24,{24,24}}}); + if(i==1){ + pl_wizard_attack_e.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,3}*24,{24,24}}}); + } + } + ANIMATION_DATA[AnimationState::WIZARD_ATTACK_E]=pl_wizard_attack_e; + Animate2D::FrameSequence pl_wizard_attack_w(0.2); + for(int i=0;i<3;i++){ + pl_wizard_attack_w.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,2}*24,{24,24}}}); + if(i==1){ + pl_wizard_attack_w.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,2}*24,{24,24}}}); + } + } + ANIMATION_DATA[AnimationState::WIZARD_ATTACK_W]=pl_wizard_attack_w; + Animate2D::FrameSequence pl_wizard_attack_n(0.2); + for(int i=0;i<3;i++){ + pl_wizard_attack_n.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,1}*24,{24,24}}}); + if(i==1){ + pl_wizard_attack_n.AddFrame({&GFX_Wizard_Sheet,{vi2d{4,1}*24,{24,24}}}); + } + } + ANIMATION_DATA[AnimationState::WIZARD_ATTACK_N]=pl_wizard_attack_n; //Load slime animations. for(int slime=0;slime<4;slime++){ @@ -289,28 +343,28 @@ void Crawler::InitializeAnimations(){ } bool Crawler::LeftHeld(){ - return GetKey(LEFT).bHeld|GetKey(A).bHeld; + return GetKey(LEFT).bHeld||GetKey(A).bHeld; } bool Crawler::RightHeld(){ - return GetKey(RIGHT).bHeld|GetKey(D).bHeld; + return GetKey(RIGHT).bHeld||GetKey(D).bHeld; } bool Crawler::UpHeld(){ - return GetKey(UP).bHeld|GetKey(W).bHeld; + return GetKey(UP).bHeld||GetKey(W).bHeld; } bool Crawler::DownHeld(){ - return GetKey(DOWN).bHeld|GetKey(S).bHeld; + return GetKey(DOWN).bHeld||GetKey(S).bHeld; } bool Crawler::LeftReleased(){ - return GetKey(LEFT).bReleased|GetKey(A).bReleased; + return GetKey(LEFT).bReleased||GetKey(A).bReleased; } bool Crawler::RightReleased(){ - return GetKey(RIGHT).bReleased|GetKey(D).bReleased; + return GetKey(RIGHT).bReleased||GetKey(D).bReleased; } bool Crawler::UpReleased(){ - return GetKey(UP).bReleased|GetKey(W).bReleased; + return GetKey(UP).bReleased||GetKey(W).bReleased; } bool Crawler::DownReleased(){ - return GetKey(DOWN).bReleased|GetKey(S).bReleased; + return GetKey(DOWN).bReleased||GetKey(S).bReleased; } void Crawler::HandleUserInput(float fElapsedTime){ diff --git a/Crawler/Crawler.h b/Crawler/Crawler.h index 336c97c9..3d5d550b 100644 --- a/Crawler/Crawler.h +++ b/Crawler/Crawler.h @@ -23,6 +23,9 @@ class Crawler : public olc::PixelGameEngine GFX_Effect_GroundSlam_Back,GFX_Effect_GroundSlam_Front, GFX_Heart,GFX_BLOCK_BUBBLE,GFX_Ranger_Sheet,GFX_Wizard_Sheet, GFX_Battlecry_Effect,GFX_Mana,GFX_SonicSlash; +public: + Renderable GFX_BulletCircle,GFX_BulletCircleOutline; +private: std::vectorforegroundEffects,backgroundEffects; std::mapMAP_DATA; std::mapMAP_TILESETS; diff --git a/Crawler/Monster.cpp b/Crawler/Monster.cpp index 60ea8199..bdcc4aed 100644 --- a/Crawler/Monster.cpp +++ b/Crawler/Monster.cpp @@ -111,33 +111,39 @@ void Monster::PerformShootAnimation(){ }break; } } -void Monster::SetX(float x){ +bool Monster::SetX(float x){ vf2d newPos={x,pos.y}; vi2d tilePos=vi2d(newPos/24)*24; geom2d::rectcollisionRect=game->GetTileCollision(game->GetCurrentLevel(),newPos); if(collisionRect.pos==vi2d{0,0}&&collisionRect.size==vi2d{1,1}){ pos.x=std::clamp(x,12.f*GetSizeMult(),float(game->WORLD_SIZE.x*24-12*GetSizeMult())); + return true; } else { geom2d::rectcollision={collisionRect.pos,collisionRect.size}; collision.pos+=tilePos; if(!geom2d::overlaps(newPos,collision)){ pos.x=std::clamp(x,12.f*GetSizeMult(),float(game->WORLD_SIZE.x*24-12*GetSizeMult())); + return true; } } + return false; } -void Monster::SetY(float y){ +bool Monster::SetY(float y){ vf2d newPos={pos.x,y}; vi2d tilePos=vi2d(newPos/24)*24; geom2d::rectcollisionRect=game->GetTileCollision(game->GetCurrentLevel(),newPos); if(collisionRect.pos==vi2d{0,0}&&collisionRect.size==vi2d{1,1}){ pos.y=std::clamp(y,12.f*GetSizeMult(),float(game->WORLD_SIZE.y*24-12*GetSizeMult())); + return true; } else { geom2d::rectcollision={collisionRect.pos,collisionRect.size}; collision.pos+=tilePos; if(!geom2d::overlaps(newPos,collision)){ pos.y=std::clamp(y,12.f*GetSizeMult(),float(game->WORLD_SIZE.y*24-12*GetSizeMult())); + return true; } } + return false; } bool Monster::Update(float fElapsedTime){ if(IsAlive()){ @@ -208,25 +214,11 @@ bool Monster::Update(float fElapsedTime){ targetAcquireTimer=1; if(line.length()<24*6){ target=line.upoint(-1.2); - if(pos.x-12*size>1&&pos.x+12*sizeGetWorldSize().x*24-1&& - pos.y-12*size>1&&pos.y+12*sizeGetWorldSize().y*24-1){ + geom2d::line moveTowardsLine=geom2d::line(pos,target); + if(canMove&&abs(moveTowardsLine.vector().norm().x)>=0.5){ state=MOVE_AWAY; - } else - if(pos.x-12*size<=1||pos.x+12*size>=game->GetWorldSize().x*24-1){ - geom2d::line moveTowardsLine=geom2d::line(pos,target); - if(abs(moveTowardsLine.vector().norm().y)>=0.5){ - state=MOVE_AWAY; - } else { - state=NORMAL; - } - } else - if(pos.y-12*size<=1||pos.y+12*size>=game->GetWorldSize().y*24-1){ - geom2d::line moveTowardsLine=geom2d::line(pos,target); - if(abs(moveTowardsLine.vector().norm().x)>=0.5){ - state=MOVE_AWAY; - } else { - state=NORMAL; - } + } else { + state=NORMAL; } } else if(line.length()>24*7){ @@ -236,11 +228,12 @@ bool Monster::Update(float fElapsedTime){ state=NORMAL; } } + canMove=true; geom2d::line moveTowardsLine=geom2d::line(pos,target); switch(state){ case MOVE_TOWARDS:{ if(moveTowardsLine.length()>1){ - SetPosition(pos+moveTowardsLine.vector().norm()*100*fElapsedTime*GetMoveSpdMult()); + canMove=SetPosition(pos+moveTowardsLine.vector().norm()*100*fElapsedTime*GetMoveSpdMult()); } if(line.length()<=24*7){ state=NORMAL; @@ -254,7 +247,7 @@ bool Monster::Update(float fElapsedTime){ }break; case MOVE_AWAY:{ if(moveTowardsLine.length()>1){ - SetPosition(pos+moveTowardsLine.vector().norm()*100*fElapsedTime*GetMoveSpdMult()); + canMove=SetPosition(pos+moveTowardsLine.vector().norm()*100*fElapsedTime*GetMoveSpdMult()); } if(line.length()>=24*6){ state=NORMAL; @@ -329,9 +322,8 @@ void Monster::Collision(){ void Monster::SetVelocity(vf2d vel){ this->vel=vel; } -void Monster::SetPosition(vf2d pos){ - SetX(pos.x); - SetY(pos.y); +bool Monster::SetPosition(vf2d pos){ + return SetX(pos.x)|SetY(pos.y); } AnimationState Monster::GetDeathAnimationName(){ switch(type){ diff --git a/Crawler/Monster.h b/Crawler/Monster.h index c32fb786..d3f2094b 100644 --- a/Crawler/Monster.h +++ b/Crawler/Monster.h @@ -72,6 +72,7 @@ struct Monster{ std::vectorbuffList; AnimationState GetDeathAnimationName(); bool hasHitPlayer=false; + bool canMove=true; //Set to false when stuck due to collisions. public: Monster(); Monster(vf2d pos,MonsterData data); @@ -93,9 +94,12 @@ struct Monster{ void Collision(Monster&p); void Collision(); void SetVelocity(vf2d vel); - void SetPosition(vf2d pos); - void SetX(float x); - void SetY(float y); + //Returns false if the monster could not be moved to the requested location due to collision. + bool SetPosition(vf2d pos); + //Returns false if the monster could not be moved to the requested location due to collision. + bool SetX(float x); + //Returns false if the monster could not be moved to the requested location due to collision. + bool SetY(float y); void PerformJumpAnimation(); void PerformShootAnimation(); diff --git a/Crawler/Player.cpp b/Crawler/Player.cpp index 8d77c9a4..fc4d04c6 100644 --- a/Crawler/Player.cpp +++ b/Crawler/Player.cpp @@ -291,6 +291,8 @@ void Player::Update(float fElapsedTime){ case BARD: { }break; case WIZARD: { + attack_cooldown_timer=MAGIC_ATTACK_COOLDOWN; + //PLAYER_BULLET_LIST.push_back(Bullet(); }break; case WITCH: { }break; diff --git a/Crawler/Player.h b/Crawler/Player.h index 416f7d3b..3df6452f 100644 --- a/Crawler/Player.h +++ b/Crawler/Player.h @@ -23,6 +23,7 @@ struct Player{ float attack_range=1.5f; Ability rightClickAbility,ability1,ability2,ability3; const float ATTACK_COOLDOWN=0.35f; + const float MAGIC_ATTACK_COOLDOWN=0.85f; float attack_cooldown_timer=0; float spin_attack_timer=0; float spin_spd=0; diff --git a/Crawler/Version.h b/Crawler/Version.h index fcee0b03..6bfe2dff 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 295 +#define VERSION_BUILD 301 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/assets/Campaigns/1_1_test.tmx b/Crawler/assets/Campaigns/1_1_test.tmx index 0b1c7a2e..7f9e699a 100644 --- a/Crawler/assets/Campaigns/1_1_test.tmx +++ b/Crawler/assets/Campaigns/1_1_test.tmx @@ -492,16 +492,16 @@ - + - + - + diff --git a/Crawler/assets/circle.png b/Crawler/assets/circle.png index 96197e76a1b69ff3929a94d25532df6ca2a269b0..6d9ee923d8117ac7f4f6100e00d6f6f81e977053 100644 GIT binary patch delta 516 zcmV+f0{i`6o&=C1e*uJPLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~N#wIUS}I}~xq zP@OD@ia1IYi(sL&6nNgNw7S4z7YA_yOYT;-u&zCH^ld zw21NGxF7HCJ?`ECLZiY|vugrSHOolFV`4V9Dh6KBgD?UZe?&xLrk+SIX5cx#?&0I> zU6f~epZjz4D|wRvK9P8i>4rtTK|Hf*>74h8L#!kz#OK8023?T&k?XR{Z=8z`3p_Jq zWK#3QA!4!E!Ey()lA#h$6Gs$PqkJLjvch?bvs$UK);;+PgL!Qw&2^e1h+_!}Bq2gZ z4P{hdAxf)8e~O6|?Z-U)!;U{mE}2|qFmf!Q3Kf#$2mgcL-I|4|NjE7N1G-;q`(qRc z>;lcYZGRuzcJl=AKLb}<+h1(}v!A5b+gjuZ7}y3buG^Zt2VCv|;U`@(BuDbo6bc34 z{fxdT2MpZ;eQR!St$mz602%6P`35*R1jdS#z3%bue%{XB{yo#`?+0?Va;Mm~4H5tV z00v@9M??To0H6TwV*1Y;00009a7bBm000XU000XU0RWnu7ytkO2XskIMF-~w7zZ*0 zGAfOy0000RNklJQU;+U7M+^3On^^$>0000_CT6RrRN diff --git a/Crawler/assets/circle_outline.png b/Crawler/assets/circle_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..601d4f3e877b34906670545168a481eb4dea3135 GIT binary patch literal 537 zcmV+!0_OdRP)EX>4Tx04R}tkv&MmKpe$iQ?()$5jzxd$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+(StAo7(_&3rk+SIX5cx#?&0I>U6f~epZjz4D|wRvK9P8i>4rtTK|Hf* z>74h8L#!kz#OK8023?T&k?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PgL!Qw&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^ncx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2{A*aj}H+nT%wT;$010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=LQ%DG7`rAIQ9Sl02WC^K~xCWV_;xlVEF(4|9=K# b28I9tHvSLs`6O}V00000NkvXXu0mjff3n?f literal 0 HcmV?d00001 diff --git a/Crawler/assets/nico-wizard.png b/Crawler/assets/nico-wizard.png index 31b1d8d1d800d8706f2052485c354a3dd95be9af..2df8fbe6a8842773f04804f761cbe3b04dca2fc2 100644 GIT binary patch delta 9975 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 ofxiT9C delta 9692 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
kzbiXu7`-t_l!yccuE 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