diff --git a/OpenRA.Game/ShroudRenderer.cs b/OpenRA.Game/ShroudRenderer.cs index eeaccd26a5..aabe46bb7c 100644 --- a/OpenRA.Game/ShroudRenderer.cs +++ b/OpenRA.Game/ShroudRenderer.cs @@ -58,8 +58,6 @@ namespace OpenRA bool IsExplored(int x, int y) { return shroud.exploredCells[x,y]; } public bool DisplayOnRadar(int x, int y) { return IsExplored(x, y); } - - public void ResetExplored() { } // todo public void Explore(World w, int2 center, int range) { dirty = true; } public void Explore(Actor a) { if (a.Owner == a.World.LocalPlayer) dirty = true; } diff --git a/OpenRA.Game/Traits/World/Shroud.cs b/OpenRA.Game/Traits/World/Shroud.cs index 63f5832681..73bfeea354 100644 --- a/OpenRA.Game/Traits/World/Shroud.cs +++ b/OpenRA.Game/Traits/World/Shroud.cs @@ -26,12 +26,12 @@ using System.Drawing; namespace OpenRA.Traits { - class ShroudInfo : ITraitInfo + public class ShroudInfo : ITraitInfo { public object Create(Actor self) { return new Shroud(self, this); } } - class Shroud + public class Shroud { Map map; @@ -124,5 +124,12 @@ namespace OpenRA.Traits exploredBounds = exploredBounds.HasValue ? Rectangle.Union(exploredBounds.Value, box) : box; } + + public void ResetExploration() // for `hide map` crate + { + for (var j = 0; j <= exploredCells.GetUpperBound(1); j++) + for (var i = 0; i <= exploredCells.GetUpperBound(0); i++) + exploredCells[i, j] = visibleCells[i, j] > 0; + } } } diff --git a/OpenRA.Mods.RA/Crates/ResetRadarCrateAction.cs b/OpenRA.Mods.RA/Crates/ResetRadarCrateAction.cs index ba386e42cd..cb484d993d 100644 --- a/OpenRA.Mods.RA/Crates/ResetRadarCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/ResetRadarCrateAction.cs @@ -34,8 +34,9 @@ namespace OpenRA.Mods.RA public override void Activate(Actor collector) { - collector.Owner.Shroud.ResetExplored(); base.Activate(collector); + if (collector.Owner == collector.World.LocalPlayer) + collector.World.WorldActor.traits.Get().ResetExploration(); } } }