From b20955f24e276156701f2cddf193aa23b3402c18 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 27 May 2022 13:29:47 -0700 Subject: [PATCH] qsbLightSensor.Illuminated --- .../Patches/LightSensorPatches.cs | 27 ++++++++----------- .../WorldObjects/QSBLightSensor.cs | 8 ++++++ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs index 1c4f5f52..2cdcb27f 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs @@ -12,11 +12,6 @@ internal class LightSensorPatches : QSBPatch { public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - /// - /// its okay for this to be here. it's just temporary storage - /// - private static bool _illuminated; - [HarmonyPrefix] [HarmonyPatch(nameof(SingleLightSensor.ManagedFixedUpdate))] private static bool ManagedFixedUpdate(SingleLightSensor __instance) @@ -38,9 +33,8 @@ internal class LightSensorPatches : QSBPatch } var locallyIlluminated = qsbLightSensor.LocallyIlluminated; - var illuminated = _illuminated; + var illuminated = qsbLightSensor._illuminated; __instance.UpdateIllumination(); - __instance._illuminated = _illuminated; // temp if (!locallyIlluminated && qsbLightSensor.LocallyIlluminated) { qsbLightSensor.OnDetectLocalLight?.Invoke(); @@ -50,11 +44,12 @@ internal class LightSensorPatches : QSBPatch qsbLightSensor.OnDetectLocalDarkness?.Invoke(); } - if (!illuminated && _illuminated) + __instance._illuminated = qsbLightSensor._illuminated; + if (!illuminated && qsbLightSensor._illuminated) { __instance.OnDetectLight.Invoke(); } - else if (illuminated && !_illuminated) + else if (illuminated && !qsbLightSensor._illuminated) { __instance.OnDetectDarkness.Invoke(); } @@ -77,7 +72,7 @@ internal class LightSensorPatches : QSBPatch } qsbLightSensor.LocallyIlluminated = false; - _illuminated = false; + qsbLightSensor._illuminated = false; __instance._illuminatingDreamLanternList?.Clear(); if (__instance._lightSources == null || __instance._lightSources.Count == 0) { @@ -105,7 +100,7 @@ internal class LightSensorPatches : QSBPatch if (owlight.CheckIlluminationAtPoint(vector, __instance._sensorRadius, __instance._maxDistance) && !__instance.CheckOcclusion(owlight.transform.position, vector, sensorWorldDir, occludableLight)) { - _illuminated = true; + qsbLightSensor._illuminated = true; } break; @@ -118,7 +113,7 @@ internal class LightSensorPatches : QSBPatch && !__instance.CheckOcclusion(position, vector, sensorWorldDir)) { qsbLightSensor.LocallyIlluminated = true; - _illuminated = true; + qsbLightSensor._illuminated = true; } break; @@ -133,7 +128,7 @@ internal class LightSensorPatches : QSBPatch && !__instance.CheckOcclusion(probe.GetLightSourcePosition(), vector, sensorWorldDir)) { qsbLightSensor.LocallyIlluminated = true; - _illuminated = true; + qsbLightSensor._illuminated = true; } break; @@ -149,7 +144,7 @@ internal class LightSensorPatches : QSBPatch __instance._illuminatingDreamLanternList.Add(dreamLanternController); var dreamLanternItem = dreamLanternController.GetComponent(); qsbLightSensor.LocallyIlluminated |= QSBPlayerManager.LocalPlayer.HeldItem?.AttachedObject == dreamLanternItem; - _illuminated = true; + qsbLightSensor._illuminated = true; } break; @@ -164,14 +159,14 @@ internal class LightSensorPatches : QSBPatch { var simpleLanternItem = (SimpleLanternItem)lightSource; qsbLightSensor.LocallyIlluminated |= QSBPlayerManager.LocalPlayer.HeldItem?.AttachedObject == simpleLanternItem; - _illuminated = true; + qsbLightSensor._illuminated = true; break; } } break; case LightSourceType.VOLUME_ONLY: - _illuminated = true; + qsbLightSensor._illuminated = true; break; } } diff --git a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs index 0ec52f03..f61fb56c 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs @@ -5,10 +5,18 @@ namespace QSB.EchoesOfTheEye.LightSensorSync.WorldObjects; internal class QSBLightSensor : WorldObject { + /// + /// illuminated specifically by the player + /// public bool LocallyIlluminated; public Action OnDetectLocalLight; public Action OnDetectLocalDarkness; + /// + /// illuminated on the client (replacement for base game code) + /// + internal bool _illuminated; + public override void SendInitialState(uint to) { } }