using ColdMint.scripts.character; using ColdMint.scripts.debug; using ColdMint.scripts.map.events; 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) { var node = _packedScene?.Instantiate(); if (node is not AiCharacter aiCharacter) { return; } if (GameSceneNodeHolder.AiCharacterContainer == null) { return; } GameSceneNodeHolder.AiCharacterContainer.AddChild(aiCharacter); aiCharacter.Position = GlobalPosition; } public override void _ExitTree() { EventManager.AiCharacterGenerateEvent -= OnAiCharacterGenerateEvent; } }