private void SetRandomTargetType(BeachBallTarget target)
    {
        int num = UnityEngine.Random.Range(0, definitions.Length);
        TargetDefinition defintion = definitions[num];

        target.SetDefintion(defintion);
    }
示例#2
0
 public void SetAITargetDefinition(TargetAdder adder, TargetEvaluator eval, params TargetFilter[] filters)
 {
     AITargetHandlerDefintion = new TargetDefinition(adder, filters);
     if (eval != null)
     {
         CustomTargetEvaluator = eval;
     }
 }
示例#3
0
        public SpellFailedReason FindAllTargets()
        {
            this.IsInitialized = true;
            WorldObject casterObject = this.Cast.CasterObject;

            if (casterObject == null)
            {
                SpellTargetCollection.log.Warn("Invalid SpellCast - Tried to find targets, without Caster set: {0}",
                                               (object)casterObject);
                return(SpellFailedReason.Error);
            }

            SpellEffect effect = this.FirstHandler.Effect;

            if (effect.Spell.IsPreventionDebuff)
            {
                SpellFailedReason spellFailedReason = SpellFailedReason.Ok;
                foreach (SpellEffectHandler handler in this.m_handlers)
                {
                    spellFailedReason = handler.ValidateAndInitializeTarget(casterObject);
                    if (spellFailedReason != SpellFailedReason.Ok)
                    {
                        return(spellFailedReason);
                    }
                }

                this.Add(casterObject);
                return(spellFailedReason);
            }

            SpellFailedReason spellFailedReason1 = SpellFailedReason.Ok;
            TargetDefinition  targetDefinition   = effect.GetTargetDefinition();

            if (targetDefinition != null)
            {
                SpellFailedReason failReason = SpellFailedReason.Ok;
                targetDefinition.Collect(this, ref failReason);
            }
            else
            {
                if (effect.ImplicitTargetA != ImplicitSpellTargetType.None)
                {
                    spellFailedReason1 = this.FindTargets(effect.ImplicitTargetA);
                    if (spellFailedReason1 != SpellFailedReason.Ok)
                    {
                        return(spellFailedReason1);
                    }
                }

                if (effect.ImplicitTargetB != ImplicitSpellTargetType.None)
                {
                    spellFailedReason1 = this.FindTargets(effect.ImplicitTargetB);
                }
            }

            return(spellFailedReason1);
        }
示例#4
0
        public SpellFailedReason FindTargets(ImplicitSpellTargetType targetType)
        {
            SpellFailedReason failReason       = SpellFailedReason.Ok;
            TargetDefinition  targetDefinition = DefaultTargetDefinitions.GetTargetDefinition(targetType);

            if (targetDefinition != null)
            {
                targetDefinition.Collect(this, ref failReason);
            }
            return(failReason);
        }
示例#5
0
        /// <summary>
        /// Whether this effect can share targets with the given effect
        /// </summary>
        public bool SharesTargetsWith(SpellEffect b)
        {
            TargetDefinition targetDefinition = GetTargetDefinition();

            if (targetDefinition != null && targetDefinition.Equals(b.GetTargetDefinition()))
            {
                return(true);
            }
            if (ImplicitTargetA == b.ImplicitTargetA)
            {
                return(ImplicitTargetB == b.ImplicitTargetB);
            }
            return(false);
        }
示例#6
0
        /// <summary>
        /// Removes all targets that don't satisfy the effects' constraints
        /// </summary>
        public void RevalidateAll()
        {
            SpellEffectHandler firstHandler = this.FirstHandler;
            SpellCast          cast         = firstHandler.Cast;

            for (int index = this.Count - 1; index >= 0; --index)
            {
                WorldObject target = this[index];
                if (target.IsInWorld)
                {
                    TargetDefinition targetDefinition = firstHandler.Effect.GetTargetDefinition();
                    if (targetDefinition != null)
                    {
                        if (this.ValidateTarget(target, targetDefinition.Filter) == SpellFailedReason.Ok)
                        {
                            continue;
                        }
                    }
                    else if (this.ValidateTarget(target,
                                                 DefaultTargetDefinitions.GetTargetFilter(firstHandler.Effect.ImplicitTargetA)) ==
                             SpellFailedReason.Ok)
                    {
                        TargetFilter targetFilter =
                            DefaultTargetDefinitions.GetTargetFilter(firstHandler.Effect.ImplicitTargetB);
                        if (targetFilter != null)
                        {
                            SpellFailedReason failReason = SpellFailedReason.Ok;
                            targetFilter(firstHandler, target, ref failReason);
                            if (failReason == SpellFailedReason.Ok)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }
                    }
                }

                this.RemoveAt(index);
            }
        }
示例#7
0
        public VyosConfiguration(ZoneConfig zoneConfig, CLIOptions options)
        {
            foreach (ZoneName zName in zoneConfig.Zones)
            {
                ZoneConfiguration.Add(zName, new ZoneConfiguration(zName, zoneConfig.ZoneDefinitions.GetValueOrDefault(zName, Zone.DefaultZone)));
                FirewallConfiguration.Add(zName, new Dictionary <ZoneName, FirewallConfiguration>());
                foreach (ZoneName other in zoneConfig.Zones.Where(z => z != zName))
                {
                    var dict = FirewallConfiguration[zName];
                    dict.Add(other, new FirewallConfiguration($"{zName}-{other}", options));
                }
            }

            foreach (var(zName, definition) in zoneConfig.ZoneDefinitions)
            {
                var pingableZones = definition.AllowPingTo == TargetDefinition.All ? TargetDefinition.GetTargetDefinition(FirewallConfiguration[zName].Keys.ToList()) : definition.AllowPingTo;
                foreach (var pingableZone in pingableZones)
                {
                    FirewallConfiguration[zName][pingableZone.Name].AllowPing();
                }

                var whitelistedZones = definition.AllowTrafficTo == TargetDefinition.All ? TargetDefinition.GetTargetDefinition(FirewallConfiguration[zName].Keys.ToList()) : definition.AllowTrafficTo;
                foreach (var whitelistedZone in whitelistedZones)
                {
                    if (whitelistedZone.Name == TargetDefinition.WILDCARD)
                    {
                        foreach (var other in TargetDefinition.GetTargetDefinition(FirewallConfiguration[zName].Keys.ToList()))
                        {
                            FirewallConfiguration[zName][other.Name].AllowTraffic(whitelistedZone.AllowedPorts, whitelistedZone.AllowedAddresses);
                        }
                    }
                    else
                    {
                        FirewallConfiguration[zName][whitelistedZone.Name].AllowTraffic(whitelistedZone.AllowedPorts, whitelistedZone.AllowedAddresses);
                    }
                }
            }
        }
示例#8
0
 public void SetAITargetDefinition(TargetAdder adder, params TargetFilter[] filters)
 {
     AITargetHandlerDefintion = new TargetDefinition(adder, filters);
 }