From aae7f56e7d0285de25e8c29aa75bf67a2e9f9aaf Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 6 Nov 2010 20:18:18 +1300 Subject: [PATCH] extend RevealMapCrateAction to optionally reveal for allies --- OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs b/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs index 3da984de16..0f85985322 100644 --- a/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/RevealMapCrateAction.cs @@ -6,26 +6,38 @@ * as published by the Free Software Foundation. For more information, * see LICENSE. */ -#endregion - +#endregion + +using System.Linq; using OpenRA.Traits; namespace OpenRA.Mods.RA { class RevealMapCrateActionInfo : CrateActionInfo - { + { + public readonly bool IncludeAllies = false; public override object Create(ActorInitializer init) { return new RevealMapCrateAction(init.self, this); } } class RevealMapCrateAction : CrateAction { public RevealMapCrateAction(Actor self, RevealMapCrateActionInfo info) - : base(self, info) {} + : base(self, info) {} + + bool ShouldReveal(Player collectingPlayer) + { + if ((info as RevealMapCrateActionInfo).IncludeAllies) + return collectingPlayer.World.LocalPlayer != null && + collectingPlayer.Stances[collectingPlayer.World.LocalPlayer] == Stance.Ally; + + return collectingPlayer == collectingPlayer.World.LocalPlayer; + } public override void Activate(Actor collector) { - base.Activate(collector); - if (collector.Owner == collector.World.LocalPlayer) + base.Activate(collector); + + if (ShouldReveal( collector.Owner )) collector.World.WorldActor.Trait().ExploreAll(collector.World); } }