Fix overlays not being applied after reentering an entity
This commit is contained in:
@@ -28,7 +28,7 @@ namespace Content.Client.GameObjects.Components.Mobs
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// An enum representing the current state being applied to the user
|
/// An enum representing the current state being applied to the user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly List<OverlayContainer> _currentEffects = new List<OverlayContainer>();
|
private List<OverlayContainer> _currentEffects = new List<OverlayContainer>();
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly)]
|
[ViewVariables(VVAccess.ReadOnly)]
|
||||||
public List<OverlayContainer> ActiveOverlays
|
public List<OverlayContainer> ActiveOverlays
|
||||||
@@ -49,7 +49,9 @@ namespace Content.Client.GameObjects.Components.Mobs
|
|||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
case PlayerAttachedMsg _:
|
case PlayerAttachedMsg _:
|
||||||
SetEffects(ActiveOverlays);
|
var overlays = new List<OverlayContainer>(_currentEffects);
|
||||||
|
_currentEffects.Clear();
|
||||||
|
SetEffects(overlays);
|
||||||
break;
|
break;
|
||||||
case PlayerDetachedMsg _:
|
case PlayerDetachedMsg _:
|
||||||
ActiveOverlays = new List<OverlayContainer>();
|
ActiveOverlays = new List<OverlayContainer>();
|
||||||
@@ -61,14 +63,20 @@ namespace Content.Client.GameObjects.Components.Mobs
|
|||||||
{
|
{
|
||||||
base.HandleComponentState(curState, nextState);
|
base.HandleComponentState(curState, nextState);
|
||||||
|
|
||||||
if(_playerManager?.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
|
if (!(curState is OverlayEffectComponentState state))
|
||||||
return;
|
|
||||||
|
|
||||||
if (!(curState is OverlayEffectComponentState state) || ActiveOverlays.Equals(state.Overlays))
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_playerManager?.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
|
||||||
|
{
|
||||||
|
_currentEffects = state.Overlays;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ActiveOverlays.Equals(state.Overlays))
|
||||||
|
return;
|
||||||
|
|
||||||
ActiveOverlays = state.Overlays;
|
ActiveOverlays = state.Overlays;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user