mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-10 16:14:45 +00:00
enter/exit dream world message using global messenger
This commit is contained in:
parent
1e1d565be4
commit
81fad82948
@ -1,23 +1,35 @@
|
||||
using QSB.ItemSync.WorldObjects.Items;
|
||||
using JetBrains.Annotations;
|
||||
using QSB.ItemSync.WorldObjects.Items;
|
||||
using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.WorldSync;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamWorld.Messages;
|
||||
|
||||
internal class EnterDreamWorldMessage : QSBMessage<int>
|
||||
[UsedImplicitly]
|
||||
internal class EnterDreamWorldMessage : QSBWorldObjectMessage<QSBDreamLanternItem>
|
||||
{
|
||||
public EnterDreamWorldMessage(int lanternId) : base(lanternId) { }
|
||||
static EnterDreamWorldMessage()
|
||||
{
|
||||
GlobalMessenger.AddListener(OWEvents.EnterDreamWorld, () =>
|
||||
{
|
||||
if (!PlayerTransformSync.LocalInstance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Locator.GetDreamWorldController()
|
||||
.GetPlayerLantern()
|
||||
.GetWorldObject<QSBDreamLanternItem>()
|
||||
.SendMessage(new EnterDreamWorldMessage());
|
||||
});
|
||||
}
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(From);
|
||||
player.InDreamWorld = true;
|
||||
player.AssignedSimulationLantern = QSBWorldSync.GetWorldObject<QSBDreamLanternItem>(Data);
|
||||
player.AssignedSimulationLantern = WorldObject;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,30 @@
|
||||
using JetBrains.Annotations;
|
||||
using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
using QSB.Player.TransformSync;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamWorld.Messages;
|
||||
|
||||
[UsedImplicitly]
|
||||
internal class ExitDreamWorldMessage : QSBMessage
|
||||
{
|
||||
static ExitDreamWorldMessage()
|
||||
{
|
||||
GlobalMessenger.AddListener(OWEvents.ExitDreamWorld, () =>
|
||||
{
|
||||
if (!PlayerTransformSync.LocalInstance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
new ExitDreamWorldMessage().Send();
|
||||
});
|
||||
}
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(From);
|
||||
player.InDreamWorld = false;
|
||||
player.AssignedSimulationLantern = null;
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
using HarmonyLib;
|
||||
using QSB.EchoesOfTheEye.DreamWorld.Messages;
|
||||
using QSB.ItemSync.WorldObjects.Items;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.WorldSync;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamWorld.Patches;
|
||||
|
||||
internal class DreamWorldPatches : QSBPatch
|
||||
{
|
||||
public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect;
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(DreamWorldController), nameof(DreamWorldController.SpawnInDreamWorld))]
|
||||
public static void EnterDreamWorld()
|
||||
{
|
||||
var currentLantern = (DreamLanternItem)Locator.GetToolModeSwapper().GetItemCarryTool().GetHeldItem();
|
||||
var currentQSBLantern = currentLantern.GetWorldObject<QSBDreamLanternItem>();
|
||||
new EnterDreamWorldMessage(currentQSBLantern.ObjectId).Send();
|
||||
}
|
||||
}
|
@ -29,4 +29,6 @@ public static class OWEvents
|
||||
public const string ExitShip = nameof(ExitShip);
|
||||
public const string EyeStateChanged = nameof(EyeStateChanged);
|
||||
public const string FlickerOffAndOn = nameof(FlickerOffAndOn);
|
||||
public const string EnterDreamWorld = nameof(EnterDreamWorld);
|
||||
public const string ExitDreamWorld = nameof(ExitDreamWorld);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user