mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-11 01:13:47 +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.Messaging;
|
||||||
using QSB.Player;
|
using QSB.Player;
|
||||||
|
using QSB.Player.TransformSync;
|
||||||
using QSB.WorldSync;
|
using QSB.WorldSync;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace QSB.EchoesOfTheEye.DreamWorld.Messages;
|
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()
|
public override void OnReceiveRemote()
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(From);
|
var player = QSBPlayerManager.GetPlayer(From);
|
||||||
player.InDreamWorld = true;
|
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 ExitShip = nameof(ExitShip);
|
||||||
public const string EyeStateChanged = nameof(EyeStateChanged);
|
public const string EyeStateChanged = nameof(EyeStateChanged);
|
||||||
public const string FlickerOffAndOn = nameof(FlickerOffAndOn);
|
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