Exemple #1
0
 public bool FiltersAreVerified(BattleTargetingUnitBehaviorWeight unitBehaviorWeight, BattleSimulationUnit unit, BattleSimulationTarget potentialTarget)
 {
     if (unitBehaviorWeight == null)
     {
         throw new ArgumentNullException("unitBehaviorWeight");
     }
     return(unitBehaviorWeight.Filters == null || unitBehaviorWeight.Filters.Count == 0 || unitBehaviorWeight.Filters.All((StaticString filter) => this.GetFilterValueByName(filter, unit, potentialTarget)));
 }
Exemple #2
0
    protected BattleSimulationTarget ComputeTargetingWithWeight(BattleSimulationUnit unit, BattleSimulationTarget[] battleSimulationTargets)
    {
        if (unit == null)
        {
            throw new ArgumentNullException("unit");
        }
        List <BattleTargetingUnitBehaviorWeight> battleTargetingUnitBehaviorWeights = unit.BattleTargetingUnitBehaviorWeights;

        if (battleTargetingUnitBehaviorWeights == null)
        {
            return(null);
        }
        bool flag = unit.GetPropertyValue(SimulationProperties.BattleRange) > 1.1f;
        BattleSimulationTarget result = null;
        float num = float.NegativeInfinity;

        for (int i = 0; i < battleTargetingUnitBehaviorWeights.Count; i++)
        {
            BattleTargetingUnitBehaviorWeight battleTargetingUnitBehaviorWeight = battleTargetingUnitBehaviorWeights[i];
            foreach (BattleSimulationTarget battleSimulationTarget in battleSimulationTargets)
            {
                if ((battleSimulationTarget.Unit == null || !battleSimulationTarget.Unit.IsDead) && this.FiltersAreVerified(battleTargetingUnitBehaviorWeight, unit, battleSimulationTarget))
                {
                    float num2 = 0f;
                    if (battleTargetingUnitBehaviorWeight.Weights != null && battleTargetingUnitBehaviorWeight.Weights.Length != 0)
                    {
                        for (int k = 0; k < battleTargetingUnitBehaviorWeight.Weights.Length; k++)
                        {
                            BattleTargetingUnitBehaviorWeight.Weight weight = battleTargetingUnitBehaviorWeight.Weights[k];
                            if (weight.ValueAsFloat != 0f)
                            {
                                float paramValueByName = this.GetParamValueByName(weight.Name, unit, battleSimulationTarget);
                                Amplitude.Unity.Framework.AnimationCurve animationCurve;
                                this.targettingAnimationCurveDatabase.TryGetValue(weight.NormalizationCurveName, out animationCurve);
                                float num3;
                                if (animationCurve != null)
                                {
                                    num3 = animationCurve.Evaluate(paramValueByName) * weight.ValueAsFloat;
                                }
                                else
                                {
                                    num3 = paramValueByName * weight.ValueAsFloat;
                                }
                                num2 += num3;
                            }
                        }
                        num2 /= (float)battleTargetingUnitBehaviorWeight.Weights.Length;
                    }
                    if (flag && float.IsNegativeInfinity(num2) && battleSimulationTarget.Unit != null)
                    {
                        num2 = -1E+07f;
                    }
                    if (num2 > num)
                    {
                        result = battleSimulationTarget;
                        num    = num2;
                    }
                }
            }
        }
        return(result);
    }