Fix spectator minimap not updating when in "Disable Shroud" view.

This commit is contained in:
Paul Chote
2020-02-12 20:52:36 +00:00
committed by abcdefg30
parent ab196a23e6
commit 52f4e24e22

View File

@@ -77,9 +77,14 @@ namespace OpenRA.Mods.Common.Widgets
previewWidth = 2 * previewWidth - 1; previewWidth = 2 * previewWidth - 1;
} }
void CellTerrainColorChanged(MPos puv) void CellTerrainColorChanged(MPos uv)
{ {
UpdateTerrainColor(puv); UpdateTerrainColor(uv);
}
void CellTerrainColorChanged(CPos cell)
{
UpdateTerrainColor(cell.ToMPos(world.Map));
} }
public override void Initialize(WidgetArgs args) public override void Initialize(WidgetArgs args)
@@ -93,28 +98,19 @@ namespace OpenRA.Mods.Common.Widgets
MapBoundsChanged(); MapBoundsChanged();
if (world.Type == WorldType.Regular) var player = world.Type == WorldType.Regular ? world.LocalPlayer ?? world.RenderPlayer : null;
SetPlayer(world.LocalPlayer ?? world.RenderPlayer); SetPlayer(player, true);
else
if (player == null)
{ {
// Set initial terrain data // Set initial terrain data
foreach (var uv in world.Map.AllCells.MapCoords) foreach (var uv in world.Map.AllCells.MapCoords)
UpdateTerrainColor(uv); UpdateTerrainColor(uv);
world.Map.Tiles.CellEntryChanged += UpdateTerrainCell;
world.Map.CustomTerrain.CellEntryChanged += UpdateTerrainCell;
} }
world.RenderPlayerChanged += WorldOnRenderPlayerChanged; world.RenderPlayerChanged += WorldOnRenderPlayerChanged;
} }
void UpdateTerrainCell(CPos cell)
{
var uv = cell.ToMPos(world.Map);
UpdateTerrainColor(uv);
}
void WorldOnRenderPlayerChanged(Player player) void WorldOnRenderPlayerChanged(Player player)
{ {
SetPlayer(player); SetPlayer(player);
@@ -124,7 +120,7 @@ namespace OpenRA.Mods.Common.Widgets
UpdateTerrainColor(uv); UpdateTerrainColor(uv);
} }
void SetPlayer(Player player) void SetPlayer(Player player, bool forceUpdate = false)
{ {
currentPlayer = player; currentPlayer = player;
@@ -148,13 +144,23 @@ namespace OpenRA.Mods.Common.Widgets
var newPlayerRadarTerrain = var newPlayerRadarTerrain =
currentPlayer != null ? currentPlayer.PlayerActor.TraitOrDefault<PlayerRadarTerrain>() : null; currentPlayer != null ? currentPlayer.PlayerActor.TraitOrDefault<PlayerRadarTerrain>() : null;
if (newPlayerRadarTerrain != playerRadarTerrain) if (forceUpdate || newPlayerRadarTerrain != playerRadarTerrain)
{ {
if (playerRadarTerrain != null) if (playerRadarTerrain != null)
playerRadarTerrain.CellTerrainColorChanged -= CellTerrainColorChanged; playerRadarTerrain.CellTerrainColorChanged -= CellTerrainColorChanged;
else
{
world.Map.Tiles.CellEntryChanged -= CellTerrainColorChanged;
world.Map.CustomTerrain.CellEntryChanged -= CellTerrainColorChanged;
}
if (newPlayerRadarTerrain != null) if (newPlayerRadarTerrain != null)
newPlayerRadarTerrain.CellTerrainColorChanged += CellTerrainColorChanged; newPlayerRadarTerrain.CellTerrainColorChanged += CellTerrainColorChanged;
else
{
world.Map.Tiles.CellEntryChanged += CellTerrainColorChanged;
world.Map.CustomTerrain.CellEntryChanged += CellTerrainColorChanged;
}
playerRadarTerrain = newPlayerRadarTerrain; playerRadarTerrain = newPlayerRadarTerrain;
} }