From 4b98518fcfa54ff55ea696374f30b3f1f6e9d863 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 17 Jun 2023 19:34:16 -0500 Subject: [PATCH] Added Warrior swing sword animation --- Crawler/Animation.h | 1 + Crawler/Crawler.cpp | 132 +++++++++++++++++++++++--------- Crawler/Player.cpp | 28 +++++++ Crawler/Player.h | 25 +++--- Crawler/State.h | 1 + Crawler/assets/nico-warrior.png | Bin 10869 -> 13247 bytes Crawler/assets/nico-warrior.xcf | Bin 20395 -> 18350 bytes 7 files changed, 141 insertions(+), 46 deletions(-) diff --git a/Crawler/Animation.h b/Crawler/Animation.h index 9630d980..9fa53565 100644 --- a/Crawler/Animation.h +++ b/Crawler/Animation.h @@ -8,4 +8,5 @@ enum AnimationState{ RED_SLIME_IDLE,RED_SLIME_ROLL,RED_SLIME_JUMP,RED_SLIME_SPIT,RED_SLIME_DIE, YELLOW_SLIME_IDLE,YELLOW_SLIME_ROLL,YELLOW_SLIME_JUMP,YELLOW_SLIME_SPIT,YELLOW_SLIME_DIE, GROUND_SLAM_ATTACK_BACK,GROUND_SLAM_ATTACK_FRONT, + SWINGSWORD_S,SWINGSWORD_E,SWINGSWORD_N,SWINGSWORD_W, }; \ No newline at end of file diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index 06eec310..c686bde6 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -47,6 +47,10 @@ bool Crawler::OnUserCreate(){ player.AddAnimation(AnimationState::IDLE_E); player.AddAnimation(AnimationState::IDLE_S); player.AddAnimation(AnimationState::IDLE_W); + player.AddAnimation(AnimationState::SWINGSWORD_E); + player.AddAnimation(AnimationState::SWINGSWORD_S); + player.AddAnimation(AnimationState::SWINGSWORD_N); + player.AddAnimation(AnimationState::SWINGSWORD_W); view=TileTransformedView{GetScreenSize(),{1,1}}; player.SetPos({4*24,4*24}); @@ -148,6 +152,23 @@ void Crawler::InitializeAnimations(){ Animate2D::FrameSequence pl_idle_n; pl_idle_n.AddFrame({&GFX_Pl_Sheet,{vi2d{0,1}*24,{24,24}}}); ANIMATION_DATA[AnimationState::IDLE_N]=pl_idle_n; + Animate2D::FrameSequence pl_swing_s(0.05),pl_swing_n(0.05),pl_swing_e(0.05),pl_swing_w(0.05); + for (int i=0;i<4;i++){ + pl_swing_s.AddFrame({&GFX_Pl_Sheet,{vi2d{4+i,0}*24,{24,24}}}); + } + for (int i=0;i<4;i++){ + pl_swing_n.AddFrame({&GFX_Pl_Sheet,{vi2d{4+i,1}*24,{24,24}}}); + } + for (int i=0;i<4;i++){ + pl_swing_w.AddFrame({&GFX_Pl_Sheet,{vi2d{4+i,2}*24,{24,24}}}); + } + for (int i=0;i<4;i++){ + pl_swing_e.AddFrame({&GFX_Pl_Sheet,{vi2d{4+i,3}*24,{24,24}}}); + } + ANIMATION_DATA[AnimationState::SWINGSWORD_N]=pl_swing_n; + ANIMATION_DATA[AnimationState::SWINGSWORD_E]=pl_swing_e; + ANIMATION_DATA[AnimationState::SWINGSWORD_S]=pl_swing_s; + ANIMATION_DATA[AnimationState::SWINGSWORD_W]=pl_swing_w; //Load slime animations. for(int slime=0;slime<4;slime++){ for(int state=0;state<5;state++){ @@ -211,7 +232,9 @@ void Crawler::HandleUserInput(float fElapsedTime){ player.SetX(WORLD_SIZE.x*24-12); } player.SetFacingDirection(RIGHT); - player.UpdateAnimation(AnimationState::WALK_E); + if(player.GetState()==State::NORMAL){ + player.UpdateAnimation(AnimationState::WALK_E); + } setIdleAnimation=false; } if(LeftHeld()){ @@ -222,7 +245,9 @@ void Crawler::HandleUserInput(float fElapsedTime){ } if(setIdleAnimation){ player.SetFacingDirection(LEFT); - player.UpdateAnimation(AnimationState::WALK_W); + if(player.GetState()==State::NORMAL){ + player.UpdateAnimation(AnimationState::WALK_W); + } } setIdleAnimation=false; } @@ -234,7 +259,9 @@ void Crawler::HandleUserInput(float fElapsedTime){ } if(setIdleAnimation){ player.SetFacingDirection(UP); - player.UpdateAnimation(AnimationState::WALK_N); + if(player.GetState()==State::NORMAL){ + player.UpdateAnimation(AnimationState::WALK_N); + } } setIdleAnimation=false; } @@ -246,57 +273,90 @@ void Crawler::HandleUserInput(float fElapsedTime){ } if(setIdleAnimation){ player.SetFacingDirection(DOWN); - player.UpdateAnimation(AnimationState::WALK_S); + if(player.GetState()==State::NORMAL){ + player.UpdateAnimation(AnimationState::WALK_S); + } } setIdleAnimation=false; } } if(UpReleased()){ player.SetLastReleasedMovementKey(UP); - if(RightHeld()){ - player.UpdateAnimation(AnimationState::WALK_E); - } else - if(DownHeld()){ - player.UpdateAnimation(AnimationState::WALK_S); - } else - if(LeftHeld()){ - player.UpdateAnimation(AnimationState::WALK_W); + if(player.GetState()==State::NORMAL){ + if(RightHeld()){ + player.UpdateAnimation(AnimationState::WALK_E); + } else + if(DownHeld()){ + player.UpdateAnimation(AnimationState::WALK_S); + } else + if(LeftHeld()){ + player.UpdateAnimation(AnimationState::WALK_W); + } } } if(RightReleased()){ player.SetLastReleasedMovementKey(RIGHT); - if(UpHeld()){ - player.UpdateAnimation(AnimationState::WALK_N); - } else - if(DownHeld()){ - player.UpdateAnimation(AnimationState::WALK_S); - } else - if(LeftHeld()){ - player.UpdateAnimation(AnimationState::WALK_W); + if(player.GetState()==State::NORMAL){ + if(UpHeld()){ + player.UpdateAnimation(AnimationState::WALK_N); + } else + if(DownHeld()){ + player.UpdateAnimation(AnimationState::WALK_S); + } else + if(LeftHeld()){ + player.UpdateAnimation(AnimationState::WALK_W); + } } } if(LeftReleased()){ player.SetLastReleasedMovementKey(LEFT); - if(RightHeld()){ - player.UpdateAnimation(AnimationState::WALK_E); - } else - if(DownHeld()){ - player.UpdateAnimation(AnimationState::WALK_S); - } else - if(UpHeld()){ - player.UpdateAnimation(AnimationState::WALK_N); + if(player.GetState()==State::NORMAL){ + if(RightHeld()){ + player.UpdateAnimation(AnimationState::WALK_E); + } else + if(DownHeld()){ + player.UpdateAnimation(AnimationState::WALK_S); + } else + if(UpHeld()){ + player.UpdateAnimation(AnimationState::WALK_N); + } } } if(DownReleased()){ player.SetLastReleasedMovementKey(DOWN); - if(RightHeld()){ - player.UpdateAnimation(AnimationState::WALK_E); - } else - if(UpHeld()){ - player.UpdateAnimation(AnimationState::WALK_N); - } else - if(LeftHeld()){ - player.UpdateAnimation(AnimationState::WALK_W); + if(player.GetState()==State::NORMAL){ + if(RightHeld()){ + player.UpdateAnimation(AnimationState::WALK_E); + } else + if(UpHeld()){ + player.UpdateAnimation(AnimationState::WALK_N); + } else + if(LeftHeld()){ + player.UpdateAnimation(AnimationState::WALK_W); + } + } + } + + if(player.GetState()==State::SWING_SWORD){ + setIdleAnimation=false; + switch(player.GetFacingDirection()){ + case UP:{ + player.UpdateAnimation(AnimationState::SWINGSWORD_N); + }break; + case DOWN:{ + player.UpdateAnimation(AnimationState::SWINGSWORD_S); + }break; + case LEFT:{ + player.UpdateAnimation(AnimationState::SWINGSWORD_W); + }break; + case RIGHT:{ + player.UpdateAnimation(AnimationState::SWINGSWORD_E); + }break; + } + player.SetSwordSwingTimer(player.GetSwordSwingTimer()-fElapsedTime); + if(player.GetSwordSwingTimer()<=0){ + player.SetSwordSwingTimer(0); + player.SetState(State::NORMAL); } } diff --git a/Crawler/Player.cpp b/Crawler/Player.cpp index 1c183191..3c127680 100644 --- a/Crawler/Player.cpp +++ b/Crawler/Player.cpp @@ -176,10 +176,38 @@ void Player::Update(float fElapsedTime){ } if(closest!=nullptr&&closest->Hurt(atk)){ attack_cooldown_timer=ATTACK_COOLDOWN; + swordSwingTimer=0.2; + SetState(State::SWING_SWORD); + switch(facingDirection){ + case DOWN:{ + UpdateAnimation(AnimationState::SWINGSWORD_S); + }break; + case RIGHT:{ + UpdateAnimation(AnimationState::SWINGSWORD_E); + }break; + case LEFT:{ + UpdateAnimation(AnimationState::SWINGSWORD_W); + }break; + case UP:{ + UpdateAnimation(AnimationState::SWINGSWORD_N); + }break; + } } } } +float Player::GetSwordSwingTimer(){ + return swordSwingTimer; +} + +void Player::SetSwordSwingTimer(float val){ + swordSwingTimer=val; +} + +void Player::SetState(State newState){ + state=newState; +} + vf2d Player::GetVelocity(){ return vel; } diff --git a/Crawler/Player.h b/Crawler/Player.h index 7fd04110..8b63385e 100644 --- a/Crawler/Player.h +++ b/Crawler/Player.h @@ -5,6 +5,7 @@ #include "State.h" struct Player{ + friend class Crawler; private: int hp=100,maxhp=hp; int atk=10; @@ -22,20 +23,29 @@ private: float spin_angle=0; float lastAnimationFlip=0; float groundSlamCooldown=0; + float swordSwingTimer=0; State state=State::NORMAL; Animate2D::Animationanimation; Animate2D::AnimationState internal_animState; Key lastReleasedMovementKey; Key facingDirection; + void AddAnimation(AnimationState state); + void Update(float fElapsedTime); + void SetSwordSwingTimer(float val); + void SetState(State newState); + void SetFacingDirection(Key direction); + void SetLastReleasedMovementKey(Key k); + void Spin(float duration,float spinSpd); + void SetX(float x); + void SetY(float y); + void SetZ(float z); + void SetPos(vf2d pos); +protected: public: Player(); Player(vf2d pos); const static float GROUND_SLAM_SPIN_TIME; const static float GROUND_SLAM_COOLDOWN; - void SetX(float x); - void SetY(float y); - void SetZ(float z); - void SetPos(vf2d pos); vf2d&GetPos(); float GetX(); float GetY(); @@ -48,19 +58,14 @@ public: float GetAttackRangeMult(); float GetSpinAngle(); State GetState(); - void SetFacingDirection(Key direction); Key GetFacingDirection(); vf2d GetVelocity(); void Hurt(int damage); - - void Spin(float duration,float spinSpd); - void Update(float fElapsedTime); - void AddAnimation(AnimationState state); void UpdateAnimation(AnimationState animState); Animate2D::Frame GetFrame(); - void SetLastReleasedMovementKey(Key k); Key GetLastReleasedMovementKey(); + float GetSwordSwingTimer(); float GetGroundSlamCooldown(); diff --git a/Crawler/State.h b/Crawler/State.h index aacef76c..9e14776b 100644 --- a/Crawler/State.h +++ b/Crawler/State.h @@ -2,6 +2,7 @@ enum State{ NORMAL, + SWING_SWORD, SPIN, MOVE_TOWARDS, MOVE_AWAY, diff --git a/Crawler/assets/nico-warrior.png b/Crawler/assets/nico-warrior.png index 9b84f38aa232bbd22c85c50d87e017f5cd3aadaa..1d80dd0282c3b2523e75ac86c3e850df56c5951e 100644 GIT binary patch delta 8916 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 diff --git a/Crawler/assets/nico-warrior.xcf b/Crawler/assets/nico-warrior.xcf index 1ce35b5b5a521869c8789c3127dd5a3e2d124818..65c08b9a12bc6a19bc527126f9ed000bf457092b 100644 GIT binary patch delta 4825 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