Files
Darklings-FightingGame/Assets/_Project/Scripts/SimulationScripts/StateScripts/StatesScripts/AirStateScripts/AirParentState.cs

97 lines
2.8 KiB
C#
Raw Normal View History

2022-12-26 03:47:56 +02:00
using UnityEngine;
public class AirParentState : State
{
public override void UpdateLogic(PlayerNetwork player)
{
2022-12-31 20:46:52 +02:00
ToDashAirState(player);
2022-12-26 03:47:56 +02:00
ToJumpForwardState(player);
ToJumpState(player);
2023-01-04 17:56:46 +02:00
ToHurtState(player);
2022-12-26 03:47:56 +02:00
}
private void ToJumpState(PlayerNetwork player)
{
if (player.canDoubleJump)
{
if (player.direction.y > 0 && !player.hasJumped)
{
player.enter = false;
player.hasJumped = true;
player.canDoubleJump = false;
player.state = "Jump";
}
else if (player.direction.y <= 0 && player.hasJumped)
{
player.hasJumped = false;
}
}
}
private void ToJumpForwardState(PlayerNetwork player)
{
if (player.canDoubleJump)
{
if (player.direction.y > 0 && player.direction.x != 0 && !player.hasJumped)
{
2022-12-31 20:46:52 +02:00
player.jumpDirection = (int)player.direction.x;
2022-12-26 03:47:56 +02:00
player.enter = false;
player.hasJumped = true;
player.canDoubleJump = false;
player.state = "JumpForward";
}
else if (player.direction.y <= 0 && player.hasJumped)
{
player.hasJumped = false;
}
}
}
2022-12-31 20:46:52 +02:00
private void ToDashAirState(PlayerNetwork player)
2022-12-26 03:47:56 +02:00
{
2022-12-31 20:46:52 +02:00
if (player.dashDirection != 0 && player.canDash)
2022-12-26 03:47:56 +02:00
{
player.enter = false;
2022-12-31 20:46:52 +02:00
player.velocity = DemonicsVector2.Zero;
2022-12-26 03:47:56 +02:00
player.state = "DashAir";
}
}
2022-12-29 19:32:58 +02:00
public override bool ToBlockState(PlayerNetwork player, AttackSO attack)
{
player.enter = false;
player.state = "BlockAir";
return true;
}
2023-01-04 17:56:46 +02:00
public override void ToAttackState(PlayerNetwork player)
{
player.isCrouch = false;
player.isAir = true;
player.canChainAttack = false;
player.enter = false;
player.state = "Attack";
}
public override void ToArcanaState(PlayerNetwork player)
{
if (player.arcana >= PlayerStatsSO.ARCANA_MULTIPLIER)
{
player.isCrouch = false;
player.isAir = true;
player.canChainAttack = false;
player.enter = false;
player.state = "Arcana";
}
}
private void ToHurtState(PlayerNetwork player)
{
if (!player.otherPlayer.canChainAttack && DemonicsCollider.Colliding(player.otherPlayer.hitbox, player.hurtbox))
{
player.enter = false;
player.otherPlayer.canChainAttack = true;
if (player.otherPlayer.attack.isArcana)
{
player.state = "Airborne";
}
else
{
player.state = "HurtAir";
}
}
}
2022-12-26 03:47:56 +02:00
}