From eae88e7774389b6a49c832914818dde2371dc4ac Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 23 Dec 2009 02:55:37 -0800 Subject: [PATCH] Make the ICrushable interface a bit more sane, plus correct defaults for infantry --- OpenRa.Game/Game.cs | 4 +--- OpenRa.Game/Traits/Infantry.cs | 17 ++++------------- OpenRa.Game/Traits/TraitsInterfaces.cs | 4 +--- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 373485d6fb..427416bef8 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -243,9 +243,7 @@ namespace OpenRa.Game { return a != null && a.traits.WithInterface() - .Any(c => c.CrushableBy(umt) && - ((c.IsCrushableByEnemy() && a.Owner != Game.LocalPlayer) || - (c.IsCrushableByFriend() && a.Owner == Game.LocalPlayer))); + .Any(c => c.IsCrushableBy(umt, a.Owner)); } public static bool IsWater(int2 a) diff --git a/OpenRa.Game/Traits/Infantry.cs b/OpenRa.Game/Traits/Infantry.cs index 8f1a7a0155..653c9c2695 100644 --- a/OpenRa.Game/Traits/Infantry.cs +++ b/OpenRa.Game/Traits/Infantry.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; +using OpenRa.Game.GameRules; namespace OpenRa.Game.Traits { @@ -13,24 +13,15 @@ namespace OpenRa.Game.Traits this.self = self; } - public bool IsCrushableByFriend() - { - // HACK: should be false - return true; - } - public bool IsCrushableByEnemy() - { - // HACK: should be based off crushable tag - return true; - } - public void OnCrush(Actor crusher) { self.InflictDamage(crusher, self.Health, Rules.WarheadInfo["Crush"]); } - public bool CrushableBy(UnitMovementType umt) + public bool IsCrushableBy(UnitMovementType umt, Player player) { + if (player == Game.LocalPlayer) return false; + if (!(self.Info as InfantryInfo).Crushable) return false; switch (umt) { case UnitMovementType.Track: return true; diff --git a/OpenRa.Game/Traits/TraitsInterfaces.cs b/OpenRa.Game/Traits/TraitsInterfaces.cs index 1471a51aed..952720c7d2 100644 --- a/OpenRa.Game/Traits/TraitsInterfaces.cs +++ b/OpenRa.Game/Traits/TraitsInterfaces.cs @@ -61,9 +61,7 @@ namespace OpenRa.Game.Traits interface ICrushable { - bool IsCrushableByFriend(); - bool IsCrushableByEnemy(); void OnCrush(Actor crusher); - bool CrushableBy(UnitMovementType umt); + bool IsCrushableBy(UnitMovementType umt, Player player); } }