From 266b6147fcb92eb0da146f9af8d83c822133787f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 1 Nov 2021 15:49:00 +0000 Subject: [PATCH 1/5] aaaaa --- .../NPC/Patches/CharacterAnimationPatches.cs | 6 ++-- QSB/Animation/NPC/Patches/SolanumPatches.cs | 8 ++--- QSB/CampfireSync/Patches/CampfirePatches.cs | 2 +- QSB/ElevatorSync/Patches/ElevatorPatches.cs | 2 +- QSB/ItemSync/Events/DropItemEvent.cs | 2 +- QSB/ItemSync/Events/DropItemMessage.cs | 2 +- QSB/ItemSync/Events/MoveToCarryEvent.cs | 14 +++++++- QSB/ItemSync/Events/SocketItemEvent.cs | 2 ++ QSB/ItemSync/ItemManager.cs | 33 +++++++++++-------- .../WorldObjects/{ => Items}/IQSBOWItem.cs | 2 +- .../{ => Items}/QSBNomaiConversationStone.cs | 2 +- .../WorldObjects/{ => Items}/QSBOWItem.cs | 9 ++--- .../WorldObjects/{ => Items}/QSBScrollItem.cs | 2 +- .../{ => Items}/QSBSharedStone.cs | 2 +- .../Items/QSBSimpleLanternItem.cs | 21 ++++++++++++ .../{ => Items}/QSBWarpCoreItem.cs | 2 +- .../{ => Sockets}/IQSBOWItemSocket.cs | 5 +-- .../QSBNomaiConversationStoneSocket.cs | 2 +- .../{ => Sockets}/QSBOWItemSocket.cs | 6 ++-- .../{ => Sockets}/QSBScrollSocket.cs | 2 +- .../{ => Sockets}/QSBSharedStoneSocket.cs | 2 +- .../{ => Sockets}/QSBWarpCoreSocket.cs | 2 +- QSB/Player/PlayerInfo.cs | 5 +++ QSB/Player/QSBPlayerManager.cs | 2 +- QSB/QSB.csproj | 25 +++++++------- QSB/QuantumSync/Patches/QuantumPatches.cs | 16 ++++----- QSB/QuantumSync/QuantumManager.cs | 10 +++--- .../QSBMultiStateQuantumObject.cs | 2 +- .../Events/EnterExitRoastingEvent.cs | 2 +- QSB/SectorSync/SectorSync.cs | 4 +-- .../Events/Component/ComponentDamagedEvent.cs | 2 +- .../Component/ComponentRepairTickEvent.cs | 2 +- .../Component/ComponentRepairedEvent.cs | 2 +- .../Events/Hull/HullChangeIntegrityEvent.cs | 2 +- QSB/ShipSync/Events/Hull/HullDamagedEvent.cs | 2 +- QSB/ShipSync/Events/Hull/HullImpactEvent.cs | 2 +- .../Events/Hull/HullRepairTickEvent.cs | 2 +- QSB/ShipSync/Events/Hull/HullRepairedEvent.cs | 2 +- QSB/Tools/PlayerToolsManager.cs | 24 ++++++++++++++ .../Patches/LauncherPatches.cs | 2 +- QSB/TranslationSync/Patches/SpiralPatches.cs | 6 ++-- QSB/WorldSync/QSBWorldSync.cs | 24 +++++++------- 42 files changed, 170 insertions(+), 98 deletions(-) rename QSB/ItemSync/WorldObjects/{ => Items}/IQSBOWItem.cs (91%) rename QSB/ItemSync/WorldObjects/{ => Items}/QSBNomaiConversationStone.cs (85%) rename QSB/ItemSync/WorldObjects/{ => Items}/QSBOWItem.cs (90%) rename QSB/ItemSync/WorldObjects/{ => Items}/QSBScrollItem.cs (93%) rename QSB/ItemSync/WorldObjects/{ => Items}/QSBSharedStone.cs (93%) create mode 100644 QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs rename QSB/ItemSync/WorldObjects/{ => Items}/QSBWarpCoreItem.cs (87%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/IQSBOWItemSocket.cs (66%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/QSBNomaiConversationStoneSocket.cs (85%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/QSBOWItemSocket.cs (82%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/QSBScrollSocket.cs (83%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/QSBSharedStoneSocket.cs (84%) rename QSB/ItemSync/WorldObjects/{ => Sockets}/QSBWarpCoreSocket.cs (83%) diff --git a/QSB/Animation/NPC/Patches/CharacterAnimationPatches.cs b/QSB/Animation/NPC/Patches/CharacterAnimationPatches.cs index db4b94c7..b4427279 100644 --- a/QSB/Animation/NPC/Patches/CharacterAnimationPatches.cs +++ b/QSB/Animation/NPC/Patches/CharacterAnimationPatches.cs @@ -37,7 +37,7 @@ namespace QSB.Animation.NPC.Patches var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); var player = QSBPlayerManager.GetPlayer(playerId); - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); // OPTIMIZE : maybe cache this somewhere... or assess how slow this is + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); // OPTIMIZE : maybe cache this somewhere... or assess how slow this is PlayerInfo playerToUse = null; if (____inConversation) @@ -98,7 +98,7 @@ namespace QSB.Animation.NPC.Patches [HarmonyPatch(typeof(CharacterAnimController), nameof(CharacterAnimController.OnZoneExit))] public static bool HeadZoneExit(CharacterAnimController __instance) { - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); QSBEventManager.FireEvent(EventNames.QSBExitNonNomaiHeadZone, qsbObj.ObjectId); return false; } @@ -107,7 +107,7 @@ namespace QSB.Animation.NPC.Patches [HarmonyPatch(typeof(CharacterAnimController), nameof(CharacterAnimController.OnZoneEntry))] public static bool HeadZoneEntry(CharacterAnimController __instance) { - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); QSBEventManager.FireEvent(EventNames.QSBEnterNonNomaiHeadZone, qsbObj.ObjectId); return false; } diff --git a/QSB/Animation/NPC/Patches/SolanumPatches.cs b/QSB/Animation/NPC/Patches/SolanumPatches.cs index 9b991ea1..b35a968b 100644 --- a/QSB/Animation/NPC/Patches/SolanumPatches.cs +++ b/QSB/Animation/NPC/Patches/SolanumPatches.cs @@ -28,7 +28,7 @@ namespace QSB.Animation.NPC.Patches __instance._animatorStateEvents.OnEnterState += __instance.OnEnterAnimatorState; } - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); var playersInHeadZone = qsbObj.GetPlayersInHeadZone(); var targetCamera = playersInHeadZone == null || playersInHeadZone.Count == 0 @@ -48,7 +48,7 @@ namespace QSB.Animation.NPC.Patches [HarmonyPatch(typeof(NomaiConversationManager), nameof(NomaiConversationManager.OnEnterWatchVolume))] public static bool EnterWatchZone(NomaiConversationManager __instance) { - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); QSBEventManager.FireEvent(EventNames.QSBEnterNomaiHeadZone, qsbObj.ObjectId); return false; } @@ -57,7 +57,7 @@ namespace QSB.Animation.NPC.Patches [HarmonyPatch(typeof(NomaiConversationManager), nameof(NomaiConversationManager.OnExitWatchVolume))] public static bool ExitWatchZone(NomaiConversationManager __instance) { - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); QSBEventManager.FireEvent(EventNames.QSBExitNomaiHeadZone, qsbObj.ObjectId); return false; } @@ -66,7 +66,7 @@ namespace QSB.Animation.NPC.Patches [HarmonyPatch(typeof(NomaiConversationManager), nameof(NomaiConversationManager.Update))] public static bool ReplacementUpdate(NomaiConversationManager __instance) { - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance._solanumAnimController); __instance._playerInWatchVolume = qsbObj.GetPlayersInHeadZone().Any(); if (!__instance._initialized) diff --git a/QSB/CampfireSync/Patches/CampfirePatches.cs b/QSB/CampfireSync/Patches/CampfirePatches.cs index 5dc7f0e0..3a0c8bc7 100644 --- a/QSB/CampfireSync/Patches/CampfirePatches.cs +++ b/QSB/CampfireSync/Patches/CampfirePatches.cs @@ -15,7 +15,7 @@ namespace QSB.CampfireSync.Patches [HarmonyPatch(typeof(Campfire), nameof(Campfire.OnPressInteract))] public static bool LightCampfireEvent(Campfire __instance) { - var qsbCampfire = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbCampfire = QSBWorldSync.GetWorldFromUnity(__instance); if (__instance._state == Campfire.State.LIT) { qsbCampfire.StartRoasting(); diff --git a/QSB/ElevatorSync/Patches/ElevatorPatches.cs b/QSB/ElevatorSync/Patches/ElevatorPatches.cs index 2e12063a..1b218863 100644 --- a/QSB/ElevatorSync/Patches/ElevatorPatches.cs +++ b/QSB/ElevatorSync/Patches/ElevatorPatches.cs @@ -17,7 +17,7 @@ namespace QSB.ElevatorSync.Patches public static void Elevator_StartLift(Elevator __instance) { var isGoingUp = __instance.GetValue("_goingToTheEnd"); - var id = QSBWorldSync.GetIdFromUnity(__instance); + var id = QSBWorldSync.GetIdFromUnity(__instance); QSBEventManager.FireEvent(EventNames.QSBStartLift, id, isGoingUp); } } diff --git a/QSB/ItemSync/Events/DropItemEvent.cs b/QSB/ItemSync/Events/DropItemEvent.cs index 69921945..92024fa4 100644 --- a/QSB/ItemSync/Events/DropItemEvent.cs +++ b/QSB/ItemSync/Events/DropItemEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; using QSB.Player; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/ItemSync/Events/DropItemMessage.cs b/QSB/ItemSync/Events/DropItemMessage.cs index 18f1c465..2771cc32 100644 --- a/QSB/ItemSync/Events/DropItemMessage.cs +++ b/QSB/ItemSync/Events/DropItemMessage.cs @@ -29,7 +29,7 @@ namespace QSB.ItemSync.Events writer.Write(ObjectId); writer.Write(Position); writer.Write(Normal); - var qsbSector = QSBWorldSync.GetWorldFromUnity(Sector); + var qsbSector = QSBWorldSync.GetWorldFromUnity(Sector); writer.Write(qsbSector.ObjectId); } } diff --git a/QSB/ItemSync/Events/MoveToCarryEvent.cs b/QSB/ItemSync/Events/MoveToCarryEvent.cs index de337611..6f118ad3 100644 --- a/QSB/ItemSync/Events/MoveToCarryEvent.cs +++ b/QSB/ItemSync/Events/MoveToCarryEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; using QSB.Player; using QSB.WorldSync; using QSB.WorldSync.Events; @@ -48,6 +48,18 @@ namespace QSB.ItemSync.Events ? player.VesselCoreSocket : player.WarpCoreSocket; break; + case ItemType.Lantern: + itemSocket = player.SimpleLanternSocket; + break; + case ItemType.DreamLantern: + itemSocket = player.DreamLanternSocket; + break; + case ItemType.SlideReel: + itemSocket = player.SlideReelSocket; + break; + case ItemType.VisionTorch: + itemSocket = player.VisionTorchSocket; + break; default: itemSocket = player.ItemSocket; break; diff --git a/QSB/ItemSync/Events/SocketItemEvent.cs b/QSB/ItemSync/Events/SocketItemEvent.cs index 3ab8cbe1..75e31ffb 100644 --- a/QSB/ItemSync/Events/SocketItemEvent.cs +++ b/QSB/ItemSync/Events/SocketItemEvent.cs @@ -1,5 +1,7 @@ using QSB.Events; using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; +using QSB.ItemSync.WorldObjects.Sockets; using QSB.Player; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/ItemSync/ItemManager.cs b/QSB/ItemSync/ItemManager.cs index c0cd25c1..ab11d6f1 100644 --- a/QSB/ItemSync/ItemManager.cs +++ b/QSB/ItemSync/ItemManager.cs @@ -1,5 +1,6 @@ using OWML.Common; -using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; +using QSB.ItemSync.WorldObjects.Sockets; using QSB.Utility; using QSB.WorldSync; @@ -10,14 +11,20 @@ namespace QSB.ItemSync protected override void RebuildWorldObjects(OWScene scene) { DebugLog.DebugWrite("Rebuilding OWItems...", MessageType.Info); - QSBWorldSync.Init(); + + // Items QSBWorldSync.Init(); - QSBWorldSync.Init(); QSBWorldSync.Init(); - QSBWorldSync.Init(); QSBWorldSync.Init(); - QSBWorldSync.Init(); QSBWorldSync.Init(); + QSBWorldSync.Init(); + + // Sockets + QSBWorldSync.Init(); + QSBWorldSync.Init(); + QSBWorldSync.Init(); + QSBWorldSync.Init(); + } public static IQSBOWItem GetObject(OWItem unityObject) @@ -31,19 +38,19 @@ namespace QSB.ItemSync IQSBOWItem worldObj = null; if (unityObject.GetType() == typeof(ScrollItem)) { - worldObj = QSBWorldSync.GetWorldFromUnity((ScrollItem)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((ScrollItem)unityObject); } else if (unityObject.GetType() == typeof(SharedStone)) { - worldObj = QSBWorldSync.GetWorldFromUnity((SharedStone)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((SharedStone)unityObject); } else if (unityObject.GetType() == typeof(WarpCoreItem)) { - worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreItem)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreItem)unityObject); } else if (unityObject.GetType() == typeof(NomaiConversationStone)) { - worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStone)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStone)unityObject); } else { @@ -64,19 +71,19 @@ namespace QSB.ItemSync IQSBOWItemSocket worldObj = null; if (unityObject.GetType() == typeof(ScrollSocket)) { - worldObj = QSBWorldSync.GetWorldFromUnity((ScrollSocket)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((ScrollSocket)unityObject); } else if (unityObject.GetType() == typeof(SharedStoneSocket)) { - worldObj = QSBWorldSync.GetWorldFromUnity((SharedStoneSocket)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((SharedStoneSocket)unityObject); } else if (unityObject.GetType() == typeof(WarpCoreSocket)) { - worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreSocket)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreSocket)unityObject); } else if (unityObject.GetType() == typeof(NomaiConversationStoneSocket)) { - worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStoneSocket)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStoneSocket)unityObject); } else { diff --git a/QSB/ItemSync/WorldObjects/IQSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs similarity index 91% rename from QSB/ItemSync/WorldObjects/IQSBOWItem.cs rename to QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs index 90651be4..4fc184e0 100644 --- a/QSB/ItemSync/WorldObjects/IQSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs @@ -1,7 +1,7 @@ using QSB.WorldSync; using UnityEngine; -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { public interface IQSBOWItem : IWorldObjectTypeSubset { diff --git a/QSB/ItemSync/WorldObjects/QSBNomaiConversationStone.cs b/QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs similarity index 85% rename from QSB/ItemSync/WorldObjects/QSBNomaiConversationStone.cs rename to QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs index 6230ce1a..97a2798e 100644 --- a/QSB/ItemSync/WorldObjects/QSBNomaiConversationStone.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { internal class QSBNomaiConversationStone : QSBOWItem { diff --git a/QSB/ItemSync/WorldObjects/QSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs similarity index 90% rename from QSB/ItemSync/WorldObjects/QSBOWItem.cs rename to QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs index acca3daa..f4994cb7 100644 --- a/QSB/ItemSync/WorldObjects/QSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs @@ -1,10 +1,11 @@ using OWML.Utils; +using QSB.ItemSync.WorldObjects.Sockets; using QSB.Player; using QSB.SectorSync.WorldObjects; using QSB.WorldSync; using UnityEngine; -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { internal class QSBOWItem : WorldObject, IQSBOWItem where T : OWItem @@ -21,7 +22,7 @@ namespace QSB.ItemSync.WorldObjects InitialParent = attachedObject.transform.parent; InitialPosition = attachedObject.transform.localPosition; InitialRotation = attachedObject.transform.localRotation; - InitialSector = QSBWorldSync.GetWorldFromUnity(attachedObject.GetSector()); + InitialSector = QSBWorldSync.GetWorldFromUnity(attachedObject.GetSector()); if (InitialParent.GetComponent() != null) { var qsbObj = ItemManager.GetObject(InitialParent.GetComponent()); @@ -76,10 +77,10 @@ namespace QSB.ItemSync.WorldObjects { AttachedObject.transform.SetParent(sector.transform); AttachedObject.transform.localScale = Vector3.one; - var localDropNormal = AttachedObject.GetValue("_localDropNormal"); + var localDropNormal = AttachedObject._localDropNormal; var lhs = Quaternion.FromToRotation(AttachedObject.transform.TransformDirection(localDropNormal), normal); AttachedObject.transform.rotation = lhs * AttachedObject.transform.rotation; - var localDropOffset = AttachedObject.GetValue("_localDropOffset"); + var localDropOffset = AttachedObject._localDropOffset; AttachedObject.transform.position = sector.transform.TransformPoint(position) + AttachedObject.transform.TransformDirection(localDropOffset); AttachedObject.SetSector(sector); AttachedObject.SetColliderActivation(true); diff --git a/QSB/ItemSync/WorldObjects/QSBScrollItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs similarity index 93% rename from QSB/ItemSync/WorldObjects/QSBScrollItem.cs rename to QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs index e8cc6aaf..425f980c 100644 --- a/QSB/ItemSync/WorldObjects/QSBScrollItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { internal class QSBScrollItem : QSBOWItem { diff --git a/QSB/ItemSync/WorldObjects/QSBSharedStone.cs b/QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs similarity index 93% rename from QSB/ItemSync/WorldObjects/QSBSharedStone.cs rename to QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs index 4a0ed717..fe2830f4 100644 --- a/QSB/ItemSync/WorldObjects/QSBSharedStone.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { internal class QSBSharedStone : QSBOWItem { diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs new file mode 100644 index 00000000..e226c753 --- /dev/null +++ b/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs @@ -0,0 +1,21 @@ +namespace QSB.ItemSync.WorldObjects.Items +{ + class QSBSimpleLanternItem : QSBOWItem + { + public override void Init(SimpleLanternItem attachedObject, int id) + { + ObjectId = id; + AttachedObject = attachedObject; + base.Init(attachedObject, id); + } + + public override void PlaySocketAnimation() + => AttachedObject.PlaySocketAnimation(); + + public override void PlayUnsocketAnimation() + => AttachedObject.PlayUnsocketAnimation(); + + public override void OnCompleteUnsocket() + => AttachedObject.OnCompleteUnsocket(); + } +} diff --git a/QSB/ItemSync/WorldObjects/QSBWarpCoreItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs similarity index 87% rename from QSB/ItemSync/WorldObjects/QSBWarpCoreItem.cs rename to QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs index 88e31da7..3be29380 100644 --- a/QSB/ItemSync/WorldObjects/QSBWarpCoreItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Items { internal class QSBWarpCoreItem : QSBOWItem { diff --git a/QSB/ItemSync/WorldObjects/IQSBOWItemSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/IQSBOWItemSocket.cs similarity index 66% rename from QSB/ItemSync/WorldObjects/IQSBOWItemSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/IQSBOWItemSocket.cs index 8d42f9bc..a1cc6887 100644 --- a/QSB/ItemSync/WorldObjects/IQSBOWItemSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/IQSBOWItemSocket.cs @@ -1,6 +1,7 @@ -using QSB.WorldSync; +using QSB.ItemSync.WorldObjects.Items; +using QSB.WorldSync; -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { public interface IQSBOWItemSocket : IWorldObjectTypeSubset { diff --git a/QSB/ItemSync/WorldObjects/QSBNomaiConversationStoneSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBNomaiConversationStoneSocket.cs similarity index 85% rename from QSB/ItemSync/WorldObjects/QSBNomaiConversationStoneSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/QSBNomaiConversationStoneSocket.cs index f193246b..bc48b86e 100644 --- a/QSB/ItemSync/WorldObjects/QSBNomaiConversationStoneSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBNomaiConversationStoneSocket.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBNomaiConversationStoneSocket : QSBOWItemSocket { diff --git a/QSB/ItemSync/WorldObjects/QSBOWItemSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs similarity index 82% rename from QSB/ItemSync/WorldObjects/QSBOWItemSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs index bd8321cb..2a0a588a 100644 --- a/QSB/ItemSync/WorldObjects/QSBOWItemSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs @@ -1,7 +1,7 @@ -using OWML.Utils; +using QSB.ItemSync.WorldObjects.Items; using QSB.WorldSync; -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBOWItemSocket : WorldObject, IQSBOWItemSocket where T : OWItemSocket @@ -11,7 +11,7 @@ namespace QSB.ItemSync.WorldObjects public virtual bool AcceptsItem(IQSBOWItem item) { var itemType = item.GetItemType(); - var acceptableType = AttachedObject.GetValue("_acceptableType"); + var acceptableType = AttachedObject._acceptableType; return (itemType & acceptableType) == itemType; } diff --git a/QSB/ItemSync/WorldObjects/QSBScrollSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBScrollSocket.cs similarity index 83% rename from QSB/ItemSync/WorldObjects/QSBScrollSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/QSBScrollSocket.cs index bdf15f89..79755b9d 100644 --- a/QSB/ItemSync/WorldObjects/QSBScrollSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBScrollSocket.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBScrollSocket : QSBOWItemSocket { diff --git a/QSB/ItemSync/WorldObjects/QSBSharedStoneSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBSharedStoneSocket.cs similarity index 84% rename from QSB/ItemSync/WorldObjects/QSBSharedStoneSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/QSBSharedStoneSocket.cs index 3c8341ce..357b3a0b 100644 --- a/QSB/ItemSync/WorldObjects/QSBSharedStoneSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBSharedStoneSocket.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBSharedStoneSocket : QSBOWItemSocket { diff --git a/QSB/ItemSync/WorldObjects/QSBWarpCoreSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBWarpCoreSocket.cs similarity index 83% rename from QSB/ItemSync/WorldObjects/QSBWarpCoreSocket.cs rename to QSB/ItemSync/WorldObjects/Sockets/QSBWarpCoreSocket.cs index 1c55e986..5afa4e20 100644 --- a/QSB/ItemSync/WorldObjects/QSBWarpCoreSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBWarpCoreSocket.cs @@ -1,4 +1,4 @@ -namespace QSB.ItemSync.WorldObjects +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBWarpCoreSocket : QSBOWItemSocket { diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index b5e68723..55cd806a 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -4,6 +4,7 @@ using QSB.Animation.Player.Thrusters; using QSB.CampfireSync.WorldObjects; using QSB.ClientServerStateSync; using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; using QSB.Player.TransformSync; using QSB.ProbeSync; using QSB.QuantumSync; @@ -94,6 +95,10 @@ namespace QSB.Player public Transform SharedStoneSocket => CameraBody.transform.Find("REMOTE_SharedStoneSocket"); public Transform WarpCoreSocket => CameraBody.transform.Find("REMOTE_WarpCoreSocket"); public Transform VesselCoreSocket => CameraBody.transform.Find("REMOTE_VesselCoreSocket"); + public Transform SimpleLanternSocket => CameraBody.transform.Find("REMOTE_SimpleLanternSocket"); + public Transform DreamLanternSocket => CameraBody.transform.Find("REMOTE_DreamLanternSocket"); + public Transform SlideReelSocket => CameraBody.transform.Find("REMOTE_SlideReelSocket"); + public Transform VisionTorchSocket => CameraBody.transform.Find("REMOTE_VisionTorchSocket"); public QSBMarshmallow Marshmallow { get; set; } public QSBCampfire Campfire { get; set; } public IQSBOWItem HeldItem { get; set; } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 6e7b3c66..67d8fbb4 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.ItemSync.WorldObjects; +using QSB.ItemSync.WorldObjects.Items; using QSB.Player.Events; using QSB.Player.TransformSync; using QSB.Tools; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 07dcb39e..1ed16478 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -105,6 +105,7 @@ + @@ -126,18 +127,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/QSB/QuantumSync/Patches/QuantumPatches.cs b/QSB/QuantumSync/Patches/QuantumPatches.cs index 0ebd1e96..72d0d4b8 100644 --- a/QSB/QuantumSync/Patches/QuantumPatches.cs +++ b/QSB/QuantumSync/Patches/QuantumPatches.cs @@ -40,7 +40,7 @@ namespace QSB.QuantumSync.Patches { if (WorldObjectManager.AllReady) { - var socketedWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); + var socketedWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); if (socketedWorldObject.ControllingPlayer != QSBPlayerManager.LocalPlayerId) { return false; @@ -154,8 +154,8 @@ namespace QSB.QuantumSync.Patches return; } - var objectWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); - var socketWorldObject = QSBWorldSync.GetWorldFromUnity(socket); + var objectWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); + var socketWorldObject = QSBWorldSync.GetWorldFromUnity(socket); if (objectWorldObject == null) { @@ -187,7 +187,7 @@ namespace QSB.QuantumSync.Patches QSBQuantumShuffleObject shuffleWorldObject = default; if (WorldObjectManager.AllReady) { - shuffleWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); + shuffleWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); if (shuffleWorldObject.ControllingPlayer != QSBPlayerManager.LocalPlayerId) { return false; @@ -230,7 +230,7 @@ namespace QSB.QuantumSync.Patches return true; } - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); if (qsbObj.ControllingPlayer == 0) { return true; @@ -266,7 +266,7 @@ namespace QSB.QuantumSync.Patches return true; } - var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); + var qsbObj = QSBWorldSync.GetWorldFromUnity(__instance); if (qsbObj.ControllingPlayer == 0 && qsbObj.CurrentState == -1) { return true; @@ -291,7 +291,7 @@ namespace QSB.QuantumSync.Patches } var allMultiStates = QSBWorldSync.GetWorldObjects(); - var stateObject = QSBWorldSync.GetWorldFromUnity(__instance); + var stateObject = QSBWorldSync.GetWorldFromUnity(__instance); var owner = allMultiStates.FirstOrDefault(x => x.QuantumStates.Contains(stateObject)); if (owner == default) { @@ -363,7 +363,7 @@ namespace QSB.QuantumSync.Patches [HarmonyPatch(typeof(QuantumShrine), nameof(QuantumShrine.ChangeQuantumState))] public static bool QuantumShrine_ChangeQuantumState(QuantumShrine __instance) { - var shrineWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); + var shrineWorldObject = QSBWorldSync.GetWorldFromUnity(__instance); var isInControl = shrineWorldObject.ControllingPlayer == QSBPlayerManager.LocalPlayerId; return isInControl; } diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index abf2bf20..4638b362 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -141,23 +141,23 @@ namespace QSB.QuantumSync IQSBQuantumObject worldObj = null; if (unityObject.GetType() == typeof(SocketedQuantumObject) || unityObject.GetType() == typeof(QuantumShrine)) { - worldObj = QSBWorldSync.GetWorldFromUnity((SocketedQuantumObject)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((SocketedQuantumObject)unityObject); } else if (unityObject.GetType() == typeof(MultiStateQuantumObject)) { - worldObj = QSBWorldSync.GetWorldFromUnity((MultiStateQuantumObject)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((MultiStateQuantumObject)unityObject); } else if (unityObject.GetType() == typeof(QuantumShuffleObject)) { - worldObj = QSBWorldSync.GetWorldFromUnity((QuantumShuffleObject)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((QuantumShuffleObject)unityObject); } else if (unityObject.GetType() == typeof(QuantumMoon)) { - worldObj = QSBWorldSync.GetWorldFromUnity((QuantumMoon)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((QuantumMoon)unityObject); } else if (unityObject.GetType() == typeof(EyeProxyQuantumMoon)) { - worldObj = QSBWorldSync.GetWorldFromUnity((EyeProxyQuantumMoon)unityObject); + worldObj = QSBWorldSync.GetWorldFromUnity((EyeProxyQuantumMoon)unityObject); } else { diff --git a/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs b/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs index 65e82d62..0118386e 100644 --- a/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs +++ b/QSB/QuantumSync/WorldObjects/QSBMultiStateQuantumObject.cs @@ -36,7 +36,7 @@ namespace QSB.QuantumSync.WorldObjects public override void PostInit() { - QuantumStates = AttachedObject._states.ToList().Select(x => QSBWorldSync.GetWorldFromUnity(x)).ToList(); + QuantumStates = AttachedObject._states.ToList().Select(x => QSBWorldSync.GetWorldFromUnity(x)).ToList(); if (QuantumStates.Any(x => x == null)) { diff --git a/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs b/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs index b9bdcfd3..14bdda8b 100644 --- a/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs +++ b/QSB/RoastingSync/Events/EnterExitRoastingEvent.cs @@ -31,7 +31,7 @@ namespace QSB.RoastingSync.Events return; } - var qsbObj = QSBWorldSync.GetWorldFromUnity(campfire); + var qsbObj = QSBWorldSync.GetWorldFromUnity(campfire); SendEvent(CreateMessage(qsbObj.ObjectId, roasting)); } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 2b998c98..105d85a0 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -78,7 +78,7 @@ namespace QSB.SectorSync private void AddSector(Sector sector) { - var worldObject = QSBWorldSync.GetWorldFromUnity(sector); + var worldObject = QSBWorldSync.GetWorldFromUnity(sector); if (worldObject == null) { DebugLog.ToConsole($"Error - Can't find QSBSector for sector {sector.name}!", MessageType.Error); @@ -95,7 +95,7 @@ namespace QSB.SectorSync private void RemoveSector(Sector sector) { - var worldObject = QSBWorldSync.GetWorldFromUnity(sector); + var worldObject = QSBWorldSync.GetWorldFromUnity(sector); if (worldObject == null) { DebugLog.ToConsole($"Error - Can't find QSBSector for sector {sector.name}!", MessageType.Error); diff --git a/QSB/ShipSync/Events/Component/ComponentDamagedEvent.cs b/QSB/ShipSync/Events/Component/ComponentDamagedEvent.cs index 28af746e..43f2811d 100644 --- a/QSB/ShipSync/Events/Component/ComponentDamagedEvent.cs +++ b/QSB/ShipSync/Events/Component/ComponentDamagedEvent.cs @@ -16,7 +16,7 @@ namespace QSB.ShipSync.Events.Component private WorldObjectMessage CreateMessage(ShipComponent hull) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new WorldObjectMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs b/QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs index 5578fb88..e99ef887 100644 --- a/QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs +++ b/QSB/ShipSync/Events/Component/ComponentRepairTickEvent.cs @@ -15,7 +15,7 @@ namespace QSB.ShipSync.Events.Component private RepairTickMessage CreateMessage(ShipComponent hull, float repairFraction) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new RepairTickMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Component/ComponentRepairedEvent.cs b/QSB/ShipSync/Events/Component/ComponentRepairedEvent.cs index da0fa26b..9c98789d 100644 --- a/QSB/ShipSync/Events/Component/ComponentRepairedEvent.cs +++ b/QSB/ShipSync/Events/Component/ComponentRepairedEvent.cs @@ -16,7 +16,7 @@ namespace QSB.ShipSync.Events.Component private WorldObjectMessage CreateMessage(ShipComponent hull) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new WorldObjectMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Hull/HullChangeIntegrityEvent.cs b/QSB/ShipSync/Events/Hull/HullChangeIntegrityEvent.cs index cf5c1466..3b3c6158 100644 --- a/QSB/ShipSync/Events/Hull/HullChangeIntegrityEvent.cs +++ b/QSB/ShipSync/Events/Hull/HullChangeIntegrityEvent.cs @@ -15,7 +15,7 @@ namespace QSB.ShipSync.Events.Hull private HullChangeIntegrityMessage CreateMessage(ShipHull hull, float integrity) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new HullChangeIntegrityMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Hull/HullDamagedEvent.cs b/QSB/ShipSync/Events/Hull/HullDamagedEvent.cs index 2df78b8b..bebc0cbb 100644 --- a/QSB/ShipSync/Events/Hull/HullDamagedEvent.cs +++ b/QSB/ShipSync/Events/Hull/HullDamagedEvent.cs @@ -16,7 +16,7 @@ namespace QSB.ShipSync.Events.Hull private WorldObjectMessage CreateMessage(ShipHull hull) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new WorldObjectMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Hull/HullImpactEvent.cs b/QSB/ShipSync/Events/Hull/HullImpactEvent.cs index 8ed4e243..0455cc13 100644 --- a/QSB/ShipSync/Events/Hull/HullImpactEvent.cs +++ b/QSB/ShipSync/Events/Hull/HullImpactEvent.cs @@ -15,7 +15,7 @@ namespace QSB.ShipSync.Events.Hull private HullImpactMessage CreateMessage(ShipHull hull, ImpactData data, float damage) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new HullImpactMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Hull/HullRepairTickEvent.cs b/QSB/ShipSync/Events/Hull/HullRepairTickEvent.cs index 1ff86934..522f510e 100644 --- a/QSB/ShipSync/Events/Hull/HullRepairTickEvent.cs +++ b/QSB/ShipSync/Events/Hull/HullRepairTickEvent.cs @@ -15,7 +15,7 @@ namespace QSB.ShipSync.Events.Hull private RepairTickMessage CreateMessage(ShipHull hull, float repairFraction) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new RepairTickMessage { AboutId = LocalPlayerId, diff --git a/QSB/ShipSync/Events/Hull/HullRepairedEvent.cs b/QSB/ShipSync/Events/Hull/HullRepairedEvent.cs index 2bc6e411..6f128ef0 100644 --- a/QSB/ShipSync/Events/Hull/HullRepairedEvent.cs +++ b/QSB/ShipSync/Events/Hull/HullRepairedEvent.cs @@ -16,7 +16,7 @@ namespace QSB.ShipSync.Events.Hull private WorldObjectMessage CreateMessage(ShipHull hull) { - var worldObject = QSBWorldSync.GetWorldFromUnity(hull); + var worldObject = QSBWorldSync.GetWorldFromUnity(hull); return new WorldObjectMessage { AboutId = LocalPlayerId, diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 321e9c42..3d42cbba 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -212,6 +212,30 @@ namespace QSB.Tools vesselCore.transform.localPosition = new Vector3(0.177f, -0.106f, 0.2f); vesselCore.transform.localRotation = Quaternion.Euler(3.142f, 14.827f, 12.094f); vesselCore.transform.localScale = new Vector3(0.27f, 0.27f, 0.27f); + + var simpleLantern = new GameObject("REMOTE_SimpleLanternSocket"); + simpleLantern.transform.parent = cameraBody; + simpleLantern.transform.localPosition = new Vector3(0.242997f, -0.18f, 0.2620007f); + simpleLantern.transform.localRotation = Quaternion.Euler(0f, 33f, 0f); + simpleLantern.transform.localScale = new Vector3(0.33f, 0.33f, 0.33f); + + var dreamLantern = new GameObject("REMOTE_DreamLanternSocket"); + dreamLantern.transform.parent = cameraBody; + dreamLantern.transform.localPosition = new Vector3(0.243f, -0.207f, 0.262f); + dreamLantern.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); + dreamLantern.transform.localScale = new Vector3(0.33f, 0.33f, 0.33f); + + var slideReel = new GameObject("REMOTE_SlideReelSocket"); + slideReel.transform.parent = cameraBody; + slideReel.transform.localPosition = new Vector3(0.1353f, -0.0878f, 0.2878f); + slideReel.transform.localRotation = Quaternion.Euler(-145.532f, 6.589996f, -94.54901f); + slideReel.transform.localScale = new Vector3(0.3300001f, 0.33f, 0.3299999f); + + var visionTorch = new GameObject("REMOTE_VisionTorchSocket"); + visionTorch.transform.parent = cameraBody; + visionTorch.transform.localPosition = new Vector3(0.21f, -0.32f, 0.33f); + visionTorch.transform.localRotation = Quaternion.Euler(-4.5f, 0.03f, 9f); + visionTorch.transform.localScale = new Vector3(0.33f, 0.33f, 0.33f); } private static void CreateFlashlight(Transform cameraBody) diff --git a/QSB/Tools/ProbeLauncherTool/Patches/LauncherPatches.cs b/QSB/Tools/ProbeLauncherTool/Patches/LauncherPatches.cs index f1427d25..c96b8506 100644 --- a/QSB/Tools/ProbeLauncherTool/Patches/LauncherPatches.cs +++ b/QSB/Tools/ProbeLauncherTool/Patches/LauncherPatches.cs @@ -53,7 +53,7 @@ namespace QSB.Tools.ProbeLauncherTool.Patches if (__instance != QSBPlayerManager.LocalPlayer.LocalProbeLauncher) { - QSBEventManager.FireEvent(EventNames.QSBRetrieveProbe, QSBWorldSync.GetWorldFromUnity(__instance), playEffects); + QSBEventManager.FireEvent(EventNames.QSBRetrieveProbe, QSBWorldSync.GetWorldFromUnity(__instance), playEffects); } else { diff --git a/QSB/TranslationSync/Patches/SpiralPatches.cs b/QSB/TranslationSync/Patches/SpiralPatches.cs index 788366b0..fab722dc 100644 --- a/QSB/TranslationSync/Patches/SpiralPatches.cs +++ b/QSB/TranslationSync/Patches/SpiralPatches.cs @@ -23,7 +23,7 @@ namespace QSB.TranslationSync.Patches QSBEventManager.FireEvent( EventNames.QSBTextTranslated, NomaiTextType.WallText, - QSBWorldSync.GetIdFromUnity(__instance), + QSBWorldSync.GetIdFromUnity(__instance), id); return true; } @@ -40,7 +40,7 @@ namespace QSB.TranslationSync.Patches QSBEventManager.FireEvent( EventNames.QSBTextTranslated, NomaiTextType.Computer, - QSBWorldSync.GetIdFromUnity(__instance), + QSBWorldSync.GetIdFromUnity(__instance), id); return true; } @@ -57,7 +57,7 @@ namespace QSB.TranslationSync.Patches QSBEventManager.FireEvent( EventNames.QSBTextTranslated, NomaiTextType.VesselComputer, - QSBWorldSync.GetIdFromUnity(__instance), + QSBWorldSync.GetIdFromUnity(__instance), id); return true; } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index ed30a1c3..cf9d3f5f 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -33,9 +33,8 @@ namespace QSB.WorldSync return GetWorldObjects().ToList()[id]; } - public static TWorldObject GetWorldFromUnity(TUnityObject unityObject) - where TWorldObject : WorldObject - where TUnityObject : MonoBehaviour + public static TWorldObject GetWorldFromUnity(MonoBehaviour unityObject) + where TWorldObject : IWorldObject { if (!WorldObjectManager.AllReady) { @@ -44,37 +43,36 @@ namespace QSB.WorldSync if (unityObject == null) { - DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{typeof(TUnityObject).Name}", MessageType.Error); + DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:NULL", MessageType.Error); return default; } if (!QSBCore.IsInMultiplayer) { - DebugLog.ToConsole($"Warning - Trying to run GetWorldFromUnity while not in multiplayer! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{typeof(TUnityObject).Name}", MessageType.Warning); + DebugLog.ToConsole($"Warning - Trying to run GetWorldFromUnity while not in multiplayer! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{unityObject.GetType().Name}", MessageType.Warning); return default; } if (!WorldObjectsToUnityObjects.ContainsKey(unityObject)) { - DebugLog.ToConsole($"Error - WorldObjectsToUnityObjects does not contain \"{unityObject.name}\"! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{typeof(TUnityObject).Name}", MessageType.Error); + DebugLog.ToConsole($"Error - WorldObjectsToUnityObjects does not contain \"{unityObject.name}\"! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{unityObject.GetType().Name}", MessageType.Error); return default; } - var returnObject = WorldObjectsToUnityObjects[unityObject] as TWorldObject; + var returnObject = (TWorldObject)WorldObjectsToUnityObjects[unityObject]; - if (returnObject == default || returnObject == null) + if (returnObject == null) { - DebugLog.ToConsole($"Error - World object for unity object {unityObject.name} is null! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{typeof(TUnityObject).Name}", MessageType.Error); + DebugLog.ToConsole($"Error - World object for unity object {unityObject.name} is null! TWorldObject:{typeof(TWorldObject).Name}, TUnityObject:{unityObject.GetType().Name}", MessageType.Error); return default; } return returnObject; } - public static int GetIdFromUnity(TUnityObject unityObject) - where TWorldObject : WorldObject - where TUnityObject : MonoBehaviour - => GetWorldFromUnity(unityObject).ObjectId; + public static int GetIdFromUnity(MonoBehaviour unityObject) + where TWorldObject : IWorldObject + => GetWorldFromUnity(unityObject).ObjectId; public static int GetIdFromTypeSubset(TTypeSubset typeSubset) { From 169a65a60e1816bc9253109ac373fb80446c35c8 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 1 Nov 2021 19:51:37 +0000 Subject: [PATCH 2/5] add new overload to GetWorldFromUnity --- QSB/WorldSync/QSBWorldSync.cs | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index cf9d3f5f..982a4bb6 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -33,6 +33,42 @@ namespace QSB.WorldSync return GetWorldObjects().ToList()[id]; } + public static IWorldObject GetWorldFromUnity(MonoBehaviour unityObject) + { + if (!WorldObjectManager.AllReady) + { + return default; + } + + if (unityObject == null) + { + DebugLog.ToConsole($"Error - Trying to run GetWorldFromUnity with a null unity object! TUnityObject:NULL", MessageType.Error); + return default; + } + + if (!QSBCore.IsInMultiplayer) + { + DebugLog.ToConsole($"Warning - Trying to run GetWorldFromUnity while not in multiplayer! TUnityObject:{unityObject.GetType().Name}", MessageType.Warning); + return default; + } + + if (!WorldObjectsToUnityObjects.ContainsKey(unityObject)) + { + DebugLog.ToConsole($"Error - WorldObjectsToUnityObjects does not contain \"{unityObject.name}\"! TUnityObject:{unityObject.GetType().Name}", MessageType.Error); + return default; + } + + var returnObject = WorldObjectsToUnityObjects[unityObject]; + + if (returnObject == null) + { + DebugLog.ToConsole($"Error - World object for unity object {unityObject.name} is null! TUnityObject:{unityObject.GetType().Name}", MessageType.Error); + return default; + } + + return (IWorldObject)returnObject; + } + public static TWorldObject GetWorldFromUnity(MonoBehaviour unityObject) where TWorldObject : IWorldObject { From a6d0780975c3321aa472b827fe3e859312fa8459 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 1 Nov 2021 19:51:53 +0000 Subject: [PATCH 3/5] simplify itemmanager (remove GetObject) --- QSB/ItemSync/ItemManager.cs | 67 ------------------- QSB/ItemSync/Patches/ItemPatches.cs | 16 +++-- QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs | 2 +- .../WorldObjects/Sockets/QSBOWItemSocket.cs | 2 +- 4 files changed, 11 insertions(+), 76 deletions(-) diff --git a/QSB/ItemSync/ItemManager.cs b/QSB/ItemSync/ItemManager.cs index ab11d6f1..43843877 100644 --- a/QSB/ItemSync/ItemManager.cs +++ b/QSB/ItemSync/ItemManager.cs @@ -24,73 +24,6 @@ namespace QSB.ItemSync QSBWorldSync.Init(); QSBWorldSync.Init(); QSBWorldSync.Init(); - - } - - public static IQSBOWItem GetObject(OWItem unityObject) - { - if (unityObject == null) - { - DebugLog.ToConsole($"Error - Trying to run GetObject (Item) with null unity object!", MessageType.Error); - return default; - } - - IQSBOWItem worldObj = null; - if (unityObject.GetType() == typeof(ScrollItem)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((ScrollItem)unityObject); - } - else if (unityObject.GetType() == typeof(SharedStone)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((SharedStone)unityObject); - } - else if (unityObject.GetType() == typeof(WarpCoreItem)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreItem)unityObject); - } - else if (unityObject.GetType() == typeof(NomaiConversationStone)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStone)unityObject); - } - else - { - DebugLog.ToConsole($"Warning - couldn't work out type of OWItem {unityObject.name}.", MessageType.Warning); - } - - return worldObj; - } - - public static IQSBOWItemSocket GetObject(OWItemSocket unityObject) - { - if (unityObject == null) - { - DebugLog.ToConsole($"Error - Trying to run GetObject (Socket) with null unity object!", MessageType.Error); - return default; - } - - IQSBOWItemSocket worldObj = null; - if (unityObject.GetType() == typeof(ScrollSocket)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((ScrollSocket)unityObject); - } - else if (unityObject.GetType() == typeof(SharedStoneSocket)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((SharedStoneSocket)unityObject); - } - else if (unityObject.GetType() == typeof(WarpCoreSocket)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((WarpCoreSocket)unityObject); - } - else if (unityObject.GetType() == typeof(NomaiConversationStoneSocket)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((NomaiConversationStoneSocket)unityObject); - } - else - { - DebugLog.ToConsole($"Warning - couldn't work out type of OWItemSocket {unityObject.name}.", MessageType.Warning); - } - - return worldObj; } } } diff --git a/QSB/ItemSync/Patches/ItemPatches.cs b/QSB/ItemSync/Patches/ItemPatches.cs index 04c4c6cc..f9d6edeb 100644 --- a/QSB/ItemSync/Patches/ItemPatches.cs +++ b/QSB/ItemSync/Patches/ItemPatches.cs @@ -1,6 +1,8 @@ using HarmonyLib; using OWML.Common; using QSB.Events; +using QSB.ItemSync.WorldObjects.Items; +using QSB.ItemSync.WorldObjects.Sockets; using QSB.Patches; using QSB.Player; using QSB.Utility; @@ -18,7 +20,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.MoveItemToCarrySocket))] public static bool ItemTool_MoveItemToCarrySocket(OWItem item) { - var qsbObj = ItemManager.GetObject(item); + var qsbObj = (IQSBOWItem)QSBWorldSync.GetWorldFromUnity(item); var itemId = QSBWorldSync.GetIdFromTypeSubset(qsbObj); QSBPlayerManager.LocalPlayer.HeldItem = qsbObj; QSBEventManager.FireEvent(EventNames.QSBMoveToCarry, itemId); @@ -29,8 +31,8 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.SocketItem))] public static bool ItemTool_SocketItem(OWItem ____heldItem, OWItemSocket socket) { - var qsbObj = ItemManager.GetObject(____heldItem); - var socketId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(socket)); + var qsbObj = (IQSBOWItem)QSBWorldSync.GetWorldFromUnity(____heldItem); + var socketId = QSBWorldSync.GetIdFromTypeSubset((IQSBOWItemSocket)QSBWorldSync.GetWorldFromUnity(socket)); var itemId = QSBWorldSync.GetIdFromTypeSubset(qsbObj); QSBPlayerManager.LocalPlayer.HeldItem = null; QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, itemId, SocketEventType.Socket); @@ -41,9 +43,9 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.StartUnsocketItem))] public static bool ItemTool_StartUnsocketItem(OWItemSocket socket) { - var item = ItemManager.GetObject(socket.GetSocketedItem()); + var item = (IQSBOWItem)QSBWorldSync.GetWorldFromUnity(socket.GetSocketedItem()); QSBPlayerManager.LocalPlayer.HeldItem = item; - var socketId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(socket)); + var socketId = QSBWorldSync.GetIdFromTypeSubset((IQSBOWItemSocket)QSBWorldSync.GetWorldFromUnity(socket)); QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, 0, SocketEventType.StartUnsocket); return true; } @@ -52,7 +54,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.CompleteUnsocketItem))] public static bool ItemTool_CompleteUnsocketItem(OWItem ____heldItem) { - var itemId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem)); + var itemId = QSBWorldSync.GetIdFromTypeSubset((IQSBOWItem)QSBWorldSync.GetWorldFromUnity(____heldItem)); QSBEventManager.FireEvent(EventNames.QSBSocketItem, 0, itemId, SocketEventType.CompleteUnsocket); return true; } @@ -88,7 +90,7 @@ namespace QSB.ItemSync.Patches var parent = (customDropTarget == null) ? targetRigidbody.transform : customDropTarget.GetItemDropTargetTransform(hit.collider.gameObject); - var objectId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem)); + var objectId = QSBWorldSync.GetIdFromTypeSubset((IQSBOWItem)QSBWorldSync.GetWorldFromUnity(____heldItem)); ____heldItem.DropItem(hit.point, hit.normal, parent, sector, customDropTarget); ____heldItem = null; QSBPlayerManager.LocalPlayer.HeldItem = null; diff --git a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs index f4994cb7..6e9a19c6 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs @@ -25,7 +25,7 @@ namespace QSB.ItemSync.WorldObjects.Items InitialSector = QSBWorldSync.GetWorldFromUnity(attachedObject.GetSector()); if (InitialParent.GetComponent() != null) { - var qsbObj = ItemManager.GetObject(InitialParent.GetComponent()); + var qsbObj = (IQSBOWItemSocket)QSBWorldSync.GetWorldFromUnity(InitialParent.GetComponent()); InitialSocket = qsbObj; } diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs index 2a0a588a..545e8ca1 100644 --- a/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemSocket.cs @@ -22,6 +22,6 @@ namespace QSB.ItemSync.WorldObjects.Sockets => AttachedObject.PlaceIntoSocket((OWItem)(item as IWorldObject).ReturnObject()); public virtual IQSBOWItem RemoveFromSocket() - => ItemManager.GetObject(AttachedObject.RemoveFromSocket()); + => (IQSBOWItem)QSBWorldSync.GetWorldFromUnity(AttachedObject.RemoveFromSocket()); } } From 8e6fc71c90cc4503400e88aaae753a8077a9c9db Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 1 Nov 2021 20:20:28 +0000 Subject: [PATCH 4/5] remove quantummanager.getobject --- QSB/Player/PlayerEntanglementWatcher.cs | 2 +- QSB/QuantumSync/QuantumManager.cs | 33 +------------------------ 2 files changed, 2 insertions(+), 33 deletions(-) diff --git a/QSB/Player/PlayerEntanglementWatcher.cs b/QSB/Player/PlayerEntanglementWatcher.cs index 77479a1a..8fa44700 100644 --- a/QSB/Player/PlayerEntanglementWatcher.cs +++ b/QSB/Player/PlayerEntanglementWatcher.cs @@ -27,7 +27,7 @@ namespace QSB.Player if (_previousCollidingQuantumObject != collidingQuantumObject) { var objectIndex = (collidingQuantumObject != null) - ? QSBWorldSync.GetIdFromTypeSubset(QuantumManager.GetObject(collidingQuantumObject)) + ? QSBWorldSync.GetIdFromTypeSubset((IQSBQuantumObject)QSBWorldSync.GetWorldFromUnity(collidingQuantumObject)) : -1; QSBEventManager.FireEvent( diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index 4638b362..4bc544b0 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -132,39 +132,8 @@ namespace QSB.QuantumSync return Enumerable.Empty(); } - var worldObj = GetObject(obj); + var worldObj = (IQSBQuantumObject)QSBWorldSync.GetWorldFromUnity(obj); return QSBPlayerManager.PlayerList.Where(x => x.EntangledObject == worldObj); } - - public static IQSBQuantumObject GetObject(QuantumObject unityObject) - { - IQSBQuantumObject worldObj = null; - if (unityObject.GetType() == typeof(SocketedQuantumObject) || unityObject.GetType() == typeof(QuantumShrine)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((SocketedQuantumObject)unityObject); - } - else if (unityObject.GetType() == typeof(MultiStateQuantumObject)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((MultiStateQuantumObject)unityObject); - } - else if (unityObject.GetType() == typeof(QuantumShuffleObject)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((QuantumShuffleObject)unityObject); - } - else if (unityObject.GetType() == typeof(QuantumMoon)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((QuantumMoon)unityObject); - } - else if (unityObject.GetType() == typeof(EyeProxyQuantumMoon)) - { - worldObj = QSBWorldSync.GetWorldFromUnity((EyeProxyQuantumMoon)unityObject); - } - else - { - DebugLog.ToConsole($"Warning - couldn't work out type of QuantumObject {unityObject.name}.", MessageType.Warning); - } - - return worldObj; - } } } \ No newline at end of file From d1e45d7adbf1f1a473d049e73945efcb14c508bf Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 1 Nov 2021 20:58:10 +0000 Subject: [PATCH 5/5] add some dlc stuffz --- QSB/ItemSync/ItemManager.cs | 3 +++ QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs | 15 ++++++++++- .../WorldObjects/Items/QSBSlideReelItem.cs | 21 +++++++++++++++ .../Sockets/QSBOWItemDoubleSocket.cs | 27 +++++++++++++++++++ .../Sockets/QSBSlideProjectorSocket.cs | 17 ++++++++++++ .../Sockets/QSBSlideReelSocket.cs | 17 ++++++++++++ QSB/QSB.csproj | 4 +++ 7 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs create mode 100644 QSB/ItemSync/WorldObjects/Sockets/QSBOWItemDoubleSocket.cs create mode 100644 QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs create mode 100644 QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs diff --git a/QSB/ItemSync/ItemManager.cs b/QSB/ItemSync/ItemManager.cs index 43843877..55f43a26 100644 --- a/QSB/ItemSync/ItemManager.cs +++ b/QSB/ItemSync/ItemManager.cs @@ -18,12 +18,15 @@ namespace QSB.ItemSync QSBWorldSync.Init(); QSBWorldSync.Init(); QSBWorldSync.Init(); + QSBWorldSync.Init(); // Sockets QSBWorldSync.Init(); QSBWorldSync.Init(); QSBWorldSync.Init(); QSBWorldSync.Init(); + QSBWorldSync.Init(); + QSBWorldSync.Init(); } } } diff --git a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs index 6e9a19c6..30416680 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs @@ -2,6 +2,7 @@ using QSB.ItemSync.WorldObjects.Sockets; using QSB.Player; using QSB.SectorSync.WorldObjects; +using QSB.Utility; using QSB.WorldSync; using UnityEngine; @@ -19,11 +20,23 @@ namespace QSB.ItemSync.WorldObjects.Items public override void Init(T attachedObject, int id) { + if (attachedObject == null) + { + DebugLog.ToConsole($"Error - AttachedObject is null! Type:{GetType().Name}", OWML.Common.MessageType.Error); + return; + } + InitialParent = attachedObject.transform.parent; InitialPosition = attachedObject.transform.localPosition; InitialRotation = attachedObject.transform.localRotation; InitialSector = QSBWorldSync.GetWorldFromUnity(attachedObject.GetSector()); - if (InitialParent.GetComponent() != null) + + if (InitialParent == null) + { + DebugLog.ToConsole($"Warning - InitialParent of {attachedObject.name} is null!", OWML.Common.MessageType.Warning); + } + + if (InitialParent?.GetComponent() != null) { var qsbObj = (IQSBOWItemSocket)QSBWorldSync.GetWorldFromUnity(InitialParent.GetComponent()); InitialSocket = qsbObj; diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs new file mode 100644 index 00000000..dd49c7e0 --- /dev/null +++ b/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs @@ -0,0 +1,21 @@ +namespace QSB.ItemSync.WorldObjects.Items +{ + class QSBSlideReelItem : QSBOWItem + { + public override void Init(SlideReelItem attachedObject, int id) + { + ObjectId = id; + AttachedObject = attachedObject; + base.Init(attachedObject, id); + } + + public override void PlaySocketAnimation() + => AttachedObject.PlaySocketAnimation(); + + public override void PlayUnsocketAnimation() + => AttachedObject.PlayUnsocketAnimation(); + + public override void OnCompleteUnsocket() + => AttachedObject.OnCompleteUnsocket(); + } +} diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemDoubleSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemDoubleSocket.cs new file mode 100644 index 00000000..7ca06e54 --- /dev/null +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBOWItemDoubleSocket.cs @@ -0,0 +1,27 @@ +using QSB.ItemSync.WorldObjects.Items; +using QSB.WorldSync; + +namespace QSB.ItemSync.WorldObjects.Sockets +{ + internal class QSBOWItemDoubleSocket : WorldObject, IQSBOWItemSocket + where T : OWItemSocket + { + public override void Init(T attachedObject, int id) { } + + public virtual bool AcceptsItem(IQSBOWItem item) + { + var itemType = item.GetItemType(); + var acceptableType = AttachedObject._acceptableType; + return (itemType & acceptableType) == itemType; + } + + public virtual bool IsSocketOccupied() + => AttachedObject.IsSocketOccupied(); + + public virtual bool PlaceIntoSocket(IQSBOWItem item) + => AttachedObject.PlaceIntoSocket((OWItem)(item as IWorldObject).ReturnObject()); + + public virtual IQSBOWItem RemoveFromSocket() + => (IQSBOWItem)QSBWorldSync.GetWorldFromUnity(AttachedObject.RemoveFromSocket()); + } +} diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs new file mode 100644 index 00000000..39f7c977 --- /dev/null +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.ItemSync.WorldObjects.Sockets +{ + internal class QSBSlideProjectorSocket : QSBOWItemDoubleSocket + { + public override void Init(SlideProjectorSocket attachedObject, int id) + { + ObjectId = id; + AttachedObject = attachedObject; + base.Init(attachedObject, id); + } + } +} diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs new file mode 100644 index 00000000..a7e8ec0e --- /dev/null +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.ItemSync.WorldObjects.Sockets +{ + internal class QSBSlideReelSocket : QSBOWItemSocket + { + public override void Init(SlideReelSocket attachedObject, int id) + { + ObjectId = id; + AttachedObject = attachedObject; + base.Init(attachedObject, id); + } + } +} diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 1ed16478..79e1b2b9 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -106,6 +106,10 @@ + + + +