feat: implemented air-heavy / adjusted timing of KickA
This commit is contained in:
parent
4265148156
commit
6175e52297
|
@ -15,6 +15,7 @@ void InternalSpriteFlipWithMovement(Player* self) {
|
|||
|
||||
void PlayerAnimationExit(Player* self) {
|
||||
self->animationTriggers = 0;
|
||||
self->attackInput = 0;
|
||||
}
|
||||
|
||||
void PlayerIdleEnter(Player* self) {
|
||||
|
@ -122,12 +123,8 @@ const State* PlayerJabB_Update(Player* self, float deltaTime) {
|
|||
PlayerHurtbox(self, damage, MakeVector(0.1f, 0.06f), MakeVector(0.3f, -0.6f));
|
||||
++self->animationTriggers;
|
||||
}
|
||||
if(ntime > 1.0f) {
|
||||
if(self->attackInput == 1)
|
||||
return PlayerJabA();
|
||||
else if(self->attackInput == 2)
|
||||
return PlayerKickA();
|
||||
}
|
||||
if(ntime > 1.0f && self->attackInput == 1)
|
||||
return PlayerKickA();
|
||||
if(!veqf(self->moveInput, ZeroVector) && ntime > 1.05f)
|
||||
return PlayerWalk();
|
||||
if(ntime >= 2.0f)
|
||||
|
@ -149,7 +146,7 @@ const State* PlayerKickA_Update(Player* self, float deltaTime) {
|
|||
.knockback = 0.15f,
|
||||
};
|
||||
const float ntime = animation_sprite_get_time_normalized(self->currentAnimation);
|
||||
if(ntime > 0.25f && self->animationTriggers == 0) {
|
||||
if(ntime > 0.6f && self->animationTriggers == 0) {
|
||||
PlayerHurtbox(self, damage, MakeVector(0.1f, 0.06f), MakeVector(0.3f, -0.4f));
|
||||
++self->animationTriggers;
|
||||
}
|
||||
|
@ -162,26 +159,47 @@ const State* PlayerKickA_Update(Player* self, float deltaTime) {
|
|||
return PlayerKickA();
|
||||
}
|
||||
|
||||
static
|
||||
const State* PlayerAir_Update(Player* self, float deltaTime) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PlayerJump_Enter(Player* self) {
|
||||
self->currentAnimation = self->jump;
|
||||
self->verticalVelocity = 2.f;
|
||||
if(self->jumpInput) {
|
||||
self->currentAnimation = self->jump;
|
||||
self->verticalVelocity = 2.f;
|
||||
}
|
||||
animation_sprite_play_from(self->currentAnimation, 0.f);
|
||||
}
|
||||
|
||||
const State* PlayerJump_Update(Player* self, float deltaTime) {
|
||||
self->verticalVelocity += .3f * deltaTime;
|
||||
if(self->verticalVelocity > 0.f)
|
||||
return PlayerFall();
|
||||
self->verticalVelocity -= 3.f * deltaTime;
|
||||
if(self->height == 0.f) {
|
||||
self->verticalVelocity = 0.f;
|
||||
return PlayerIdle();
|
||||
}
|
||||
if(self->attackInput == 2)
|
||||
return PlayerAirHeavy();
|
||||
return PlayerJump();
|
||||
}
|
||||
|
||||
void PlayerFall_Enter(Player* self) {
|
||||
self->currentAnimation = self->jump;
|
||||
void PlayerAirHeavy_Enter(Player* self) {
|
||||
self->currentAnimation = self->air_heavy;
|
||||
animation_sprite_play_from(self->currentAnimation, 0.f);
|
||||
}
|
||||
|
||||
const State* PlayerFall_Update(Player* self, float deltaTime) {
|
||||
self->verticalVelocity -= 3.f * deltaTime;
|
||||
if(self->height == 0.f)
|
||||
return PlayerIdle();
|
||||
return PlayerFall();
|
||||
const State* PlayerAirHeavy_Update(Player* self, float deltaTime) {
|
||||
const static DamageEventData damage = {
|
||||
.damageAmount = 6,
|
||||
.knockdown = 1,
|
||||
.stun = 0.5f,
|
||||
.knockback = 0.15f
|
||||
};
|
||||
const float ntime = animation_sprite_get_time_normalized(self->currentAnimation);
|
||||
if(ntime > 0.25f && self->animationTriggers == 0) {
|
||||
PlayerHurtbox(self, damage, MakeVector(0.1f, 0.06f), MakeVector(0.3f, -0.4f));
|
||||
++self->animationTriggers;
|
||||
}
|
||||
const State* result = PlayerJump_Update(self, deltaTime);
|
||||
return result == PlayerJump() ? PlayerAirHeavy() : result;
|
||||
}
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
typedef struct Player Player;
|
||||
|
||||
void PlayerAnimationExit(Player* self);
|
||||
extern void PlayerAnimationExit(Player* self);
|
||||
|
||||
void PlayerIdleEnter(Player* self);
|
||||
const State* PlayerIdleUpdate(Player* self, float deltaTime);
|
||||
extern void PlayerIdleEnter(Player* self);
|
||||
extern const State* PlayerIdleUpdate(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerIdle, Player,
|
||||
PlayerIdleEnter,
|
||||
|
@ -16,8 +16,8 @@ DefineState(PlayerIdle, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerWalk_Enter(Player* self);
|
||||
const State* PlayerWalk_Update(Player* self, float deltaTime);
|
||||
extern void PlayerWalk_Enter(Player* self);
|
||||
extern const State* PlayerWalk_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerWalk, Player,
|
||||
PlayerWalk_Enter,
|
||||
|
@ -25,10 +25,10 @@ DefineState(PlayerWalk, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerAttackEnter(Player* self);
|
||||
extern void PlayerAttackEnter(Player* self);
|
||||
|
||||
void PlayerJabA_Enter(Player* self);
|
||||
const State* PlayerJabA_Update(Player* self, float deltaTime);
|
||||
extern void PlayerJabA_Enter(Player* self);
|
||||
extern const State* PlayerJabA_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerJabA, Player,
|
||||
PlayerJabA_Enter,
|
||||
|
@ -36,8 +36,8 @@ DefineState(PlayerJabA, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerJabB_Enter(Player* self);
|
||||
const State* PlayerJabB_Update(Player* self, float deltaTime);
|
||||
extern void PlayerJabB_Enter(Player* self);
|
||||
extern const State* PlayerJabB_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerJabB, Player,
|
||||
PlayerJabB_Enter,
|
||||
|
@ -45,8 +45,8 @@ DefineState(PlayerJabB, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerKickA_Enter(Player* self);
|
||||
const State* PlayerKickA_Update(Player* self, float deltaTime);
|
||||
extern void PlayerKickA_Enter(Player* self);
|
||||
extern const State* PlayerKickA_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerKickA, Player,
|
||||
PlayerKickA_Enter,
|
||||
|
@ -54,8 +54,8 @@ DefineState(PlayerKickA, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerJump_Enter(Player *self);
|
||||
const State* PlayerJump_Update(Player* self, float deltaTime);
|
||||
extern void PlayerJump_Enter(Player *self);
|
||||
extern const State* PlayerJump_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerJump, Player,
|
||||
PlayerJump_Enter,
|
||||
|
@ -63,12 +63,12 @@ DefineState(PlayerJump, Player,
|
|||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
void PlayerFall_Enter(Player* self);
|
||||
const State* PlayerFall_Update(Player* self, float deltaTime);
|
||||
extern void PlayerAirHeavy_Enter(Player* self);
|
||||
extern const State* PlayerAirHeavy_Update(Player* self, float deltaTime);
|
||||
|
||||
DefineState(PlayerFall, Player,
|
||||
PlayerFall_Enter,
|
||||
PlayerFall_Update,
|
||||
DefineState(PlayerAirHeavy, Player,
|
||||
PlayerAirHeavy_Enter,
|
||||
PlayerAirHeavy_Update,
|
||||
PlayerAnimationExit
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue