/* * @Author: 白哉 * @Description: * @Date: 2025年06月06日 星期五 19:06:16 * @Modify: */ using System; using System.Collections.Generic; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; using RuntimeData; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] public class AIParamCityUnitRatio : BaseActionTask { public bool IsGreater; public float Ratio; protected override string desc { get { if (IsGreater) return string.Format($" 城市人数大于 {Ratio}%"); return string.Format($" 城市人数小于 {Ratio}%"); } } protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.CityData == null) { EndAction(false); return; } var city = data.value.TargetParam.CityData; var ratio = data.value.TargetParam.MapData.GetUnitCount(city.Id) / city.Level; if (IsGreater) EndAction(ratio > Ratio); else EndAction(ratio < Ratio); } } }