OpenRA.GameRules.WeaponInfo.IsValidAgainst C# (CSharp) Method

IsValidAgainst() public method

Checks if the weapon is valid against (can target) the actor.
public IsValidAgainst ( Actor victim, Actor firedBy ) : bool
victim Actor
firedBy Actor
return bool
        public bool IsValidAgainst(Actor victim, Actor firedBy)
        {
            var targetTypes = victim.GetEnabledTargetTypes();

            if (!IsValidTarget(targetTypes))
                return false;

            // PERF: Avoid LINQ.
            foreach (var warhead in Warheads)
                if (warhead.IsValidAgainst(victim, firedBy))
                    return true;

            return false;
        }

Same methods

WeaponInfo::IsValidAgainst ( OpenRA.Traits.FrozenActor victim, Actor firedBy ) : bool
WeaponInfo::IsValidAgainst ( Target target, World world, Actor firedBy ) : bool

Usage Example

Example #1
0
		static float GetDamageToInflict(WPos pos, Actor target, WarheadInfo warhead, WeaponInfo weapon, float modifier, bool withFalloff)
		{
			// don't hit air units with splash from ground explosions, etc
			if (!weapon.IsValidAgainst(target))
				return 0;

			var healthInfo = target.Info.Traits.GetOrDefault<HealthInfo>();
			if (healthInfo == null)
				return 0;

			var rawDamage = (float)warhead.Damage;
			if (withFalloff)
			{
				var distance = Math.Max(0, (target.CenterPosition - pos).Length - healthInfo.Radius.Range);
				var falloff = (float)GetDamageFalloff(distance * 1f / warhead.Spread.Range);
				rawDamage = (float)(falloff * rawDamage);
			}

			return (float)(rawDamage * modifier * (float)warhead.EffectivenessAgainst(target.Info));
		}
All Usage Examples Of OpenRA.GameRules.WeaponInfo::IsValidAgainst