started adding enemy factory
This commit is contained in:
66
Assets/Darkmatter/Code/Domain/Enemy/ChaseState.cs
Normal file
66
Assets/Darkmatter/Code/Domain/Enemy/ChaseState.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using Darkmatter.Core;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Darkmatter.Domain
|
||||
{
|
||||
public class ChaseState : State<EnemyStateMachine>
|
||||
{
|
||||
public ChaseState(EnemyStateMachine runner) : base(runner) { }
|
||||
private EnemyConfigSO enemyConfig => runner.enemyConfig;
|
||||
private IEnemyAnimController enemyAnimController => runner.enemyAnimController;
|
||||
private IEnemyPawn enemyPawn => runner.enemyPawn;
|
||||
|
||||
|
||||
public override void Enter()
|
||||
{
|
||||
base.Enter();
|
||||
Debug.Log("Entered Chase State");
|
||||
runner.SetSpeed(enemyConfig.chaseSpeed);
|
||||
enemyAnimController.PlayeChaseAnim(true);
|
||||
enemyPawn.OnHealthDecreased += HandleHealth;
|
||||
}
|
||||
|
||||
private void HandleHealth(float health)
|
||||
{
|
||||
if (health <= 0)
|
||||
{
|
||||
runner.Die();
|
||||
}
|
||||
}
|
||||
public override void Update()
|
||||
{
|
||||
if (enemyPawn.isDead) return;
|
||||
base.Update();
|
||||
HandleChase();
|
||||
CheckForStateBreak();
|
||||
Debug.Log("Updated Chase State");
|
||||
}
|
||||
|
||||
private void CheckForStateBreak()
|
||||
{
|
||||
if (!runner.PlayerInChasingRange())
|
||||
{
|
||||
runner.ChangeState(new PatrolState(runner));
|
||||
}
|
||||
else if(runner.PlayerInAttackRange())
|
||||
{
|
||||
runner.ChangeState(new AttackState(runner));
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleChase()
|
||||
{
|
||||
enemyPawn.SetDestination(enemyPawn.PlayerTarget.position);
|
||||
}
|
||||
|
||||
public override void Exit()
|
||||
{
|
||||
base.Exit();
|
||||
Debug.Log("Exiting Chase State");
|
||||
enemyAnimController.PlayeChaseAnim(false);
|
||||
enemyPawn.OnHealthDecreased -= HandleHealth;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user