From 87d5c26dcb9fd55365e2f71d28c888669b76fd74 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Tue, 25 Jan 2022 21:48:52 -0800 Subject: [PATCH] use 1 world object for items --- QSB/ItemSync/ItemManager.cs | 7 +------ QSB/ItemSync/Messages/DropItemMessage.cs | 2 +- QSB/ItemSync/Messages/MoveToCarryMessage.cs | 4 ++-- QSB/ItemSync/Messages/SocketItemMessage.cs | 6 +++--- QSB/ItemSync/Patches/ItemPatches.cs | 10 ++++----- QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs | 17 --------------- .../Items/{QSBOWItem.cs => QSBItem.cs} | 21 +++++++++++-------- .../Items/QSBNomaiConversationStone.cs | 6 ------ .../WorldObjects/Items/QSBScrollItem.cs | 20 ------------------ .../WorldObjects/Items/QSBSharedStone.cs | 17 --------------- .../Items/QSBSimpleLanternItem.cs | 14 ------------- .../WorldObjects/Items/QSBSlideReelItem.cs | 14 ------------- .../WorldObjects/Items/QSBWarpCoreItem.cs | 8 ------- .../WorldObjects/Sockets/QSBItemSocket.cs | 12 +++++------ QSB/Player/PlayerInfo.cs | 2 +- QSB/Player/QSBPlayerManager.cs | 4 ++-- 16 files changed, 33 insertions(+), 131 deletions(-) delete mode 100644 QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs rename QSB/ItemSync/WorldObjects/Items/{QSBOWItem.cs => QSBItem.cs} (87%) delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs delete mode 100644 QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs diff --git a/QSB/ItemSync/ItemManager.cs b/QSB/ItemSync/ItemManager.cs index 449a33ce..531814bc 100644 --- a/QSB/ItemSync/ItemManager.cs +++ b/QSB/ItemSync/ItemManager.cs @@ -15,12 +15,7 @@ namespace QSB.ItemSync DebugLog.DebugWrite("Building OWItems...", MessageType.Info); // Items - QSBWorldSync.Init(); - QSBWorldSync.Init(); - QSBWorldSync.Init(); - QSBWorldSync.Init(); - QSBWorldSync.Init(); - QSBWorldSync.Init(); + QSBWorldSync.Init(); // Sockets QSBWorldSync.Init(); diff --git a/QSB/ItemSync/Messages/DropItemMessage.cs b/QSB/ItemSync/Messages/DropItemMessage.cs index 9e989982..af55e16c 100644 --- a/QSB/ItemSync/Messages/DropItemMessage.cs +++ b/QSB/ItemSync/Messages/DropItemMessage.cs @@ -8,7 +8,7 @@ using UnityEngine; namespace QSB.ItemSync.Messages { - internal class DropItemMessage : QSBWorldObjectMessage + internal class DropItemMessage : QSBWorldObjectMessage { private Vector3 Position; private Vector3 Normal; diff --git a/QSB/ItemSync/Messages/MoveToCarryMessage.cs b/QSB/ItemSync/Messages/MoveToCarryMessage.cs index 91ab4ad5..e20a3b52 100644 --- a/QSB/ItemSync/Messages/MoveToCarryMessage.cs +++ b/QSB/ItemSync/Messages/MoveToCarryMessage.cs @@ -4,7 +4,7 @@ using QSB.Player; namespace QSB.ItemSync.Messages { - internal class MoveToCarryMessage : QSBWorldObjectMessage + internal class MoveToCarryMessage : QSBWorldObjectMessage { public override void OnReceiveRemote() { @@ -16,7 +16,7 @@ namespace QSB.ItemSync.Messages { ItemType.Scroll => player.ScrollSocket, ItemType.SharedStone => player.SharedStoneSocket, - ItemType.WarpCore => ((QSBWarpCoreItem)WorldObject).IsVesselCoreType() + ItemType.WarpCore => ((WarpCoreItem)WorldObject.AttachedObject).IsVesselCoreType() ? player.VesselCoreSocket : player.WarpCoreSocket, ItemType.Lantern => player.SimpleLanternSocket, diff --git a/QSB/ItemSync/Messages/SocketItemMessage.cs b/QSB/ItemSync/Messages/SocketItemMessage.cs index a206ceb7..a2617081 100644 --- a/QSB/ItemSync/Messages/SocketItemMessage.cs +++ b/QSB/ItemSync/Messages/SocketItemMessage.cs @@ -39,14 +39,14 @@ namespace QSB.ItemSync.Messages public override void OnReceiveRemote() { QSBItemSocket socketWorldObject; - IQSBOWItem itemWorldObject; + QSBItem itemWorldObject; var player = QSBPlayerManager.GetPlayer(From); player.HeldItem = null; switch (Value) { case SocketMessageType.Socket: socketWorldObject = SocketId.GetWorldObject(); - itemWorldObject = ItemId.GetWorldObject(); + itemWorldObject = ItemId.GetWorldObject(); socketWorldObject.PlaceIntoSocket(itemWorldObject); return; @@ -62,7 +62,7 @@ namespace QSB.ItemSync.Messages socketWorldObject.RemoveFromSocket(); return; case SocketMessageType.CompleteUnsocket: - itemWorldObject = ItemId.GetWorldObject(); + itemWorldObject = ItemId.GetWorldObject(); itemWorldObject.OnCompleteUnsocket(); return; diff --git a/QSB/ItemSync/Patches/ItemPatches.cs b/QSB/ItemSync/Patches/ItemPatches.cs index 8ca2e0e8..32e60c1f 100644 --- a/QSB/ItemSync/Patches/ItemPatches.cs +++ b/QSB/ItemSync/Patches/ItemPatches.cs @@ -21,7 +21,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.MoveItemToCarrySocket))] public static bool ItemTool_MoveItemToCarrySocket(OWItem item) { - var qsbObj = item.GetWorldObject(); + var qsbObj = item.GetWorldObject(); QSBPlayerManager.LocalPlayer.HeldItem = qsbObj; qsbObj.SendMessage(new MoveToCarryMessage()); return true; @@ -31,7 +31,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.SocketItem))] public static bool ItemTool_SocketItem(ItemTool __instance, OWItemSocket socket) { - var qsbObj = __instance._heldItem.GetWorldObject(); + var qsbObj = __instance._heldItem.GetWorldObject(); var socketId = socket.GetWorldObject().ObjectId; var itemId = qsbObj.ObjectId; QSBPlayerManager.LocalPlayer.HeldItem = null; @@ -43,7 +43,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.StartUnsocketItem))] public static bool ItemTool_StartUnsocketItem(OWItemSocket socket) { - var item = socket.GetSocketedItem().GetWorldObject(); + var item = socket.GetSocketedItem().GetWorldObject(); QSBPlayerManager.LocalPlayer.HeldItem = item; var socketId = socket.GetWorldObject().ObjectId; new SocketItemMessage(SocketMessageType.StartUnsocket, socketId).Send(); @@ -54,7 +54,7 @@ namespace QSB.ItemSync.Patches [HarmonyPatch(typeof(ItemTool), nameof(ItemTool.CompleteUnsocketItem))] public static bool ItemTool_CompleteUnsocketItem(ItemTool __instance) { - var itemId = __instance._heldItem.GetWorldObject().ObjectId; + var itemId = __instance._heldItem.GetWorldObject().ObjectId; new SocketItemMessage(SocketMessageType.CompleteUnsocket, itemId: itemId).Send(); return true; } @@ -90,7 +90,7 @@ namespace QSB.ItemSync.Patches var parent = (customDropTarget == null) ? targetRigidbody.transform : customDropTarget.GetItemDropTargetTransform(hit.collider.gameObject); - var qsbItem = __instance._heldItem.GetWorldObject(); + var qsbItem = __instance._heldItem.GetWorldObject(); __instance._heldItem.DropItem(hit.point, hit.normal, parent, sector, customDropTarget); __instance._heldItem = null; QSBPlayerManager.LocalPlayer.HeldItem = null; diff --git a/QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs deleted file mode 100644 index 035d43c2..00000000 --- a/QSB/ItemSync/WorldObjects/Items/IQSBOWItem.cs +++ /dev/null @@ -1,17 +0,0 @@ -using QSB.WorldSync; -using UnityEngine; - -namespace QSB.ItemSync.WorldObjects.Items -{ - public interface IQSBOWItem : IWorldObject - { - ItemType GetItemType(); - void SetColliderActivation(bool active); - void SocketItem(Transform socketTransform, Sector sector); - void PickUpItem(Transform holdTransform, uint playerId); - void DropItem(Vector3 position, Vector3 normal, Sector sector); - void PlaySocketAnimation(); - void PlayUnsocketAnimation(); - void OnCompleteUnsocket(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBItem.cs similarity index 87% rename from QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs rename to QSB/ItemSync/WorldObjects/Items/QSBItem.cs index 89633f14..227011b5 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBItem.cs @@ -7,9 +7,7 @@ using UnityEngine; namespace QSB.ItemSync.WorldObjects.Items { - // todo make this one type - internal class QSBOWItem : WorldObject, IQSBOWItem - where T : OWItem + public class QSBItem : WorldObject { public QSBItemSocket InitialSocket { get; private set; } public Transform InitialParent { get; private set; } @@ -89,19 +87,19 @@ namespace QSB.ItemSync.WorldObjects.Items public void SetColliderActivation(bool active) => AttachedObject.SetColliderActivation(active); - public virtual void SocketItem(Transform socketTransform, Sector sector) + public void SocketItem(Transform socketTransform, Sector sector) { AttachedObject.SocketItem(socketTransform, sector); HoldingPlayer = 0; } - public virtual void PickUpItem(Transform holdTransform, uint playerId) + public void PickUpItem(Transform holdTransform, uint playerId) { AttachedObject.PickUpItem(holdTransform); HoldingPlayer = playerId; } - public virtual void DropItem(Vector3 position, Vector3 normal, Sector sector) + public void DropItem(Vector3 position, Vector3 normal, Sector sector) { AttachedObject.transform.SetParent(sector.transform); AttachedObject.transform.localScale = Vector3.one; @@ -115,8 +113,13 @@ namespace QSB.ItemSync.WorldObjects.Items HoldingPlayer = 0; } - public virtual void PlaySocketAnimation() { } - public virtual void PlayUnsocketAnimation() { } - public virtual void OnCompleteUnsocket() { } + public void PlaySocketAnimation() + => AttachedObject.PlaySocketAnimation(); + + public void PlayUnsocketAnimation() + => AttachedObject.PlayUnsocketAnimation(); + + public void OnCompleteUnsocket() + => AttachedObject.OnCompleteUnsocket(); } } diff --git a/QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs b/QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs deleted file mode 100644 index 05f8de45..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBNomaiConversationStone.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBNomaiConversationStone : QSBOWItem - { - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs deleted file mode 100644 index ef66c5b3..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBScrollItem : QSBOWItem - { - public override void PlaySocketAnimation() - => AttachedObject.PlaySocketAnimation(); - - public override void PlayUnsocketAnimation() - => AttachedObject.PlayUnsocketAnimation(); - - public override void OnCompleteUnsocket() - => AttachedObject.OnCompleteUnsocket(); - - public void HideNomaiText() - => AttachedObject.HideNomaiText(); - - public void ShowNomaiText() - => AttachedObject.ShowNomaiText(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs b/QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs deleted file mode 100644 index 1b10bb63..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBSharedStone : QSBOWItem - { - public override void PlaySocketAnimation() - => AttachedObject.PlaySocketAnimation(); - - public override void PlayUnsocketAnimation() - => AttachedObject.PlayUnsocketAnimation(); - - public override void OnCompleteUnsocket() - => AttachedObject.OnCompleteUnsocket(); - - public NomaiRemoteCameraPlatform.ID GetRemoteCameraID() - => AttachedObject.GetRemoteCameraID(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs deleted file mode 100644 index 782dbf3e..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBSimpleLanternItem : QSBOWItem - { - public override void PlaySocketAnimation() - => AttachedObject.PlaySocketAnimation(); - - public override void PlayUnsocketAnimation() - => AttachedObject.PlayUnsocketAnimation(); - - public override void OnCompleteUnsocket() - => AttachedObject.OnCompleteUnsocket(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs deleted file mode 100644 index ae7ceefc..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBSlideReelItem : QSBOWItem - { - public override void PlaySocketAnimation() - => AttachedObject.PlaySocketAnimation(); - - public override void PlayUnsocketAnimation() - => AttachedObject.PlayUnsocketAnimation(); - - public override void OnCompleteUnsocket() - => AttachedObject.OnCompleteUnsocket(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs deleted file mode 100644 index e82308bf..00000000 --- a/QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace QSB.ItemSync.WorldObjects.Items -{ - internal class QSBWarpCoreItem : QSBOWItem - { - public bool IsVesselCoreType() - => AttachedObject.IsVesselCoreType(); - } -} diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBItemSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBItemSocket.cs index 2fa7aae0..592f7263 100644 --- a/QSB/ItemSync/WorldObjects/Sockets/QSBItemSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBItemSocket.cs @@ -3,14 +3,14 @@ using QSB.WorldSync; namespace QSB.ItemSync.WorldObjects.Sockets { - internal class QSBItemSocket : WorldObject + public class QSBItemSocket : WorldObject { public override void SendResyncInfo(uint to) { // todo SendResyncInfo } - public bool AcceptsItem(IQSBOWItem item) + public bool AcceptsItem(QSBItem item) { var itemType = item.GetItemType(); var acceptableType = AttachedObject._acceptableType; @@ -20,10 +20,10 @@ namespace QSB.ItemSync.WorldObjects.Sockets public bool IsSocketOccupied() => AttachedObject.IsSocketOccupied(); - public bool PlaceIntoSocket(IQSBOWItem item) - => AttachedObject.PlaceIntoSocket((OWItem)item.ReturnObject()); + public bool PlaceIntoSocket(QSBItem item) + => AttachedObject.PlaceIntoSocket(item.AttachedObject); - public IQSBOWItem RemoveFromSocket() - => AttachedObject.RemoveFromSocket().GetWorldObject(); + public QSBItem RemoveFromSocket() + => AttachedObject.RemoveFromSocket().GetWorldObject(); } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index f2971807..57f9dab2 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -115,7 +115,7 @@ namespace QSB.Player public Transform VisionTorchSocket => CameraBody.transform.Find("REMOTE_VisionTorchSocket"); public QSBMarshmallow Marshmallow { get; set; } public QSBCampfire Campfire { get; set; } - public IQSBOWItem HeldItem { get; set; } + public QSBItem HeldItem { get; set; } public bool FlashlightActive { get; set; } public bool SuitedUp { get; set; } public bool ProbeLauncherEquipped { get; set; } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 3ef9a428..f105eecf 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -114,7 +114,7 @@ namespace QSB.Player return playerList.Where(x => x.IsReady && x.Body != null).OrderBy(x => Vector3.Distance(x.Body.transform.position, worldPoint)).FirstOrDefault(); } - public static IEnumerable> GetPlayerCarryItems() - => PlayerList.Select(x => new Tuple(x, x.HeldItem)); + public static IEnumerable> GetPlayerCarryItems() + => PlayerList.Select(x => new Tuple(x, x.HeldItem)); } } \ No newline at end of file