mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-21 18:40:03 +00:00
un-consolidate QSBItem
This commit is contained in:
parent
779cf15022
commit
43387d5c63
@ -15,7 +15,14 @@ namespace QSB.ItemSync
|
||||
DebugLog.DebugWrite("Building OWItems...", MessageType.Info);
|
||||
|
||||
// Items
|
||||
QSBWorldSync.Init<QSBItem, OWItem>();
|
||||
QSBWorldSync.Init<QSBDreamLanternItem, DreamLanternItem>();
|
||||
QSBWorldSync.Init<QSBNomaiConversationStone, NomaiConversationStone>();
|
||||
QSBWorldSync.Init<QSBScrollItem, ScrollItem>();
|
||||
QSBWorldSync.Init<QSBSharedStone, SharedStone>();
|
||||
QSBWorldSync.Init<QSBSimpleLanternItem, SimpleLanternItem>();
|
||||
QSBWorldSync.Init<QSBSlideReelItem, SlideReelItem>();
|
||||
QSBWorldSync.Init<QSBVisionTorchItem, VisionTorchItem>();
|
||||
QSBWorldSync.Init<QSBWarpCoreItem, WarpCoreItem>();
|
||||
|
||||
// Sockets
|
||||
QSBWorldSync.Init<QSBItemSocket, OWItemSocket>();
|
||||
|
@ -8,7 +8,7 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.ItemSync.Messages
|
||||
{
|
||||
internal class DropItemMessage : QSBWorldObjectMessage<QSBItem>
|
||||
internal class DropItemMessage : QSBWorldObjectMessage<IQSBItem>
|
||||
{
|
||||
private Vector3 Position;
|
||||
private Vector3 Normal;
|
||||
|
@ -4,7 +4,7 @@ using QSB.Player;
|
||||
|
||||
namespace QSB.ItemSync.Messages
|
||||
{
|
||||
internal class MoveToCarryMessage : QSBWorldObjectMessage<QSBItem>
|
||||
internal class MoveToCarryMessage : QSBWorldObjectMessage<IQSBItem>
|
||||
{
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
@ -16,7 +16,7 @@ namespace QSB.ItemSync.Messages
|
||||
{
|
||||
ItemType.Scroll => player.ScrollSocket,
|
||||
ItemType.SharedStone => player.SharedStoneSocket,
|
||||
ItemType.WarpCore => ((WarpCoreItem)WorldObject.AttachedObject).IsVesselCoreType()
|
||||
ItemType.WarpCore => ((QSBWarpCoreItem)WorldObject).IsVesselCoreType()
|
||||
? player.VesselCoreSocket
|
||||
: player.WarpCoreSocket,
|
||||
ItemType.Lantern => player.SimpleLanternSocket,
|
||||
|
@ -39,14 +39,14 @@ namespace QSB.ItemSync.Messages
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
QSBItemSocket socketWorldObject;
|
||||
QSBItem itemWorldObject;
|
||||
IQSBItem itemWorldObject;
|
||||
var player = QSBPlayerManager.GetPlayer(From);
|
||||
player.HeldItem = null;
|
||||
switch (Value)
|
||||
{
|
||||
case SocketMessageType.Socket:
|
||||
socketWorldObject = SocketId.GetWorldObject<QSBItemSocket>();
|
||||
itemWorldObject = ItemId.GetWorldObject<QSBItem>();
|
||||
itemWorldObject = ItemId.GetWorldObject<IQSBItem>();
|
||||
|
||||
socketWorldObject.PlaceIntoSocket(itemWorldObject);
|
||||
return;
|
||||
@ -62,7 +62,7 @@ namespace QSB.ItemSync.Messages
|
||||
socketWorldObject.RemoveFromSocket();
|
||||
return;
|
||||
case SocketMessageType.CompleteUnsocket:
|
||||
itemWorldObject = ItemId.GetWorldObject<QSBItem>();
|
||||
itemWorldObject = ItemId.GetWorldObject<IQSBItem>();
|
||||
|
||||
itemWorldObject.OnCompleteUnsocket();
|
||||
return;
|
||||
|
@ -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<QSBItem>();
|
||||
var qsbObj = item.GetWorldObject<IQSBItem>();
|
||||
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<QSBItem>();
|
||||
var qsbObj = __instance._heldItem.GetWorldObject<IQSBItem>();
|
||||
var socketId = socket.GetWorldObject<QSBItemSocket>().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<QSBItem>();
|
||||
var item = socket.GetSocketedItem().GetWorldObject<IQSBItem>();
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = item;
|
||||
var socketId = socket.GetWorldObject<QSBItemSocket>().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<QSBItem>().ObjectId;
|
||||
var itemId = __instance._heldItem.GetWorldObject<IQSBItem>().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<QSBItem>();
|
||||
var IQSBItem = __instance._heldItem.GetWorldObject<IQSBItem>();
|
||||
__instance._heldItem.DropItem(hit.point, hit.normal, parent, sector, customDropTarget);
|
||||
__instance._heldItem = null;
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = null;
|
||||
@ -99,7 +99,7 @@ namespace QSB.ItemSync.Patches
|
||||
if (parentSector != null)
|
||||
{
|
||||
var localPos = parentSector.transform.InverseTransformPoint(hit.point);
|
||||
qsbItem.SendMessage(new DropItemMessage(localPos, hit.normal, parentSector));
|
||||
IQSBItem.SendMessage(new DropItemMessage(localPos, hit.normal, parentSector));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
13
QSB/ItemSync/WorldObjects/Items/IQSBItem.cs
Normal file
13
QSB/ItemSync/WorldObjects/Items/IQSBItem.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using QSB.WorldSync;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
public interface IQSBItem : IWorldObject
|
||||
{
|
||||
ItemType GetItemType();
|
||||
void PickUpItem(Transform itemSocket);
|
||||
void DropItem(Vector3 position, Vector3 normal, Sector sector);
|
||||
void OnCompleteUnsocket();
|
||||
}
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBDreamLanternItem.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBDreamLanternItem.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBDreamLanternItem : QSBItem<DreamLanternItem> { }
|
||||
}
|
@ -7,7 +7,8 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
public class QSBItem : WorldObject<OWItem>
|
||||
internal class QSBItem<T> : WorldObject<T>, IQSBItem
|
||||
where T : OWItem
|
||||
{
|
||||
private QSBItemSocket InitialSocket { get; set; }
|
||||
private Transform InitialParent { get; set; }
|
||||
|
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBNomaiConversationStone : QSBItem<NomaiConversationStone> { }
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBScrollItem.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBScrollItem : QSBItem<ScrollItem> { }
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBSharedStone.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSharedStone : QSBItem<SharedStone> { }
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSimpleLanternItem : QSBItem<SimpleLanternItem> { }
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSlideReelItem : QSBItem<SlideReelItem> { }
|
||||
}
|
4
QSB/ItemSync/WorldObjects/Items/QSBVisionTorchItem.cs
Normal file
4
QSB/ItemSync/WorldObjects/Items/QSBVisionTorchItem.cs
Normal file
@ -0,0 +1,4 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBVisionTorchItem : QSBItem<VisionTorchItem> { }
|
||||
}
|
7
QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs
Normal file
7
QSB/ItemSync/WorldObjects/Items/QSBWarpCoreItem.cs
Normal file
@ -0,0 +1,7 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBWarpCoreItem : QSBItem<WarpCoreItem>
|
||||
{
|
||||
public bool IsVesselCoreType() => AttachedObject.IsVesselCoreType();
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@ using QSB.WorldSync;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Sockets
|
||||
{
|
||||
public class QSBItemSocket : WorldObject<OWItemSocket>
|
||||
internal class QSBItemSocket : WorldObject<OWItemSocket>
|
||||
{
|
||||
public override void SendInitialState(uint to)
|
||||
{
|
||||
@ -13,8 +13,8 @@ namespace QSB.ItemSync.WorldObjects.Sockets
|
||||
public bool IsSocketOccupied()
|
||||
=> AttachedObject.IsSocketOccupied();
|
||||
|
||||
public void PlaceIntoSocket(QSBItem item)
|
||||
=> AttachedObject.PlaceIntoSocket(item.AttachedObject);
|
||||
public void PlaceIntoSocket(IQSBItem item)
|
||||
=> AttachedObject.PlaceIntoSocket((OWItem)item.ReturnObject());
|
||||
|
||||
public void RemoveFromSocket()
|
||||
=> AttachedObject.RemoveFromSocket();
|
||||
|
@ -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 QSBItem HeldItem { get; set; }
|
||||
public IQSBItem HeldItem { get; set; }
|
||||
public bool FlashlightActive { get; set; }
|
||||
public bool SuitedUp { get; set; }
|
||||
public bool ProbeLauncherEquipped { get; set; }
|
||||
|
@ -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<Tuple<PlayerInfo, QSBItem>> GetPlayerCarryItems()
|
||||
=> PlayerList.Select(x => new Tuple<PlayerInfo, QSBItem>(x, x.HeldItem));
|
||||
public static IEnumerable<Tuple<PlayerInfo, IQSBItem>> GetPlayerCarryItems()
|
||||
=> PlayerList.Select(x => new Tuple<PlayerInfo, IQSBItem>(x, x.HeldItem));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user