mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-12 22:14:37 +00:00
baba booey
This commit is contained in:
parent
8b49fb0147
commit
d3b08df89c
@ -1,11 +1,13 @@
|
|||||||
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
||||||
using QSB.Messaging;
|
using QSB.Messaging;
|
||||||
|
using QSB.Player;
|
||||||
|
|
||||||
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
|
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
|
||||||
|
|
||||||
public class SetVisibleMessage : QSBWorldObjectMessage<QSBAlarmTotem, bool>
|
public class SetVisibleMessage : QSBWorldObjectMessage<QSBAlarmTotem, (uint playerId, bool visible)>
|
||||||
{
|
{
|
||||||
public SetVisibleMessage(bool visible) : base(visible) { }
|
public SetVisibleMessage(bool visible) : base((QSBPlayerManager.LocalPlayerId, visible)) { }
|
||||||
|
public SetVisibleMessage(uint playerId, bool visible) : base((playerId, visible)) { }
|
||||||
public override void OnReceiveLocal() => OnReceiveRemote();
|
public override void OnReceiveLocal() => OnReceiveRemote();
|
||||||
public override void OnReceiveRemote() => WorldObject.SetVisible(From, Data);
|
public override void OnReceiveRemote() => WorldObject.SetVisible(Data.playerId, Data.visible);
|
||||||
}
|
}
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
|
||||||
using QSB.Messaging;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// sent by host on initial state
|
|
||||||
/// </summary>
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -75,7 +75,8 @@ public class AlarmTotemPatches : QSBPatch
|
|||||||
|
|
||||||
if (QSBWorldSync.AllObjectsReady)
|
if (QSBWorldSync.AllObjectsReady)
|
||||||
{
|
{
|
||||||
__instance.GetWorldObject<QSBAlarmTotem>().SendMessage(new SetVisibleMessage(true));
|
__instance.GetWorldObject<QSBAlarmTotem>()
|
||||||
|
.SendMessage(new SetVisibleMessage(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isPlayerVisible && !__instance._isPlayerVisible)
|
else if (isPlayerVisible && !__instance._isPlayerVisible)
|
||||||
@ -88,7 +89,8 @@ public class AlarmTotemPatches : QSBPatch
|
|||||||
|
|
||||||
if (QSBWorldSync.AllObjectsReady)
|
if (QSBWorldSync.AllObjectsReady)
|
||||||
{
|
{
|
||||||
__instance.GetWorldObject<QSBAlarmTotem>().SendMessage(new SetVisibleMessage(false));
|
__instance.GetWorldObject<QSBAlarmTotem>()
|
||||||
|
.SendMessage(new SetVisibleMessage(false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,13 +11,16 @@ namespace QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
|
|||||||
|
|
||||||
public class QSBAlarmTotem : WorldObject<AlarmTotem>
|
public class QSBAlarmTotem : WorldObject<AlarmTotem>
|
||||||
{
|
{
|
||||||
public readonly List<uint> VisibleFor = new();
|
private readonly List<uint> _visibleFor = new();
|
||||||
|
|
||||||
public override void SendInitialState(uint to)
|
public override void SendInitialState(uint to)
|
||||||
{
|
{
|
||||||
this.SendMessage(new SetFaceOpenMessage(AttachedObject._isFaceOpen) { To = to });
|
this.SendMessage(new SetFaceOpenMessage(AttachedObject._isFaceOpen) { To = to });
|
||||||
this.SendMessage(new SetEnabledMessage(AttachedObject.enabled) { To = to });
|
this.SendMessage(new SetEnabledMessage(AttachedObject.enabled) { To = to });
|
||||||
this.SendMessage(new VisibleForMessage(VisibleFor) { To = to });
|
foreach (var playerId in _visibleFor)
|
||||||
|
{
|
||||||
|
this.SendMessage(new SetVisibleMessage(playerId, true));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async UniTask Init(CancellationToken ct)
|
public override async UniTask Init(CancellationToken ct)
|
||||||
@ -37,17 +40,17 @@ public class QSBAlarmTotem : WorldObject<AlarmTotem>
|
|||||||
QSBPlayerManager.OnRemovePlayer -= OnPlayerLeave;
|
QSBPlayerManager.OnRemovePlayer -= OnPlayerLeave;
|
||||||
|
|
||||||
private void OnPlayerLeave(PlayerInfo player) =>
|
private void OnPlayerLeave(PlayerInfo player) =>
|
||||||
VisibleFor.QuickRemove(player.PlayerId);
|
_visibleFor.QuickRemove(player.PlayerId);
|
||||||
|
|
||||||
public void SetVisible(uint playerId, bool visible)
|
public void SetVisible(uint playerId, bool visible)
|
||||||
{
|
{
|
||||||
if (visible)
|
if (visible)
|
||||||
{
|
{
|
||||||
VisibleFor.SafeAdd(playerId);
|
_visibleFor.SafeAdd(playerId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
VisibleFor.QuickRemove(playerId);
|
_visibleFor.QuickRemove(playerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user