change HasBeenPickedUp to HasBeenInteractedWith, move to itemstate

This commit is contained in:
Mister_Nebula 2022-07-25 17:20:02 +01:00
parent d2a48a7782
commit 68e166543e
7 changed files with 7 additions and 8 deletions

View File

@ -6,6 +6,7 @@ namespace QSB.ItemSync;
public class ItemState public class ItemState
{ {
public ItemStateType State; public ItemStateType State;
public bool HasBeenInteractedWith;
// on ground // on ground
public Transform Parent; public Transform Parent;

View File

@ -58,7 +58,7 @@ internal class DropItemMessage : QSBWorldObjectMessage<IQSBItem,
var sector = Data.sectorId != -1 ? Data.sectorId.GetWorldObject<QSBSector>().AttachedObject : null; var sector = Data.sectorId != -1 ? Data.sectorId.GetWorldObject<QSBSector>().AttachedObject : null;
WorldObject.DropItem(worldPos, worldNormal, parent, sector, customDropTarget); WorldObject.DropItem(worldPos, worldNormal, parent, sector, customDropTarget);
WorldObject.HasBeenPickedUp = true; WorldObject.ItemState.HasBeenInteractedWith = true;
WorldObject.ItemState.State = ItemStateType.OnGround; WorldObject.ItemState.State = ItemStateType.OnGround;
WorldObject.ItemState.LocalPosition = Data.localPosition; WorldObject.ItemState.LocalPosition = Data.localPosition;
WorldObject.ItemState.Parent = parent; WorldObject.ItemState.Parent = parent;

View File

@ -32,7 +32,7 @@ internal class MoveToCarryMessage : QSBWorldObjectMessage<IQSBItem, uint>
}; };
WorldObject.PickUpItem(itemSocket); WorldObject.PickUpItem(itemSocket);
WorldObject.HasBeenPickedUp = true; WorldObject.ItemState.HasBeenInteractedWith = true;
WorldObject.ItemState.State = ItemStateType.Held; WorldObject.ItemState.State = ItemStateType.Held;
WorldObject.ItemState.HoldingPlayer = player; WorldObject.ItemState.HoldingPlayer = player;

View File

@ -27,7 +27,7 @@ internal class SocketItemMessage : QSBMessage<(SocketMessageType Type, int Socke
var qsbItem = Data.ItemId.GetWorldObject<IQSBItem>(); var qsbItem = Data.ItemId.GetWorldObject<IQSBItem>();
qsbItemSocket.PlaceIntoSocket(qsbItem); qsbItemSocket.PlaceIntoSocket(qsbItem);
qsbItem.HasBeenPickedUp = true; qsbItem.ItemState.HasBeenInteractedWith = true;
qsbItem.ItemState.State = ItemStateType.Socketed; qsbItem.ItemState.State = ItemStateType.Socketed;
qsbItem.ItemState.Socket = qsbItemSocket.AttachedObject; qsbItem.ItemState.Socket = qsbItemSocket.AttachedObject;

View File

@ -20,7 +20,7 @@ internal class ItemToolPatches : QSBPatch
{ {
var qsbItem = item.GetWorldObject<IQSBItem>(); var qsbItem = item.GetWorldObject<IQSBItem>();
QSBPlayerManager.LocalPlayer.HeldItem = qsbItem; QSBPlayerManager.LocalPlayer.HeldItem = qsbItem;
qsbItem.HasBeenPickedUp = true; qsbItem.ItemState.HasBeenInteractedWith = true;
qsbItem.ItemState.State = ItemStateType.Held; qsbItem.ItemState.State = ItemStateType.Held;
qsbItem.ItemState.HoldingPlayer = QSBPlayerManager.LocalPlayer; qsbItem.ItemState.HoldingPlayer = QSBPlayerManager.LocalPlayer;
qsbItem.SendMessage(new MoveToCarryMessage(QSBPlayerManager.LocalPlayer.PlayerId)); qsbItem.SendMessage(new MoveToCarryMessage(QSBPlayerManager.LocalPlayer.PlayerId));
@ -44,7 +44,7 @@ internal class ItemToolPatches : QSBPatch
{ {
var item = socket.GetSocketedItem(); var item = socket.GetSocketedItem();
var qsbItem = item.GetWorldObject<IQSBItem>(); var qsbItem = item.GetWorldObject<IQSBItem>();
qsbItem.HasBeenPickedUp = true; qsbItem.ItemState.HasBeenInteractedWith = true;
QSBPlayerManager.LocalPlayer.HeldItem = qsbItem; QSBPlayerManager.LocalPlayer.HeldItem = qsbItem;
new SocketItemMessage(SocketMessageType.StartUnsocket, socket, item).Send(); new SocketItemMessage(SocketMessageType.StartUnsocket, socket, item).Send();
} }

View File

@ -5,7 +5,6 @@ namespace QSB.ItemSync.WorldObjects.Items;
public interface IQSBItem : IWorldObject public interface IQSBItem : IWorldObject
{ {
bool HasBeenPickedUp { get; set; }
ItemState ItemState { get; } ItemState ItemState { get; }
ItemType GetItemType(); ItemType GetItemType();

View File

@ -14,7 +14,6 @@ namespace QSB.ItemSync.WorldObjects.Items;
public class QSBItem<T> : WorldObject<T>, IQSBItem public class QSBItem<T> : WorldObject<T>, IQSBItem
where T : OWItem where T : OWItem
{ {
public bool HasBeenPickedUp { get; set; }
public ItemState ItemState { get; } = new(); public ItemState ItemState { get; } = new();
private Transform _lastParent; private Transform _lastParent;
@ -87,7 +86,7 @@ public class QSBItem<T> : WorldObject<T>, IQSBItem
public override void SendInitialState(uint to) public override void SendInitialState(uint to)
{ {
if (!HasBeenPickedUp) if (!ItemState.HasBeenInteractedWith)
{ {
return; return;
} }