using ColdMint.scripts.character;
using ColdMint.scripts.map.events;
using ColdMint.scripts.utils;
using Godot;
namespace ColdMint.scripts.map;
///
/// Ai character generation point
/// Ai角色生成点
///
public partial class AiCharacterSpawn : Marker2D
{
private PackedScene? _packedScene;
public override void _Ready()
{
base._Ready();
var resPath = GetMeta("ResPath", Name).AsString();
if (!string.IsNullOrEmpty(resPath))
{
_packedScene = GD.Load(resPath);
}
EventManager.AiCharacterGenerateEvent += OnAiCharacterGenerateEvent;
}
///
/// When an event is triggered
/// 当触发事件时
///
///
public void OnAiCharacterGenerateEvent(AiCharacterGenerateEvent aiCharacterGenerateEvent)
{
if (GameSceneNodeHolder.AiCharacterContainer == null)
{
return;
}
if (_packedScene == null)
{
return;
}
var aiCharacter = NodeUtils.InstantiatePackedScene(_packedScene);
if (aiCharacter == null)
{
return;
}
NodeUtils.CallDeferredAddChild(NodeUtils.FindContainerNode(aiCharacter, this), aiCharacter);
aiCharacter.Position = GlobalPosition;
}
public override void _ExitTree()
{
EventManager.AiCharacterGenerateEvent -= OnAiCharacterGenerateEvent;
}
}