mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-11 10:14:17 +00:00
make SocketItemMessage a QSBWorldObjectMessage
This commit is contained in:
parent
93f66df201
commit
027ff0becc
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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]
|
||||||
|
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user