mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-10 21:40:19 +00:00
nvm
This commit is contained in:
parent
ccef453de9
commit
0e8c0af483
@ -1,13 +1,11 @@
|
||||
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
|
||||
|
||||
public class SetVisibleMessage : QSBWorldObjectMessage<QSBAlarmTotem, (uint playerId, bool visible)>
|
||||
public class SetVisibleMessage : QSBWorldObjectMessage<QSBAlarmTotem, bool>
|
||||
{
|
||||
public SetVisibleMessage(bool visible) : base((QSBPlayerManager.LocalPlayerId, visible)) { }
|
||||
public SetVisibleMessage(uint playerId) : base((playerId, true)) { }
|
||||
public SetVisibleMessage(bool visible) : base(visible) { }
|
||||
public override void OnReceiveLocal() => OnReceiveRemote();
|
||||
public override void OnReceiveRemote() => WorldObject.SetVisible(Data.playerId, Data.visible);
|
||||
public override void OnReceiveRemote() => WorldObject.SetVisible(From, Data);
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
|
||||
|
||||
public class VisibleForMessage : QSBWorldObjectMessage<QSBAlarmTotem, List<uint>>
|
||||
{
|
||||
public VisibleForMessage(List<uint> visibleFor) : base(visibleFor) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
WorldObject.VisibleFor.Clear();
|
||||
WorldObject.VisibleFor.AddRange(Data);
|
||||
}
|
||||
}
|
@ -11,16 +11,13 @@ namespace QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
||||
|
||||
public class QSBAlarmTotem : WorldObject<AlarmTotem>
|
||||
{
|
||||
private readonly List<uint> _visibleFor = new();
|
||||
public readonly List<uint> VisibleFor = new();
|
||||
|
||||
public override void SendInitialState(uint to)
|
||||
{
|
||||
this.SendMessage(new SetFaceOpenMessage(AttachedObject._isFaceOpen) { To = to });
|
||||
this.SendMessage(new SetEnabledMessage(AttachedObject.enabled) { To = to });
|
||||
foreach (var playerId in _visibleFor)
|
||||
{
|
||||
this.SendMessage(new SetVisibleMessage(playerId) { To = to });
|
||||
}
|
||||
this.SendMessage(new VisibleForMessage(VisibleFor) { To = to });
|
||||
}
|
||||
|
||||
public override async UniTask Init(CancellationToken ct)
|
||||
@ -40,19 +37,19 @@ public class QSBAlarmTotem : WorldObject<AlarmTotem>
|
||||
QSBPlayerManager.OnRemovePlayer -= OnPlayerLeave;
|
||||
|
||||
private void OnPlayerLeave(PlayerInfo player) =>
|
||||
_visibleFor.QuickRemove(player.PlayerId);
|
||||
VisibleFor.QuickRemove(player.PlayerId);
|
||||
|
||||
public bool IsVisible() => _visibleFor.Count > 0;
|
||||
public bool IsVisible() => VisibleFor.Count > 0;
|
||||
|
||||
public void SetVisible(uint playerId, bool visible)
|
||||
{
|
||||
if (visible)
|
||||
{
|
||||
_visibleFor.SafeAdd(playerId);
|
||||
VisibleFor.SafeAdd(playerId);
|
||||
}
|
||||
else
|
||||
{
|
||||
_visibleFor.QuickRemove(playerId);
|
||||
VisibleFor.QuickRemove(playerId);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user