From f04a402d7eba0a1bbc51c863fe9fd7d9666420e2 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 9 Nov 2009 19:00:47 +1300 Subject: [PATCH] rally point actually works now for WEAP --- OpenRa.Game/Game.cs | 6 +++++- OpenRa.Game/GameRules/UnitInfo.cs | 1 + OpenRa.Game/Traits/RallyPoint.cs | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index cc457ae3ef..9f371fdb52 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -330,7 +330,11 @@ namespace OpenRa.Game unit = new Actor(name, (1 / 24f * producer.CenterLocation).ToInt2(), player); var mobile = unit.traits.Get(); mobile.facing = 128; - mobile.QueueActivity(new Traits.Activities.Move(unit.Location + new int2(0, 3), 1)); + + var rp = producer.traits.GetOrDefault(); + var dest = rp != null ? rp.rallyPoint : (unit.Location + new int2(0, 3)); + + mobile.QueueActivity(new Traits.Activities.Move(dest, 1)); } world.Add( unit ); diff --git a/OpenRa.Game/GameRules/UnitInfo.cs b/OpenRa.Game/GameRules/UnitInfo.cs index 273041bbb9..fa1b1dec72 100755 --- a/OpenRa.Game/GameRules/UnitInfo.cs +++ b/OpenRa.Game/GameRules/UnitInfo.cs @@ -97,6 +97,7 @@ namespace OpenRa.Game.GameRules public readonly bool Repairable = true; public readonly int Storage = 0; public readonly bool Unsellable = false; + public readonly int[] DefaultRallyPoint = { 1, 3 }; public BuildingInfo(string name) : base(name) { } } diff --git a/OpenRa.Game/Traits/RallyPoint.cs b/OpenRa.Game/Traits/RallyPoint.cs index 22c1b0d63a..f8b2ca50f2 100644 --- a/OpenRa.Game/Traits/RallyPoint.cs +++ b/OpenRa.Game/Traits/RallyPoint.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using IjwFramework.Types; using OpenRa.Game.Graphics; +using OpenRa.Game.GameRules; namespace OpenRa.Game.Traits { @@ -14,7 +15,8 @@ namespace OpenRa.Game.Traits public RallyPoint(Actor self) { - rallyPoint = self.Location + new int2(1, 3); //self.unitInfo.RallyPoint; + var bi = (UnitInfo.BuildingInfo)self.unitInfo; + rallyPoint = self.Location + new int2(bi.DefaultRallyPoint[0], bi.DefaultRallyPoint[1]); anim = new Animation("flagfly"); anim.PlayRepeating("idle"); }