make SocketItemMessage a QSBWorldObjectMessage

This commit is contained in:
JohnCorby 2022-10-05 16:43:36 -07:00
parent 93f66df201
commit 027ff0becc
3 changed files with 15 additions and 19 deletions

View File

@ -7,12 +7,11 @@ using QSB.WorldSync;
namespace QSB.ItemSync.Messages; namespace QSB.ItemSync.Messages;
internal class SocketItemMessage : QSBMessage<(SocketMessageType Type, int SocketId, int ItemId)> internal class SocketItemMessage : QSBWorldObjectMessage<IQSBItem, (SocketMessageType Type, int SocketId)>
{ {
public SocketItemMessage(SocketMessageType type, OWItemSocket socket, OWItem item) : base(( public SocketItemMessage(SocketMessageType type, OWItemSocket socket) : base((
type, type,
socket ? socket.GetWorldObject<QSBItemSocket>().ObjectId : -1, socket ? socket.GetWorldObject<QSBItemSocket>().ObjectId : -1
item ? item.GetWorldObject<IQSBItem>().ObjectId : -1
)) { } )) { }
public override bool ShouldReceive => QSBWorldSync.AllObjectsReady; public override bool ShouldReceive => QSBWorldSync.AllObjectsReady;
@ -24,12 +23,11 @@ internal class SocketItemMessage : QSBMessage<(SocketMessageType Type, int Socke
case SocketMessageType.Socket: case SocketMessageType.Socket:
{ {
var qsbItemSocket = Data.SocketId.GetWorldObject<QSBItemSocket>(); var qsbItemSocket = Data.SocketId.GetWorldObject<QSBItemSocket>();
var qsbItem = Data.ItemId.GetWorldObject<IQSBItem>();
qsbItemSocket.PlaceIntoSocket(qsbItem); qsbItemSocket.PlaceIntoSocket(WorldObject);
qsbItem.ItemState.HasBeenInteractedWith = true; WorldObject.ItemState.HasBeenInteractedWith = true;
qsbItem.ItemState.State = ItemStateType.Socketed; WorldObject.ItemState.State = ItemStateType.Socketed;
qsbItem.ItemState.Socket = qsbItemSocket.AttachedObject; WorldObject.ItemState.Socket = qsbItemSocket.AttachedObject;
var player = QSBPlayerManager.GetPlayer(From); var player = QSBPlayerManager.GetPlayer(From);
player.HeldItem = null; player.HeldItem = null;
@ -39,7 +37,6 @@ internal class SocketItemMessage : QSBMessage<(SocketMessageType Type, int Socke
case SocketMessageType.StartUnsocket: case SocketMessageType.StartUnsocket:
{ {
var qsbItemSocket = Data.SocketId.GetWorldObject<QSBItemSocket>(); var qsbItemSocket = Data.SocketId.GetWorldObject<QSBItemSocket>();
var qsbItem = Data.ItemId.GetWorldObject<IQSBItem>();
if (!qsbItemSocket.IsSocketOccupied()) if (!qsbItemSocket.IsSocketOccupied())
{ {
@ -47,19 +44,17 @@ internal class SocketItemMessage : QSBMessage<(SocketMessageType Type, int Socke
return; return;
} }
qsbItem.StoreLocation(); WorldObject.StoreLocation();
var player = QSBPlayerManager.GetPlayer(From); var player = QSBPlayerManager.GetPlayer(From);
player.HeldItem = qsbItem; player.HeldItem = WorldObject;
qsbItemSocket.RemoveFromSocket(); qsbItemSocket.RemoveFromSocket();
return; return;
} }
case SocketMessageType.CompleteUnsocket: case SocketMessageType.CompleteUnsocket:
{ {
var qsbItem = Data.ItemId.GetWorldObject<IQSBItem>(); WorldObject.OnCompleteUnsocket();
qsbItem.OnCompleteUnsocket();
return; return;
} }
} }

View File

@ -35,7 +35,7 @@ internal class ItemToolPatches : QSBPatch
var qsbItem = item.GetWorldObject<IQSBItem>(); var qsbItem = item.GetWorldObject<IQSBItem>();
qsbItem.ItemState.State = ItemStateType.Socketed; qsbItem.ItemState.State = ItemStateType.Socketed;
qsbItem.ItemState.Socket = socket; qsbItem.ItemState.Socket = socket;
new SocketItemMessage(SocketMessageType.Socket, socket, item).Send(); qsbItem.SendMessage(new SocketItemMessage(SocketMessageType.Socket, socket));
} }
[HarmonyPrefix] [HarmonyPrefix]
@ -46,7 +46,7 @@ internal class ItemToolPatches : QSBPatch
var qsbItem = item.GetWorldObject<IQSBItem>(); var qsbItem = item.GetWorldObject<IQSBItem>();
qsbItem.ItemState.HasBeenInteractedWith = true; qsbItem.ItemState.HasBeenInteractedWith = true;
QSBPlayerManager.LocalPlayer.HeldItem = qsbItem; QSBPlayerManager.LocalPlayer.HeldItem = qsbItem;
new SocketItemMessage(SocketMessageType.StartUnsocket, socket, item).Send(); qsbItem.SendMessage(new SocketItemMessage(SocketMessageType.StartUnsocket, socket));
} }
[HarmonyPrefix] [HarmonyPrefix]
@ -54,7 +54,8 @@ internal class ItemToolPatches : QSBPatch
public static void CompleteUnsocketItem(ItemTool __instance) public static void CompleteUnsocketItem(ItemTool __instance)
{ {
var item = __instance._heldItem; var item = __instance._heldItem;
new SocketItemMessage(SocketMessageType.CompleteUnsocket, null, item).Send(); var qsbItem = item.GetWorldObject<IQSBItem>();
qsbItem.SendMessage(new SocketItemMessage(SocketMessageType.CompleteUnsocket, null));
} }
[HarmonyPrefix] [HarmonyPrefix]

View File

@ -97,7 +97,7 @@ public class QSBItem<T> : WorldObject<T>, IQSBItem
((IQSBItem)this).SendMessage(new MoveToCarryMessage(ItemState.HoldingPlayer.PlayerId)); ((IQSBItem)this).SendMessage(new MoveToCarryMessage(ItemState.HoldingPlayer.PlayerId));
break; break;
case ItemStateType.Socketed: case ItemStateType.Socketed:
new SocketItemMessage(SocketMessageType.Socket, ItemState.Socket, AttachedObject).Send(); ((IQSBItem)this).SendMessage(new SocketItemMessage(SocketMessageType.Socket, ItemState.Socket));
break; break;
case ItemStateType.OnGround: case ItemStateType.OnGround:
((IQSBItem)this).SendMessage( ((IQSBItem)this).SendMessage(