Fix spectator minimap not updating when in "Disable Shroud" view.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user