feat: added Player Slash state
This commit is contained in:
parent
0616d1d3a1
commit
f1cf1110fc
|
@ -87,6 +87,7 @@ Player* MakePlayer() {
|
|||
.jab_a = NULL,
|
||||
.jab_b = NULL,
|
||||
.kick_a = NULL,
|
||||
.slash = NULL,
|
||||
.air_heavy = NULL,
|
||||
.slide = NULL,
|
||||
|
||||
|
@ -121,6 +122,7 @@ Player* MakePlayer() {
|
|||
self->jab_a = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Jab_A.png", IVectorFrom(512)), 10.f, LoopMode_Stop);
|
||||
self->jab_b = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Jab_B.png", IVectorFrom(512)), 10.f, LoopMode_Stop);
|
||||
self->kick_a = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Kick_A.png", IVectorFrom(512)), 12.f, LoopMode_Stop);
|
||||
self->slash = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Slash.png", IVectorFrom(512)), 12.f, LoopMode_Stop);
|
||||
self->air_heavy = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Air_Heavy.png", IVectorFrom(512)), 10.f, LoopMode_Stop);
|
||||
self->slide = animation_sprite_new(self->sprite, spritesheet_load("assets/Player_Slide.png", IVectorFrom(512)), 1.f, LoopMode_Loop);
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ typedef struct Player {
|
|||
AnimationSprite* jab_a;
|
||||
AnimationSprite* jab_b;
|
||||
AnimationSprite* kick_a;
|
||||
AnimationSprite* slash;
|
||||
AnimationSprite* air_heavy;
|
||||
AnimationSprite* slide;
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "Damagable.h"
|
||||
#include "Player.h"
|
||||
#include "animation_sprite.h"
|
||||
|
||||
// flip the facing direction of the player based on input
|
||||
// does not do movement
|
||||
|
@ -31,7 +32,7 @@ const State* PlayerTryStartNewChain(Player* self, const State* fallback) {
|
|||
else if(PlayerInputIsQuarterCircleForward(self))
|
||||
return PlayerSlide();
|
||||
else
|
||||
return PlayerKickA();
|
||||
return PlayerSlash();
|
||||
}
|
||||
return fallback;
|
||||
}
|
||||
|
@ -110,7 +111,7 @@ const State* PlayerJabA_Update(Player* self, float deltaTime) {
|
|||
}
|
||||
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
||||
return PlayerWalk();
|
||||
if(ntime >= 2.0f)
|
||||
if(ntime >= 1.5f)
|
||||
return PlayerIdle();
|
||||
return PlayerJabA();
|
||||
}
|
||||
|
@ -161,11 +162,36 @@ const State* PlayerKickA_Update(Player* self, float deltaTime) {
|
|||
if(frame >= 3 && frame <= 4) {
|
||||
PlayerHurtbox(self, damage, MakeVector(0.16f, 0.06f), MakeVector(0.33f, -0.4f));
|
||||
}
|
||||
if(ntime >= 1.f)
|
||||
return PlayerIdle();
|
||||
return PlayerKickA();
|
||||
}
|
||||
|
||||
void PlayerSlash_Enter(Player* self) {
|
||||
PlayerAttackEnter(self);
|
||||
self->currentAnimation = self->slash;
|
||||
animation_sprite_play_from(self->currentAnimation, 0.f);
|
||||
}
|
||||
|
||||
const State* PlayerSlash_Update(Player* self, float deltaTime) {
|
||||
static const DamageEventData damage = {
|
||||
.damageAmount = 2,
|
||||
.knockdown = 0,
|
||||
.stun = 0.5f,
|
||||
.knockback = 4.f
|
||||
};
|
||||
const float ntime = animation_sprite_get_time_normalized(self->currentAnimation);
|
||||
const size_t frame = sprite_get_tile(self->sprite);
|
||||
if(frame >= 2 && self->animationTriggers == 0) {
|
||||
++self->animationTriggers;
|
||||
PlayerHurtbox(self, damage, MakeVector(0.4f, 0.1f), MakeVector(0.2f, -0.7f));
|
||||
}
|
||||
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
||||
return PlayerWalk();
|
||||
if(ntime >= 1.f)
|
||||
return PlayerIdle();
|
||||
return PlayerKickA();
|
||||
return PlayerSlash();
|
||||
|
||||
}
|
||||
|
||||
void PlayerSlide_Enter(Player* self) {
|
||||
|
|
|
@ -54,6 +54,15 @@ DefineState(PlayerKickA, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
extern void PlayerSlash_Enter(Player* self);
|
||||
extern const State* PlayerSlash_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerSlash, Player,
|
||||
PlayerSlash_Enter,
|
||||
PlayerSlash_Update,
|
||||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
extern void PlayerSlide_Enter(Player* self);
|
||||
extern const State* PlayerSlide_Update(Player* self, float deltaTime);
|
||||
|
||||
|
|
Loading…
Reference in a new issue