/* * @Author: 白哉 * @Description: * @Date: 2025年06月06日 星期五 19:06:16 * @Modify: */ using System; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] public class AIParamChooseMinLevelHeroAction : BaseActionTask { protected override string desc => $"选取最低等级的英雄 Action"; protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam?.PlayerData == null) { EndAction(false); return; } var player = data.value.TargetParam.PlayerData; var giantType = GiantType.None; var minLevel = -1; foreach (var fullType in player.PlayerHeroData.HeroList) { if (fullType.UnitLevel <= minLevel) continue; minLevel = (int)fullType.UnitLevel; giantType = fullType.GiantType; } if (giantType == GiantType.None) { EndAction(false); return; } for (int i = data.value.AIActions.Count - 1; i >= 0; i--) { if (data.value.AIActions[i].ActionLogic.ActionId.GiantType == giantType) continue; data.value.AIActions.RemoveAt(i); } EndAction(data.value.AIActions.Count > 0); } } }