Merge pull request #9219 from deniz1a/hide-map-crate

Adds IncludeAllies option to hide-map crate.
This commit is contained in:
Pavel Penev
2015-09-30 16:15:26 +03:00
2 changed files with 20 additions and 4 deletions

View File

@@ -13,17 +13,25 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Hides the entire map in shroud.")] [Desc("Hides the entire map in shroud.")]
class HideMapCrateActionInfo : CrateActionInfo class HideMapCrateActionInfo : CrateActionInfo
{ {
[Desc("Should the map also be hidden for the allies of the collector's owner?")]
public readonly bool IncludeAllies = false;
public override object Create(ActorInitializer init) { return new HideMapCrateAction(init.Self, this); } public override object Create(ActorInitializer init) { return new HideMapCrateAction(init.Self, this); }
} }
class HideMapCrateAction : CrateAction class HideMapCrateAction : CrateAction
{ {
readonly HideMapCrateActionInfo info;
public HideMapCrateAction(Actor self, HideMapCrateActionInfo info) public HideMapCrateAction(Actor self, HideMapCrateActionInfo info)
: base(self, info) { } : base(self, info)
{
this.info = info;
}
public override int GetSelectionShares(Actor collector) public override int GetSelectionShares(Actor collector)
{ {
// don't ever hide the map for people who have GPS. // Don't ever hide the map for people who have GPS.
if (collector.Owner.HasFogVisibility) if (collector.Owner.HasFogVisibility)
return 0; return 0;
@@ -32,7 +40,15 @@ namespace OpenRA.Mods.Common.Traits
public override void Activate(Actor collector) public override void Activate(Actor collector)
{ {
if (info.IncludeAllies)
{
foreach (var player in collector.World.Players)
if (player.IsAlliedWith(collector.Owner))
player.Shroud.ResetExploration();
}
else
collector.Owner.Shroud.ResetExploration(); collector.Owner.Shroud.ResetExploration();
base.Activate(collector); base.Activate(collector);
} }
} }

View File

@@ -13,7 +13,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Reveals the entire map.")] [Desc("Reveals the entire map.")]
class RevealMapCrateActionInfo : CrateActionInfo class RevealMapCrateActionInfo : CrateActionInfo
{ {
[Desc("Should the map also be revealed for the allies of the collector's owner.")] [Desc("Should the map also be revealed for the allies of the collector's owner?")]
public readonly bool IncludeAllies = false; public readonly bool IncludeAllies = false;
public override object Create(ActorInitializer init) { return new RevealMapCrateAction(init.Self, this); } public override object Create(ActorInitializer init) { return new RevealMapCrateAction(init.Self, this); }