diff --git a/OpenRA.Game/Graphics/Minimap.cs b/OpenRA.Game/Graphics/Minimap.cs index 975c057aa9..8284f1caae 100644 --- a/OpenRA.Game/Graphics/Minimap.cs +++ b/OpenRA.Game/Graphics/Minimap.cs @@ -135,10 +135,12 @@ namespace OpenRA.Graphics unsafe { int* c = (int*)bitmapData.Scan0; - + + var player = world.LocalPlayer; + foreach (var t in world.Queries.WithTraitMultiple()) { - if (!t.Actor.IsVisible(world.LocalPlayer)) + if (!t.Actor.IsVisible(player)) continue; var color = t.Trait.RadarSignatureColor(t.Actor); @@ -162,7 +164,9 @@ namespace OpenRA.Graphics var shroud = Color.Black.ToArgb(); var fog = Color.FromArgb(128, Color.Black).ToArgb(); - + + var playerShroud = world.LocalPlayer.Shroud; + unsafe { int* c = (int*)bitmapData.Scan0; @@ -172,9 +176,9 @@ namespace OpenRA.Graphics { var mapX = x + map.TopLeft.X; var mapY = y + map.TopLeft.Y; - if (!world.LocalPlayer.Shroud.IsExplored(mapX, mapY)) + if (!playerShroud.IsExplored(mapX, mapY)) *(c + (y * bitmapData.Stride >> 2) + x) = shroud; - else if (!world.LocalPlayer.Shroud.IsVisible(mapX,mapY)) + else if (!playerShroud.IsVisible(mapX,mapY)) *(c + (y * bitmapData.Stride >> 2) + x) = fog; } } diff --git a/OpenRA.Game/Traits/World/ResourceLayer.cs b/OpenRA.Game/Traits/World/ResourceLayer.cs index 87c1cbbf0c..3c810ffd26 100644 --- a/OpenRA.Game/Traits/World/ResourceLayer.cs +++ b/OpenRA.Game/Traits/World/ResourceLayer.cs @@ -38,11 +38,14 @@ namespace OpenRA.Traits foreach( var rt in world.WorldActor.TraitsImplementing() ) rt.info.PaletteIndex = wr.GetPaletteIndex(rt.info.Palette); + ShroudRenderer shroud = null; + if( world.LocalPlayer != null ) + shroud = world.LocalPlayer.Shroud; + for (int x = minx; x < maxx; x++) for (int y = miny; y < maxy; y++) { - if (world.LocalPlayer != null && - !world.LocalPlayer.Shroud.IsExplored(new int2(x, y))) + if (shroud != null && !shroud.IsExplored(new int2(x, y))) continue; var c = content[x, y]; diff --git a/OpenRA.Mods.RA/Effects/Contrail.cs b/OpenRA.Mods.RA/Effects/Contrail.cs index 500f581c83..1de6e55df3 100755 --- a/OpenRA.Mods.RA/Effects/Contrail.cs +++ b/OpenRA.Mods.RA/Effects/Contrail.cs @@ -73,17 +73,15 @@ namespace OpenRA.Mods.RA Color trailEnd = Color.FromArgb(trailStart.A - 255 / TrailLength, trailStart.R, trailStart.G, trailStart.B); + // LocalPlayer is null on shellmap + ShroudRenderer shroud = null; + if (self.World.LocalPlayer != null) + shroud = self.World.LocalPlayer.Shroud; + for (int i = positions.Count - 1; i >= 1; --i) { var conPos = positions[i]; var nextPos = positions[i - 1]; - ShroudRenderer shroud = null; - - // LocalPlayer is null on shellmap - if (self.World.LocalPlayer != null) - { - shroud = self.World.LocalPlayer.Shroud; - } if (shroud == null || shroud.IsVisible(OpenRA.Traits.Util.CellContaining(conPos)) || diff --git a/OpenRA.Mods.RA/World/ChooseBuildTabOnSelect.cs b/OpenRA.Mods.RA/World/ChooseBuildTabOnSelect.cs index a0370f6dd5..3554203339 100644 --- a/OpenRA.Mods.RA/World/ChooseBuildTabOnSelect.cs +++ b/OpenRA.Mods.RA/World/ChooseBuildTabOnSelect.cs @@ -50,9 +50,7 @@ namespace OpenRA.Mods.RA.Widgets if (types.Count() == 0) return; - Widget.RootWidget.GetWidget("INGAME_BUILD_PALETTE") - .SetCurrentTab(world.LocalPlayer.PlayerActor.TraitsImplementing().FirstOrDefault(t => types.Contains(t.Info.Type))); } } diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index 854a25d5b4..64a948a5fd 100755 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -77,11 +77,12 @@ namespace OpenRA.Mods.RA { var cliprect = Game.viewport.ShroudBounds( world ); cliprect = Rectangle.Intersect(Game.viewport.ViewBounds(), cliprect); + var localPlayer = world.LocalPlayer; foreach (var kv in tiles) { if (!cliprect.Contains(kv.Key.X,kv.Key.Y)) continue; - if (world.LocalPlayer != null && !world.LocalPlayer.Shroud.IsExplored(kv.Key)) + if (localPlayer != null && !localPlayer.Shroud.IsExplored(kv.Key)) continue; smudgeSprites[kv.Value.type- 1][kv.Value.image].DrawAt( wr,