diff --git a/OpenRA.Mods.RA/BlocksBullets.cs b/OpenRA.Mods.RA/BlocksBullets.cs new file mode 100644 index 0000000000..0709b28e23 --- /dev/null +++ b/OpenRA.Mods.RA/BlocksBullets.cs @@ -0,0 +1,20 @@ +#region Copyright & License Information +/* + * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA +{ + //TODO: Add functionality like a customizable Height that is compared to projectile altitude + [Desc("This actor blocks bullets and missiles without 'High' property.")] + public class BlocksBulletsInfo : TraitInfo { } + public class BlocksBullets : IBlocksBullets { } +} diff --git a/OpenRA.Mods.RA/Buildings/Wall.cs b/OpenRA.Mods.RA/Buildings/Wall.cs deleted file mode 100755 index 84e8f3722d..0000000000 --- a/OpenRA.Mods.RA/Buildings/Wall.cs +++ /dev/null @@ -1,50 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using System.Linq; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Buildings -{ - public class WallInfo : ITraitInfo, Requires - { - public readonly string[] CrushClasses = { }; - public readonly string CrushSound; - public object Create(ActorInitializer init) { return new Wall(init.self, this); } - } - - public class Wall : ICrushable, IBlocksBullets - { - readonly Actor self; - readonly WallInfo info; - - public Wall(Actor self, WallInfo info) - { - this.self = self; - this.info = info; - } - - public void WarnCrush(Actor crusher) {} - - public bool CrushableBy(string[] crushClasses, Player crushOwner) - { - if (crushOwner.Stances[self.Owner] == Stance.Ally) - return false; - - return info.CrushClasses.Intersect(crushClasses).Any(); - } - - public void OnCrush(Actor crusher) - { - self.Kill(crusher); - Sound.Play(info.CrushSound, self.CenterPosition); - } - } -} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 0073e0ac83..9cc732919d 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -183,7 +183,7 @@ - +