Make infantry crushable, refactoring, fix UIM (in)sanity crash, fix unit production

This commit is contained in:
Paul Chote
2009-12-22 23:00:15 -08:00
parent 4667679f12
commit 0b0a1fe11d
5 changed files with 16 additions and 29 deletions

View File

@@ -84,31 +84,16 @@ namespace OpenRa.Game.Traits
{
if (Game.BuildingInfluence.GetBuildingAt(a) != null) return false;
var actors = Game.UnitInfluence.GetUnitsAt(a);
var crushable = true;
foreach (Actor actor in actors)
foreach (Actor actor in Game.UnitInfluence.GetUnitsAt(a))
{
if (actor == self) continue;
var c = actor.traits.WithInterface<ICrushable>();
if (c == null)
if (!Game.IsActorCrushableByActor(actor, self))
{
crushable = false;
break;
}
foreach (var crush in c)
{
// TODO: Unhack this. I can't wrap my head around this right now...
if (!(((crush.IsCrushableByEnemy() && actor.Owner != Game.LocalPlayer) || (crush.IsCrushableByFriend() && actor.Owner == Game.LocalPlayer))
&& crush.CrushableBy().Contains(GetMovementType())))
{
crushable = false;
Log.Write("{0} is NOT crushable by {1} (mobile)", actor.Info.Name, self.Info.Name);
break;
}
}
Log.Write("{0} is crushable by {1} (mobile)", actor.Info.Name, self.Info.Name);
}
if (!crushable) return false;