baba booey

This commit is contained in:
JohnCorby 2022-04-01 21:38:33 -07:00
parent 8b49fb0147
commit d3b08df89c
4 changed files with 17 additions and 29 deletions

View File

@ -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);
} }

View File

@ -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);
}
}

View File

@ -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));
} }
} }

View File

@ -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);
} }
} }