Fix overlays applying EVERY overlay of EVERY overlay component

Cluster moment
This commit is contained in:
Víctor Aguilera Puerto
2020-07-07 22:34:20 +02:00
parent 830d7bc02d
commit 3833d1af5f

View File

@@ -7,6 +7,7 @@ using Content.Shared.Interfaces;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Graphics.Overlays; using Robust.Client.Graphics.Overlays;
using Robust.Client.Interfaces.Graphics.Overlays; using Robust.Client.Interfaces.Graphics.Overlays;
using Robust.Client.Player;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Reflection; using Robust.Shared.Interfaces.Reflection;
@@ -40,6 +41,7 @@ namespace Content.Client.GameObjects.Components.Mobs
// Required dependencies // Required dependencies
[Dependency] private readonly IOverlayManager _overlayManager; [Dependency] private readonly IOverlayManager _overlayManager;
[Dependency] private readonly IReflectionManager _reflectionManager; [Dependency] private readonly IReflectionManager _reflectionManager;
[Dependency] private readonly IPlayerManager _playerManager;
#pragma warning restore 649 #pragma warning restore 649
public override void HandleMessage(ComponentMessage message, IComponent component) public override void HandleMessage(ComponentMessage message, IComponent component)
@@ -58,6 +60,10 @@ namespace Content.Client.GameObjects.Components.Mobs
public override void HandleComponentState(ComponentState curState, ComponentState nextState) public override void HandleComponentState(ComponentState curState, ComponentState nextState)
{ {
base.HandleComponentState(curState, nextState); base.HandleComponentState(curState, nextState);
if(_playerManager.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
return;
if (!(curState is OverlayEffectComponentState state) || ActiveOverlays.Equals(state.Overlays)) if (!(curState is OverlayEffectComponentState state) || ActiveOverlays.Equals(state.Overlays))
{ {
return; return;
@@ -68,7 +74,7 @@ namespace Content.Client.GameObjects.Components.Mobs
private void SetEffects(List<OverlayContainer> newOverlays) private void SetEffects(List<OverlayContainer> newOverlays)
{ {
foreach (var container in ActiveOverlays.ShallowClone()) foreach (var container in ActiveOverlays.ToArray())
{ {
if (!newOverlays.Contains(container)) if (!newOverlays.Contains(container))
{ {