feat: added Player Slash state
This commit is contained in:
parent
0616d1d3a1
commit
f1cf1110fc
|
@ -87,6 +87,7 @@ Player* MakePlayer() {
|
||||||
.jab_a = NULL,
|
.jab_a = NULL,
|
||||||
.jab_b = NULL,
|
.jab_b = NULL,
|
||||||
.kick_a = NULL,
|
.kick_a = NULL,
|
||||||
|
.slash = NULL,
|
||||||
.air_heavy = NULL,
|
.air_heavy = NULL,
|
||||||
.slide = 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_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->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->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->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);
|
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_a;
|
||||||
AnimationSprite* jab_b;
|
AnimationSprite* jab_b;
|
||||||
AnimationSprite* kick_a;
|
AnimationSprite* kick_a;
|
||||||
|
AnimationSprite* slash;
|
||||||
AnimationSprite* air_heavy;
|
AnimationSprite* air_heavy;
|
||||||
AnimationSprite* slide;
|
AnimationSprite* slide;
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "Damagable.h"
|
#include "Damagable.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "animation_sprite.h"
|
||||||
|
|
||||||
// flip the facing direction of the player based on input
|
// flip the facing direction of the player based on input
|
||||||
// does not do movement
|
// does not do movement
|
||||||
|
@ -31,7 +32,7 @@ const State* PlayerTryStartNewChain(Player* self, const State* fallback) {
|
||||||
else if(PlayerInputIsQuarterCircleForward(self))
|
else if(PlayerInputIsQuarterCircleForward(self))
|
||||||
return PlayerSlide();
|
return PlayerSlide();
|
||||||
else
|
else
|
||||||
return PlayerKickA();
|
return PlayerSlash();
|
||||||
}
|
}
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +111,7 @@ const State* PlayerJabA_Update(Player* self, float deltaTime) {
|
||||||
}
|
}
|
||||||
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
||||||
return PlayerWalk();
|
return PlayerWalk();
|
||||||
if(ntime >= 2.0f)
|
if(ntime >= 1.5f)
|
||||||
return PlayerIdle();
|
return PlayerIdle();
|
||||||
return PlayerJabA();
|
return PlayerJabA();
|
||||||
}
|
}
|
||||||
|
@ -161,11 +162,36 @@ const State* PlayerKickA_Update(Player* self, float deltaTime) {
|
||||||
if(frame >= 3 && frame <= 4) {
|
if(frame >= 3 && frame <= 4) {
|
||||||
PlayerHurtbox(self, damage, MakeVector(0.16f, 0.06f), MakeVector(0.33f, -0.4f));
|
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)
|
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
||||||
return PlayerWalk();
|
return PlayerWalk();
|
||||||
if(ntime >= 1.f)
|
if(ntime >= 1.f)
|
||||||
return PlayerIdle();
|
return PlayerIdle();
|
||||||
return PlayerKickA();
|
return PlayerSlash();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerSlide_Enter(Player* self) {
|
void PlayerSlide_Enter(Player* self) {
|
||||||
|
|
|
@ -54,6 +54,15 @@ DefineState(PlayerKickA, Player,
|
||||||
PlayerAnimationExit
|
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 void PlayerSlide_Enter(Player* self);
|
||||||
extern const State* PlayerSlide_Update(Player* self, float deltaTime);
|
extern const State* PlayerSlide_Update(Player* self, float deltaTime);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue