diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index 4223cb2de1..b90d6ec98f 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -169,7 +169,7 @@ namespace OpenRa.Game.Graphics lineRenderer.DrawLine(xy + new float2(0, -2), xy + new float2(0, -4), c, c); lineRenderer.DrawLine(Xy + new float2(0, -2), Xy + new float2(0, -4), c, c); - var healthAmount = (float)selectedUnit.Health / selectedUnit.LegacyInfo.Strength; + var healthAmount = (float)selectedUnit.Health / selectedUnit.Info.Traits.WithInterface().First().HP; var healthColor = (healthAmount < Rules.General.ConditionRed) ? Color.Red : (healthAmount < Rules.General.ConditionYellow) ? Color.Yellow : Color.LimeGreen; diff --git a/OpenRa.Game/Orders/PowerDownOrderGenerator.cs b/OpenRa.Game/Orders/PowerDownOrderGenerator.cs index 84631b0596..80ecba3ad1 100644 --- a/OpenRa.Game/Orders/PowerDownOrderGenerator.cs +++ b/OpenRa.Game/Orders/PowerDownOrderGenerator.cs @@ -27,9 +27,7 @@ namespace OpenRa.Game.Orders && a.traits.Contains() && a.traits.Contains()).FirstOrDefault(); - var building = underCursor != null ? underCursor.LegacyInfo as LegacyBuildingInfo : null; - - if (building != null) + if (underCursor != null) yield return new Order("PowerDown", underCursor, null, int2.Zero, null); } } diff --git a/OpenRa.Game/Traits/Activities/HeliAttack.cs b/OpenRa.Game/Traits/Activities/HeliAttack.cs index 1a50596e64..42574e4a80 100644 --- a/OpenRa.Game/Traits/Activities/HeliAttack.cs +++ b/OpenRa.Game/Traits/Activities/HeliAttack.cs @@ -30,11 +30,11 @@ namespace OpenRa.Game.Traits.Activities return this; } - var range = Rules.WeaponInfo[ self.LegacyInfo.Primary ].Range - 1; + var range = Rules.WeaponInfo[ self.Info.Traits.WithInterface().First().PrimaryWeapon ].Range - 1; var dist = target.CenterLocation - self.CenterLocation; var desiredFacing = Util.GetFacing(dist, unit.Facing); - Util.TickFacing(ref unit.Facing, desiredFacing, self.LegacyInfo.ROT); + Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get().ROT); if (!float2.WithinEpsilon(float2.Zero, dist, range * Game.CellSize)) { diff --git a/OpenRa.Game/Traits/Activities/Land.cs b/OpenRa.Game/Traits/Activities/Land.cs index 5f99dd6b19..2164f2bfd2 100644 --- a/OpenRa.Game/Traits/Activities/Land.cs +++ b/OpenRa.Game/Traits/Activities/Land.cs @@ -28,7 +28,7 @@ namespace OpenRa.Game.Traits.Activities --unit.Altitude; var desiredFacing = Util.GetFacing(d, unit.Facing); - Util.TickFacing(ref unit.Facing, desiredFacing, self.LegacyInfo.ROT); + Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get().ROT); var speed = .2f * Util.GetEffectiveSpeed(self); var angle = unit.Facing / 128f * Math.PI; diff --git a/OpenRa.Game/Traits/DemoTruck.cs b/OpenRa.Game/Traits/DemoTruck.cs index 6cc66b11b1..c8ff6c5f73 100644 --- a/OpenRa.Game/Traits/DemoTruck.cs +++ b/OpenRa.Game/Traits/DemoTruck.cs @@ -44,7 +44,7 @@ namespace OpenRa.Game.Traits int2 detonateLocation = self.CenterLocation.ToInt2(); Game.world.AddFrameEndTask( - w => w.Add(new Bullet(self.LegacyInfo.Primary, detonatedBy.Owner, detonatedBy, + w => w.Add(new Bullet(self.Info.Traits.WithInterface().First().PrimaryWeapon, detonatedBy.Owner, detonatedBy, detonateLocation, detonateLocation, altitude, altitude))); } } diff --git a/OpenRa.Game/Traits/Helicopter.cs b/OpenRa.Game/Traits/Helicopter.cs index 8fa02f6fca..6c8114c764 100644 --- a/OpenRa.Game/Traits/Helicopter.cs +++ b/OpenRa.Game/Traits/Helicopter.cs @@ -63,14 +63,15 @@ namespace OpenRa.Game.Traits if (res != null) reservation = res.Reserve(self); - var offset = (order.TargetActor.LegacyInfo as LegacyBuildingInfo).SpawnOffset; + var productionInfo = order.TargetActor.Info.Traits.Get(); + var offset = productionInfo.SpawnOffset; var offsetVec = offset != null ? new float2(offset[0], offset[1]) : float2.Zero; self.CancelActivity(); self.QueueActivity(new HeliFly(order.TargetActor.CenterLocation + offsetVec)); - self.QueueActivity(new Turn(self.LegacyInfo.InitialFacing)); + self.QueueActivity(new Turn(self.Info.Traits.WithInterface().FirstOrDefault().InitialFacing)); self.QueueActivity(new HeliLand(false)); - self.QueueActivity(order.TargetActor.LegacyInfo == Rules.UnitInfo["HPAD"] + self.QueueActivity(order.TargetActor.Info.Name == "hpad" ? (IActivity)new Rearm() : new Repair()); } } diff --git a/OpenRa.Game/Traits/RenderBuildingWarFactory.cs b/OpenRa.Game/Traits/RenderBuildingWarFactory.cs index f55731579c..2990363d0d 100644 --- a/OpenRa.Game/Traits/RenderBuildingWarFactory.cs +++ b/OpenRa.Game/Traits/RenderBuildingWarFactory.cs @@ -26,7 +26,7 @@ namespace OpenRa.Game.Traits public RenderWarFactory(Actor self) { this.self = self; - roof = new Animation(self.LegacyInfo.Image ?? self.LegacyInfo.Name); + roof = new Animation(self.traits.WithInterface().First().GetImage(self)); } public void BuildingComplete( Actor self )