mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-10 16:14:45 +00:00
use 1 world object for items
This commit is contained in:
parent
55ba74f4e9
commit
87d5c26dcb
@ -15,12 +15,7 @@ namespace QSB.ItemSync
|
||||
DebugLog.DebugWrite("Building OWItems...", MessageType.Info);
|
||||
|
||||
// Items
|
||||
QSBWorldSync.Init<QSBScrollItem, ScrollItem>();
|
||||
QSBWorldSync.Init<QSBSharedStone, SharedStone>();
|
||||
QSBWorldSync.Init<QSBWarpCoreItem, WarpCoreItem>();
|
||||
QSBWorldSync.Init<QSBNomaiConversationStone, NomaiConversationStone>();
|
||||
QSBWorldSync.Init<QSBSimpleLanternItem, SimpleLanternItem>();
|
||||
QSBWorldSync.Init<QSBSlideReelItem, SlideReelItem>();
|
||||
QSBWorldSync.Init<QSBItem, OWItem>();
|
||||
|
||||
// Sockets
|
||||
QSBWorldSync.Init<QSBItemSocket, OWItemSocket>();
|
||||
|
@ -8,7 +8,7 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.ItemSync.Messages
|
||||
{
|
||||
internal class DropItemMessage : QSBWorldObjectMessage<IQSBOWItem>
|
||||
internal class DropItemMessage : QSBWorldObjectMessage<QSBItem>
|
||||
{
|
||||
private Vector3 Position;
|
||||
private Vector3 Normal;
|
||||
|
@ -4,7 +4,7 @@ using QSB.Player;
|
||||
|
||||
namespace QSB.ItemSync.Messages
|
||||
{
|
||||
internal class MoveToCarryMessage : QSBWorldObjectMessage<IQSBOWItem>
|
||||
internal class MoveToCarryMessage : QSBWorldObjectMessage<QSBItem>
|
||||
{
|
||||
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,
|
||||
|
@ -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<QSBItemSocket>();
|
||||
itemWorldObject = ItemId.GetWorldObject<IQSBOWItem>();
|
||||
itemWorldObject = ItemId.GetWorldObject<QSBItem>();
|
||||
|
||||
socketWorldObject.PlaceIntoSocket(itemWorldObject);
|
||||
return;
|
||||
@ -62,7 +62,7 @@ namespace QSB.ItemSync.Messages
|
||||
socketWorldObject.RemoveFromSocket();
|
||||
return;
|
||||
case SocketMessageType.CompleteUnsocket:
|
||||
itemWorldObject = ItemId.GetWorldObject<IQSBOWItem>();
|
||||
itemWorldObject = ItemId.GetWorldObject<QSBItem>();
|
||||
|
||||
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<IQSBOWItem>();
|
||||
var qsbObj = item.GetWorldObject<QSBItem>();
|
||||
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<IQSBOWItem>();
|
||||
var qsbObj = __instance._heldItem.GetWorldObject<QSBItem>();
|
||||
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<IQSBOWItem>();
|
||||
var item = socket.GetSocketedItem().GetWorldObject<QSBItem>();
|
||||
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<IQSBOWItem>().ObjectId;
|
||||
var itemId = __instance._heldItem.GetWorldObject<QSBItem>().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<IQSBOWItem>();
|
||||
var qsbItem = __instance._heldItem.GetWorldObject<QSBItem>();
|
||||
__instance._heldItem.DropItem(hit.point, hit.normal, parent, sector, customDropTarget);
|
||||
__instance._heldItem = null;
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = 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();
|
||||
}
|
||||
}
|
@ -7,9 +7,7 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
// todo make this one type
|
||||
internal class QSBOWItem<T> : WorldObject<T>, IQSBOWItem
|
||||
where T : OWItem
|
||||
public class QSBItem : WorldObject<OWItem>
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBNomaiConversationStone : QSBOWItem<NomaiConversationStone>
|
||||
{
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBScrollItem : QSBOWItem<ScrollItem>
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSharedStone : QSBOWItem<SharedStone>
|
||||
{
|
||||
public override void PlaySocketAnimation()
|
||||
=> AttachedObject.PlaySocketAnimation();
|
||||
|
||||
public override void PlayUnsocketAnimation()
|
||||
=> AttachedObject.PlayUnsocketAnimation();
|
||||
|
||||
public override void OnCompleteUnsocket()
|
||||
=> AttachedObject.OnCompleteUnsocket();
|
||||
|
||||
public NomaiRemoteCameraPlatform.ID GetRemoteCameraID()
|
||||
=> AttachedObject.GetRemoteCameraID();
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSimpleLanternItem : QSBOWItem<SimpleLanternItem>
|
||||
{
|
||||
public override void PlaySocketAnimation()
|
||||
=> AttachedObject.PlaySocketAnimation();
|
||||
|
||||
public override void PlayUnsocketAnimation()
|
||||
=> AttachedObject.PlayUnsocketAnimation();
|
||||
|
||||
public override void OnCompleteUnsocket()
|
||||
=> AttachedObject.OnCompleteUnsocket();
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBSlideReelItem : QSBOWItem<SlideReelItem>
|
||||
{
|
||||
public override void PlaySocketAnimation()
|
||||
=> AttachedObject.PlaySocketAnimation();
|
||||
|
||||
public override void PlayUnsocketAnimation()
|
||||
=> AttachedObject.PlayUnsocketAnimation();
|
||||
|
||||
public override void OnCompleteUnsocket()
|
||||
=> AttachedObject.OnCompleteUnsocket();
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
namespace QSB.ItemSync.WorldObjects.Items
|
||||
{
|
||||
internal class QSBWarpCoreItem : QSBOWItem<WarpCoreItem>
|
||||
{
|
||||
public bool IsVesselCoreType()
|
||||
=> AttachedObject.IsVesselCoreType();
|
||||
}
|
||||
}
|
@ -3,14 +3,14 @@ using QSB.WorldSync;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Sockets
|
||||
{
|
||||
internal class QSBItemSocket : WorldObject<OWItemSocket>
|
||||
public class QSBItemSocket : WorldObject<OWItemSocket>
|
||||
{
|
||||
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<IQSBOWItem>();
|
||||
public QSBItem RemoveFromSocket()
|
||||
=> AttachedObject.RemoveFromSocket().GetWorldObject<QSBItem>();
|
||||
}
|
||||
}
|
||||
|
@ -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; }
|
||||
|
@ -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, IQSBOWItem>> GetPlayerCarryItems()
|
||||
=> PlayerList.Select(x => new Tuple<PlayerInfo, IQSBOWItem>(x, x.HeldItem));
|
||||
public static IEnumerable<Tuple<PlayerInfo, QSBItem>> GetPlayerCarryItems()
|
||||
=> PlayerList.Select(x => new Tuple<PlayerInfo, QSBItem>(x, x.HeldItem));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user