Files
MobileShooter/Assets/Darkmatter/Code/Domain/Enemy/EnemyStateMachine.cs
2026-01-01 17:48:58 -08:00

55 lines
1.5 KiB
C#

using Darkmatter.Core;
using System.Threading.Tasks;
using UnityEngine;
using VContainer;
namespace Darkmatter.Domain
{
public class EnemyStateMachine:StateMachine
{
public readonly IEnemyPawn enemyPawn;
public readonly IEnemyAnimController enemyAnimController;
public readonly EnemyConfigSO enemyConfig;
public readonly IAudioService audioService;
public EnemyStateMachine(IEnemyPawn pawn, IEnemyAnimController animController, IAudioService audioService, EnemyConfigSO enemyConfig)
{
enemyPawn = pawn;
enemyAnimController = animController;
this.audioService = audioService;
this.enemyConfig = enemyConfig;
}
public void SetSpeed(float speed)
{
enemyPawn.EnemyAI.speed = speed;
}
public bool PlayerInChasingRange()
{
if(Vector3.Distance(enemyPawn.PlayerTarget.position,enemyPawn.ReturnMyPos()) < enemyConfig.visionRange)
{
return true;
}
return false;
}
public bool PlayerInAttackRange()
{
if(Vector3.Distance(enemyPawn.PlayerTarget.position,enemyPawn.ReturnMyPos())<enemyConfig.attackRange)
{
return true;
}
return false;
}
public void Die()
{
enemyAnimController.PlayDeadAnim();
audioService.PlaySFXAt(AudioId.Zombie_Death,enemyPawn.ReturnMyPos());
enemyPawn.Die();
}
}
}