QSBAlarmTotem: set enabled

This commit is contained in:
JohnCorby 2022-04-01 02:32:40 -07:00
parent 0fef22cbf1
commit 5d5944f020
3 changed files with 41 additions and 13 deletions

View File

@ -1,6 +1,5 @@
using QSB.EchoesOfTheEye.AlarmTotemSync.WorldObjects;
using QSB.Messaging;
using QSB.Patches;
namespace QSB.EchoesOfTheEye.AlarmTotemSync.Messages;
@ -8,10 +7,6 @@ public class SetEnabledMessage : QSBWorldObjectMessage<QSBAlarmTotem, bool>
{
public SetEnabledMessage(bool data) : base(data) { }
public override void OnReceiveRemote()
{
if ()
QSBPatch.RemoteCall(() => WorldObject.AttachedObject.set(Data));
}
public override void OnReceiveRemote() =>
WorldObject.SetEnabled(Data);
}

View File

@ -9,5 +9,37 @@ public class QSBAlarmTotem : WorldObject<AlarmTotem>
public override void SendInitialState(uint to)
{
this.SendMessage(new SetFaceOpenMessage(AttachedObject._isFaceOpen) { To = to });
this.SendMessage(new SetEnabledMessage(AttachedObject.enabled) { To = to });
}
public void SetEnabled(bool enabled)
{
if (AttachedObject.enabled == enabled)
{
return;
}
if (!enabled &&
AttachedObject._sector &&
AttachedObject._sector.ContainsOccupant(DynamicOccupant.Player))
{
// local player is in sector, do not disable
return;
}
AttachedObject.enabled = enabled;
if (!enabled)
{
AttachedObject._pulseLightController.SetIntensity(0f);
AttachedObject._simTotemMaterials[0] = AttachedObject._origSimEyeMaterial;
AttachedObject._simTotemRenderer.sharedMaterials = AttachedObject._simTotemMaterials;
AttachedObject._simVisionConeRenderer.SetColor(AttachedObject._simVisionConeRenderer.GetOriginalColor());
if (AttachedObject._isPlayerVisible)
{
AttachedObject._isPlayerVisible = false;
Locator.GetAlarmSequenceController().DecreaseAlarmCounter();
}
}
}
}

View File

@ -17,12 +17,6 @@ internal class QSBLightSensor : WorldObject<SingleLightSensor>
public void SetEnabled(bool enabled)
{
if (AttachedObject._sector && AttachedObject._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe))
{
// local player is in sector, do not disable lights
return;
}
if (enabled && !AttachedObject.enabled)
{
AttachedObject.enabled = true;
@ -34,6 +28,13 @@ internal class QSBLightSensor : WorldObject<SingleLightSensor>
}
else if (!enabled && AttachedObject.enabled)
{
if (AttachedObject._sector &&
AttachedObject._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe))
{
// local player is in sector, do not disable
return;
}
AttachedObject.enabled = false;
AttachedObject._lightDetector.GetShape().enabled = false;
if (!AttachedObject._preserveStateWhileDisabled)