Add some basic safeguards around RenderPlayer.set.

This commit is contained in:
Paul Chote
2018-05-28 12:01:23 +00:00
committed by reaperrr
parent 3a1857886a
commit ebf3ec0e90
4 changed files with 43 additions and 5 deletions

View File

@@ -73,8 +73,16 @@ namespace OpenRA
Player renderPlayer;
public Player RenderPlayer
{
get { return renderPlayer == null || (renderPlayer.WinState != WinState.Undefined && !Map.Visibility.HasFlag(MapVisibility.MissionSelector)) ? null : renderPlayer; }
set { renderPlayer = value; }
get
{
return renderPlayer;
}
set
{
if (LocalPlayer == null || LocalPlayer.UnlockedRenderPlayer)
renderPlayer = value;
}
}
public bool FogObscures(Actor a) { return RenderPlayer != null && !a.CanBeViewedByPlayer(RenderPlayer); }
@@ -101,7 +109,9 @@ namespace OpenRA
return;
LocalPlayer = localPlayer;
RenderPlayer = LocalPlayer;
// Set the property backing field directly
renderPlayer = LocalPlayer;
}
public readonly Actor WorldActor;
@@ -410,7 +420,12 @@ namespace OpenRA
ret += n++ * Sync.Hash(sync);
// Hash the shared random number generator.
ret += SharedRandom.Last;
ret += SharedRandom.Last;
// Hash player RenderPlayer status
foreach (var p in Players)
if (p.UnlockedRenderPlayer)
ret += Sync.HashPlayer(p);
return ret;
}