mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-21 00:39:53 +00:00
dream rafts: also sync projection visibility, just in case
This commit is contained in:
parent
288b4ecd17
commit
b4db474d0d
@ -15,6 +15,7 @@ public class DreamRaftManager : WorldObjectManager
|
||||
QSBWorldSync.Init<QSBDreamRaftController, DreamRaftController>();
|
||||
QSBWorldSync.Init<QSBSealRaftController, SealRaftController>();
|
||||
|
||||
QSBWorldSync.Init<QSBDreamObjectProjector, DreamObjectProjector>();
|
||||
QSBWorldSync.Init<QSBDreamRaftProjector, DreamRaftProjector>();
|
||||
QSBWorldSync.Init<QSBDreamRaftProjection, DreamRaftProjection>();
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
|
||||
public class ExtinguishImmediatelyMessage : QSBWorldObjectMessage<QSBDreamObjectProjector>
|
||||
public class ExtinguishImmediatelyMessage : QSBWorldObjectMessage<QSBDreamRaftProjector>
|
||||
{
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
|
||||
public class RespawnRaftMessage : QSBWorldObjectMessage<QSBDreamObjectProjector>
|
||||
public class RespawnRaftMessage : QSBWorldObjectMessage<QSBDreamRaftProjector>
|
||||
{
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
|
||||
public class SetLitMessage : QSBWorldObjectMessage<QSBDreamObjectProjector, bool>
|
||||
public class SetLitMessage : QSBWorldObjectMessage<QSBDreamRaftProjector, bool>
|
||||
{
|
||||
public SetLitMessage(bool data) : base(data) { }
|
||||
|
||||
|
13
QSB/EchoesOfTheEye/DreamRafts/Messages/SetVisibleMessage.cs
Normal file
13
QSB/EchoesOfTheEye/DreamRafts/Messages/SetVisibleMessage.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using QSB.EchoesOfTheEye.DreamRafts.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
|
||||
public class SetVisibleMessage : QSBWorldObjectMessage<QSBDreamRaftProjection, bool>
|
||||
{
|
||||
public SetVisibleMessage(bool data) : base(data) { }
|
||||
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetVisible(Data));
|
||||
}
|
@ -12,8 +12,8 @@ public class DreamRaftPatches : QSBPatch
|
||||
public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect;
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(DreamObjectProjector), nameof(DreamObjectProjector.SetLit))]
|
||||
private static void SetLit(DreamObjectProjector __instance,
|
||||
[HarmonyPatch(typeof(DreamRaftProjector), nameof(DreamRaftProjector.SetLit))]
|
||||
private static void SetLit(DreamRaftProjector __instance,
|
||||
bool lit)
|
||||
{
|
||||
if (Remote)
|
||||
@ -21,12 +21,17 @@ public class DreamRaftPatches : QSBPatch
|
||||
return;
|
||||
}
|
||||
|
||||
if (!QSBWorldSync.AllObjectsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (__instance._lit == lit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamObjectProjector>()
|
||||
__instance.GetWorldObject<QSBDreamRaftProjector>()
|
||||
.SendMessage(new SetLitMessage(lit));
|
||||
}
|
||||
|
||||
@ -39,7 +44,12 @@ public class DreamRaftPatches : QSBPatch
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamObjectProjector>()
|
||||
if (!QSBWorldSync.AllObjectsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamRaftProjector>()
|
||||
.SendMessage(new RespawnRaftMessage());
|
||||
}
|
||||
|
||||
@ -52,7 +62,32 @@ public class DreamRaftPatches : QSBPatch
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamObjectProjector>()
|
||||
if (!QSBWorldSync.AllObjectsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamRaftProjector>()
|
||||
.SendMessage(new ExtinguishImmediatelyMessage());
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(DreamRaftProjection), nameof(DreamRaftProjection.SetVisible))]
|
||||
[HarmonyPatch(typeof(DreamRaftProjection), nameof(DreamRaftProjection.SetVisibleImmediate))]
|
||||
private static void SetVisible(DreamRaftProjection __instance,
|
||||
bool visible)
|
||||
{
|
||||
if (Remote)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!QSBWorldSync.AllObjectsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
__instance.GetWorldObject<QSBDreamRaftProjection>()
|
||||
.SendMessage(new SetVisibleMessage(visible));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
using QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
using QSB.Messaging;
|
||||
using QSB.WorldSync;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.WorldObjects;
|
||||
|
||||
public class QSBDreamRaftProjection : WorldObject<DreamRaftProjection>
|
||||
{
|
||||
public override void SendInitialState(uint to) =>
|
||||
this.SendMessage(new SetVisibleMessage(AttachedObject._visible));
|
||||
}
|
@ -4,7 +4,7 @@ using QSB.WorldSync;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.WorldObjects;
|
||||
|
||||
public class QSBDreamObjectProjector : WorldObject<DreamObjectProjector>
|
||||
public class QSBDreamRaftProjector : WorldObject<DreamRaftProjector>
|
||||
{
|
||||
public override void SendInitialState(uint to) =>
|
||||
this.SendMessage(new SetLitMessage(AttachedObject._lit));
|
Loading…
x
Reference in New Issue
Block a user