YamlException is now thrown if WeaponInfo can not be found in Ruleset.Weapons
Removed invalid spacing at the end of the line 36 in ThrowsShrapnel Prevented NullReferenceException in cases where weapons aren't optional
This commit is contained in:
@@ -56,8 +56,19 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public object Create(ActorInitializer init) { return new MadTank(init.Self, this); }
|
public object Create(ActorInitializer init) { return new MadTank(init.Self, this); }
|
||||||
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
ThumpDamageWeaponInfo = rules.Weapons[ThumpDamageWeapon.ToLowerInvariant()];
|
WeaponInfo thumpDamageWeapon;
|
||||||
DetonationWeaponInfo = rules.Weapons[DetonationWeapon.ToLowerInvariant()];
|
WeaponInfo detonationWeapon;
|
||||||
|
var thumpDamageWeaponToLower = (ThumpDamageWeapon ?? string.Empty).ToLowerInvariant();
|
||||||
|
var detonationWeaponToLower = (DetonationWeapon ?? string.Empty).ToLowerInvariant();
|
||||||
|
|
||||||
|
if (!rules.Weapons.TryGetValue(thumpDamageWeaponToLower, out thumpDamageWeapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(thumpDamageWeaponToLower));
|
||||||
|
|
||||||
|
if (!rules.Weapons.TryGetValue(detonationWeaponToLower, out detonationWeapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(detonationWeaponToLower));
|
||||||
|
|
||||||
|
ThumpDamageWeaponInfo = thumpDamageWeapon;
|
||||||
|
DetonationWeaponInfo = detonationWeapon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,13 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public override object Create(ActorInitializer init) { return new IonCannonPower(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new IonCannonPower(init.Self, this); }
|
||||||
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
WeaponInfo = rules.Weapons[Weapon.ToLowerInvariant()];
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = (Weapon ?? string.Empty).ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
|
||||||
|
WeaponInfo = weapon;
|
||||||
|
|
||||||
base.RulesetLoaded(rules, ai);
|
base.RulesetLoaded(rules, ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public object Create(ActorInitializer init) { return new FallsToEarth(init.Self, this); }
|
public object Create(ActorInitializer init) { return new FallsToEarth(init.Self, this); }
|
||||||
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
ExplosionWeapon = string.IsNullOrEmpty(Explosion) ? null : rules.Weapons[Explosion.ToLowerInvariant()];
|
if (string.IsNullOrEmpty(Explosion))
|
||||||
|
return;
|
||||||
|
|
||||||
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = Explosion.ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
|
||||||
|
ExplosionWeapon = weapon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public WeaponInfo DemolishWeaponInfo { get; private set; }
|
public WeaponInfo DemolishWeaponInfo { get; private set; }
|
||||||
|
|
||||||
public void RulesetLoaded(Ruleset rules, ActorInfo ai) { DemolishWeaponInfo = rules.Weapons[DemolishWeapon.ToLowerInvariant()]; }
|
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
|
{
|
||||||
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = (DemolishWeapon ?? string.Empty).ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
|
||||||
|
DemolishWeaponInfo = weapon;
|
||||||
|
}
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new GroundLevelBridge(init.Self, this); }
|
public object Create(ActorInitializer init) { return new GroundLevelBridge(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,23 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public override object Create(ActorInitializer init) { return new Explodes(this, init.Self); }
|
public override object Create(ActorInitializer init) { return new Explodes(this, init.Self); }
|
||||||
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
WeaponInfo = string.IsNullOrEmpty(Weapon) ? null : rules.Weapons[Weapon.ToLowerInvariant()];
|
if (!string.IsNullOrEmpty(Weapon))
|
||||||
EmptyWeaponInfo = string.IsNullOrEmpty(EmptyWeapon) ? null : rules.Weapons[EmptyWeapon.ToLowerInvariant()];
|
{
|
||||||
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = Weapon.ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
WeaponInfo = weapon;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(EmptyWeapon))
|
||||||
|
{
|
||||||
|
WeaponInfo emptyWeapon;
|
||||||
|
var emptyWeaponToLower = EmptyWeapon.ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(emptyWeaponToLower, out emptyWeapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(emptyWeaponToLower));
|
||||||
|
EmptyWeaponInfo = emptyWeapon;
|
||||||
|
}
|
||||||
|
|
||||||
base.RulesetLoaded(rules, ai);
|
base.RulesetLoaded(rules, ai);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
WeaponInfo = string.IsNullOrEmpty(Weapon) ? null : rules.Weapons[Weapon.ToLowerInvariant()];
|
if (string.IsNullOrEmpty(Weapon))
|
||||||
|
return;
|
||||||
|
|
||||||
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = Weapon.ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
|
||||||
|
WeaponInfo = weapon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public override object Create(ActorInitializer init) { return new NukePower(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new NukePower(init.Self, this); }
|
||||||
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
WeaponInfo = rules.Weapons[MissileWeapon.ToLowerInvariant()];
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = (MissileWeapon ?? string.Empty).ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
|
||||||
|
WeaponInfo = weapon;
|
||||||
|
|
||||||
base.RulesetLoaded(rules, ai);
|
base.RulesetLoaded(rules, ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public object Create(ActorInitializer actor) { return new ThrowsShrapnel(this); }
|
public object Create(ActorInitializer actor) { return new ThrowsShrapnel(this); }
|
||||||
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
public void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||||
{
|
{
|
||||||
WeaponInfos = Weapons.Select(w => rules.Weapons[w.ToLowerInvariant()]).ToArray();
|
WeaponInfos = Weapons.Select(w =>
|
||||||
|
{
|
||||||
|
WeaponInfo weapon;
|
||||||
|
var weaponToLower = w.ToLowerInvariant();
|
||||||
|
if (!rules.Weapons.TryGetValue(weaponToLower, out weapon))
|
||||||
|
throw new YamlException("Weapons Ruleset does not contain an entry '{0}'".F(weaponToLower));
|
||||||
|
return weapon;
|
||||||
|
}).ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user