Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / role / ai / state / AiNotifyState.cs
using System;

namespace AiState;

/// <summary>
/// 发现目标, 通知其它敌人
/// </summary>
public class AiNotifyState : StateBase<AiRole, AIStateEnum>
{
    private float _timer;
    
    public AiNotifyState() : base(AIStateEnum.AiNotify)
    {
    }

    public override void Enter(AIStateEnum prev, params object[] args)
    {
        if (Master.LookTarget == null)
        {
            ChangeState(AIStateEnum.AiNormal);
            return;
            //throw new Exception("进入 AIAdvancedStateEnum.AiNotify 没有攻击目标!");
        }
        _timer = 1.2f;
        
        if (Master.AnimationPlayer.HasAnimation(AnimatorNames.Notify))
        {
            //通知其它角色
            Master.World.NotifyEnemyTarget(Master, Master.LookTarget);
            Master.AnimationPlayer.Play(AnimatorNames.Notify);
        }
        else
        {
            ChangeState(AIStateEnum.AiTailAfter);
        }
    }

    public override void Process(float delta)
    {
        Master.DoIdle();
        _timer -= delta;
        if (_timer <= 0)
        {
            ChangeState(AIStateEnum.AiTailAfter);
        }
    }
}