Fix overlays not being applied after reentering an entity

This commit is contained in:
Víctor Aguilera Puerto
2020-07-07 23:31:36 +02:00
parent a7565b7651
commit e27e4ed2b1

View File

@@ -28,7 +28,7 @@ namespace Content.Client.GameObjects.Components.Mobs
/// <summary>
/// An enum representing the current state being applied to the user
/// </summary>
private readonly List<OverlayContainer> _currentEffects = new List<OverlayContainer>();
private List<OverlayContainer> _currentEffects = new List<OverlayContainer>();
[ViewVariables(VVAccess.ReadOnly)]
public List<OverlayContainer> ActiveOverlays
@@ -49,7 +49,9 @@ namespace Content.Client.GameObjects.Components.Mobs
switch (message)
{
case PlayerAttachedMsg _:
SetEffects(ActiveOverlays);
var overlays = new List<OverlayContainer>(_currentEffects);
_currentEffects.Clear();
SetEffects(overlays);
break;
case PlayerDetachedMsg _:
ActiveOverlays = new List<OverlayContainer>();
@@ -61,14 +63,20 @@ namespace Content.Client.GameObjects.Components.Mobs
{
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))
{
return;
}
if (_playerManager?.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
{
_currentEffects = state.Overlays;
return;
}
if (ActiveOverlays.Equals(state.Overlays))
return;
ActiveOverlays = state.Overlays;
}