add playerinfo.helditem

This commit is contained in:
Mister_Nebula 2021-10-30 16:14:38 +01:00
parent 68db89d94b
commit bb298b74c4
6 changed files with 25 additions and 2 deletions

View File

@ -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;
}
}
}

View File

@ -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)
{

View File

@ -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:

View File

@ -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)

View File

@ -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; }

View File

@ -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));
}
}