mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-21 09:39:56 +00:00
add playerinfo.helditem
This commit is contained in:
parent
68db89d94b
commit
bb298b74c4
@ -1,5 +1,6 @@
|
||||
using QSB.Events;
|
||||
using QSB.ItemSync.WorldObjects;
|
||||
using QSB.Player;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using UnityEngine;
|
||||
@ -31,6 +32,9 @@ namespace QSB.ItemSync.Events
|
||||
{
|
||||
var worldObject = QSBWorldSync.GetWorldFromId<IQSBOWItem>(message.ObjectId);
|
||||
worldObject.DropItem(message.Position, message.Normal, message.Sector);
|
||||
|
||||
var player = QSBPlayerManager.GetPlayer(message.FromId);
|
||||
player.HeldItem = worldObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,9 @@ namespace QSB.ItemSync.Events
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
var itemObject = QSBWorldSync.GetWorldFromId<IQSBOWItem>(message.ObjectId);
|
||||
var itemType = itemObject.GetItemType();
|
||||
|
||||
player.HeldItem = itemObject;
|
||||
|
||||
Transform itemSocket = null;
|
||||
switch (itemType)
|
||||
{
|
||||
|
@ -31,6 +31,8 @@ namespace QSB.ItemSync.Events
|
||||
{
|
||||
var socketWorldObject = QSBWorldSync.GetWorldFromId<IQSBOWItemSocket>(message.SocketId);
|
||||
var itemWorldObject = QSBWorldSync.GetWorldFromId<IQSBOWItem>(message.ItemId);
|
||||
var player = QSBPlayerManager.GetPlayer(message.FromId);
|
||||
player.HeldItem = null;
|
||||
switch (message.SocketType)
|
||||
{
|
||||
case SocketEventType.Socket:
|
||||
|
@ -2,6 +2,7 @@
|
||||
using OWML.Common;
|
||||
using QSB.Events;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using UnityEngine;
|
||||
@ -17,7 +18,9 @@ namespace QSB.ItemSync.Patches
|
||||
[HarmonyPatch(typeof(ItemTool), nameof(ItemTool.MoveItemToCarrySocket))]
|
||||
public static bool ItemTool_MoveItemToCarrySocket(OWItem item)
|
||||
{
|
||||
var itemId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(item));
|
||||
var qsbObj = ItemManager.GetObject(item);
|
||||
var itemId = QSBWorldSync.GetIdFromTypeSubset(qsbObj);
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = qsbObj;
|
||||
QSBEventManager.FireEvent(EventNames.QSBMoveToCarry, itemId);
|
||||
return true;
|
||||
}
|
||||
@ -26,8 +29,10 @@ 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 itemId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem));
|
||||
var itemId = QSBWorldSync.GetIdFromTypeSubset(qsbObj);
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = null;
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, itemId, SocketEventType.Socket);
|
||||
return true;
|
||||
}
|
||||
@ -36,6 +41,8 @@ namespace QSB.ItemSync.Patches
|
||||
[HarmonyPatch(typeof(ItemTool), nameof(ItemTool.StartUnsocketItem))]
|
||||
public static bool ItemTool_StartUnsocketItem(OWItemSocket socket)
|
||||
{
|
||||
var item = ItemManager.GetObject(socket.GetSocketedItem());
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = item;
|
||||
var socketId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(socket));
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, 0, SocketEventType.StartUnsocket);
|
||||
return true;
|
||||
@ -84,6 +91,7 @@ namespace QSB.ItemSync.Patches
|
||||
var objectId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem));
|
||||
____heldItem.DropItem(hit.point, hit.normal, parent, sector, customDropTarget);
|
||||
____heldItem = null;
|
||||
QSBPlayerManager.LocalPlayer.HeldItem = null;
|
||||
Locator.GetToolModeSwapper().UnequipTool();
|
||||
var parentSector = parent.GetComponentInChildren<Sector>();
|
||||
if (parentSector != null)
|
||||
|
@ -3,6 +3,7 @@ using QSB.Animation.Player;
|
||||
using QSB.Animation.Player.Thrusters;
|
||||
using QSB.CampfireSync.WorldObjects;
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.ItemSync.WorldObjects;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.ProbeSync;
|
||||
using QSB.QuantumSync;
|
||||
@ -95,6 +96,7 @@ namespace QSB.Player
|
||||
public Transform VesselCoreSocket => CameraBody.transform.Find("REMOTE_VesselCoreSocket");
|
||||
public QSBMarshmallow Marshmallow { get; set; }
|
||||
public QSBCampfire Campfire { get; set; }
|
||||
public IQSBOWItem HeldItem { get; set; }
|
||||
|
||||
// Conversation
|
||||
public int CurrentCharacterDialogueTreeId { get; set; }
|
||||
|
@ -1,4 +1,5 @@
|
||||
using OWML.Common;
|
||||
using QSB.ItemSync.WorldObjects;
|
||||
using QSB.Player.Events;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Tools;
|
||||
@ -173,5 +174,8 @@ namespace QSB.Player
|
||||
|
||||
return playerList.Where(x => x.PlayerStates.IsReady).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));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user