Files
MobileShooter/Assets/Darkmatter/Code/Domain/Enemy/AttackState.cs
2025-12-31 17:14:20 -08:00

61 lines
1.6 KiB
C#

using Darkmatter.Core;
using System;
using UnityEngine;
namespace Darkmatter.Domain
{
public class AttackState : State<EnemyStateMachine>
{
public AttackState(EnemyStateMachine runner) : base(runner) { }
private IEnemyAnimController enemyAnimController => runner.enemyAnimController;
private IEnemyPawn enemyPawn => runner.enemyPawn;
public override void Enter()
{
base.Enter();
Debug.Log("Entered Attack State");
Debug.Log("Attacking Player");
enemyAnimController.PlayAttackAnim(true);
enemyPawn.OnHealthDecreased += HandleHealth;
}
private void HandleHealth(float health)
{
if (health <= 0)
{
runner.Die();
}
}
public override void Update()
{
if (enemyPawn.isDead) return;
base.Update();
HandleAttack();
CheckForStateBreak();
}
private void CheckForStateBreak()
{
if(!runner.PlayerInAttackRange())
{
runner.ChangeState(new ChaseState(runner));
}
}
private void HandleAttack()
{
Vector3 dir = (enemyPawn.PlayerTarget.position - enemyPawn.ReturnMyPos()).normalized;
//rotate towards player and handle Attack here
}
public override void Exit()
{
base.Exit();
Debug.Log("Exiting Attack State");
enemyAnimController.PlayAttackAnim(false);
enemyPawn.OnHealthDecreased -= HandleHealth;
}
}
}