feat: added Player Slash state

This commit is contained in:
Sara 2024-01-21 22:12:40 +01:00
parent 0616d1d3a1
commit f1cf1110fc
4 changed files with 41 additions and 3 deletions

View file

@ -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);

View file

@ -50,6 +50,7 @@ typedef struct Player {
AnimationSprite* jab_a;
AnimationSprite* jab_b;
AnimationSprite* kick_a;
AnimationSprite* slash;
AnimationSprite* air_heavy;
AnimationSprite* slide;

View file

@ -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) {

View file

@ -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);