Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / bullet / summons / Summons.cs

using AiState;
using Godot;

/// <summary>
/// boss用于召唤小怪的投射物
/// </summary>
[Tool]
public partial class Summons : ActivityObject
{
    private ActivityObject _target;
    
    public void InitTarget(ActivityObject target)
    {
        _target = target;
    }
    
    protected override void OnFirstFallToGround()
    {
        var id = Utils.Random.RandomChoose(Ids.Id_enemy0001);
        var enemy = Create<Enemy>(id);
        var randomWeapon = World.RandomPool.GetRandomWeapon();
        enemy.PickUpWeapon(Create<Weapon>(randomWeapon));

        if (_target != null)
        {
            var stateBase = (AiAstonishedState)enemy.StateController.GetState(AIStateEnum.AiAstonished);
            stateBase.IsEntred = true;
            enemy.LookTarget = _target;
        }
        enemy.PutDown(Position, RoomLayerEnum.YSortLayer);
        
        //出生特效
        var effect = ObjectManager.GetPoolItem<IEffect>(ResourcePath.prefab_effect_common_Effect1_tscn);
        var node = (Node2D)effect;
        node.Position = Position + new Vector2(0, -5);
        node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
        effect.PlayEffect();
        
        
        Destroy();
    }
}