mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-10 16:14:45 +00:00
add completeunsocket sync, and fix geyser
This commit is contained in:
parent
1b694498d7
commit
c02b50d183
@ -23,6 +23,10 @@ namespace QSB.GeyserSync.Events
|
||||
|
||||
public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message)
|
||||
{
|
||||
if (!QSBCore.HasWokenUp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var geyser = QSBWorldSync.GetWorldFromId<QSBGeyser>(message.ObjectId);
|
||||
geyser?.SetState(message.State);
|
||||
}
|
||||
|
@ -10,32 +10,38 @@ namespace QSB.ItemSync.Events
|
||||
public override EventType Type => EventType.SocketItem;
|
||||
|
||||
public override void SetupListener()
|
||||
=> GlobalMessenger<int, int, bool>.AddListener(EventNames.QSBSocketItem, Handler);
|
||||
=> GlobalMessenger<int, int, SocketEventType>.AddListener(EventNames.QSBSocketItem, Handler);
|
||||
|
||||
public override void CloseListener()
|
||||
=> GlobalMessenger<int, int, bool>.RemoveListener(EventNames.QSBSocketItem, Handler);
|
||||
=> GlobalMessenger<int, int, SocketEventType>.RemoveListener(EventNames.QSBSocketItem, Handler);
|
||||
|
||||
private void Handler(int socketId, int itemId, bool inserting)
|
||||
=> SendEvent(CreateMessage(socketId, itemId, inserting));
|
||||
private void Handler(int socketId, int itemId, SocketEventType type)
|
||||
=> SendEvent(CreateMessage(socketId, itemId, type));
|
||||
|
||||
private SocketItemMessage CreateMessage(int socketId, int itemId, bool inserting) => new SocketItemMessage
|
||||
private SocketItemMessage CreateMessage(int socketId, int itemId, SocketEventType type) => new SocketItemMessage
|
||||
{
|
||||
AboutId = QSBPlayerManager.LocalPlayerId,
|
||||
SocketId = socketId,
|
||||
ItemId = itemId,
|
||||
Inserting = inserting
|
||||
SocketType = type
|
||||
};
|
||||
|
||||
public override void OnReceiveRemote(bool server, SocketItemMessage message)
|
||||
{
|
||||
var socketWorldObject = QSBWorldSync.GetWorldFromId<IQSBOWItemSocket>(message.SocketId);
|
||||
var itemWorldObject = QSBWorldSync.GetWorldFromId<IQSBOWItem>(message.ItemId);
|
||||
if (message.Inserting)
|
||||
switch (message.SocketType)
|
||||
{
|
||||
socketWorldObject.PlaceIntoSocket(itemWorldObject);
|
||||
return;
|
||||
case SocketEventType.Socket:
|
||||
socketWorldObject.PlaceIntoSocket(itemWorldObject);
|
||||
return;
|
||||
case SocketEventType.StartUnsocket:
|
||||
socketWorldObject.RemoveFromSocket();
|
||||
return;
|
||||
case SocketEventType.CompleteUnsocket:
|
||||
itemWorldObject.OnCompleteUnsocket();
|
||||
return;
|
||||
}
|
||||
socketWorldObject.RemoveFromSocket();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,14 +7,14 @@ namespace QSB.ItemSync.Events
|
||||
{
|
||||
public int SocketId { get; set; }
|
||||
public int ItemId { get; set; }
|
||||
public bool Inserting { get; set; }
|
||||
public SocketEventType SocketType { get; set; }
|
||||
|
||||
public override void Deserialize(QNetworkReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
SocketId = reader.ReadInt32();
|
||||
ItemId = reader.ReadInt32();
|
||||
Inserting = reader.ReadBoolean();
|
||||
SocketType = (SocketEventType)reader.ReadInt32();
|
||||
}
|
||||
|
||||
public override void Serialize(QNetworkWriter writer)
|
||||
@ -22,7 +22,7 @@ namespace QSB.ItemSync.Events
|
||||
base.Serialize(writer);
|
||||
writer.Write(SocketId);
|
||||
writer.Write(ItemId);
|
||||
writer.Write(Inserting);
|
||||
writer.Write((int)SocketType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ namespace QSB.ItemSync.Patches
|
||||
QSBCore.Helper.HarmonyHelper.AddPrefix<ItemTool>("MoveItemToCarrySocket", typeof(ItemPatches), nameof(ItemTool_MoveItemToCarrySocket));
|
||||
QSBCore.Helper.HarmonyHelper.AddPrefix<ItemTool>("SocketItem", typeof(ItemPatches), nameof(ItemTool_SocketItem));
|
||||
QSBCore.Helper.HarmonyHelper.AddPrefix<ItemTool>("StartUnsocketItem", typeof(ItemPatches), nameof(ItemTool_StartUnsocketItem));
|
||||
QSBCore.Helper.HarmonyHelper.AddPrefix<ItemTool>("OnCompleteUnsocket", typeof(ItemPatches), nameof(ItemTool_OnCompleteUnsocket));
|
||||
QSBCore.Helper.HarmonyHelper.AddPrefix<ItemTool>("DropItem", typeof(ItemPatches), nameof(ItemTool_DropItem));
|
||||
}
|
||||
|
||||
@ -34,14 +35,21 @@ namespace QSB.ItemSync.Patches
|
||||
{
|
||||
var socketId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(socket));
|
||||
var itemId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem));
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, itemId, true);
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, itemId, SocketEventType.Socket);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool ItemTool_StartUnsocketItem(OWItemSocket socket)
|
||||
{
|
||||
var socketId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(socket));
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, 0, false);
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, socketId, 0, SocketEventType.StartUnsocket);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool ItemTool_OnCompleteUnsocket(OWItem ____heldItem)
|
||||
{
|
||||
var itemId = QSBWorldSync.GetIdFromTypeSubset(ItemManager.GetObject(____heldItem));
|
||||
QSBEventManager.FireEvent(EventNames.QSBSocketItem, 0, itemId, SocketEventType.CompleteUnsocket);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
{
|
||||
public enum SocketEventType
|
||||
{
|
||||
Unsocket,
|
||||
StartUnsocket,
|
||||
CompleteUnsocket,
|
||||
Socket
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,13 @@ namespace QSB.ItemSync.WorldObjects
|
||||
{
|
||||
public interface IQSBOWItem : IWorldObjectTypeSubset
|
||||
{
|
||||
ItemType GetItemType();
|
||||
void SetColliderActivation(bool active);
|
||||
void SocketItem(Transform socketTransform, Sector sector);
|
||||
void PickUpItem(Transform holdTransform);
|
||||
void DropItem(Vector3 position, Vector3 normal, Sector sector);
|
||||
ItemType GetItemType();
|
||||
void SocketItem(Transform socketTransform, Sector sector);
|
||||
void SetColliderActivation(bool active);
|
||||
void PlaySocketAnimation();
|
||||
void PlayUnsocketAnimation();
|
||||
void OnCompleteUnsocket();
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,9 @@ namespace QSB.ItemSync.WorldObjects
|
||||
public void SetColliderActivation(bool active)
|
||||
=> AttachedObject.SetColliderActivation(active);
|
||||
|
||||
public virtual void SocketItem(Transform socketTransform, Sector sector)
|
||||
=> AttachedObject.SocketItem(socketTransform, sector);
|
||||
|
||||
public virtual void PickUpItem(Transform holdTransform)
|
||||
=> AttachedObject.PickUpItem(holdTransform);
|
||||
|
||||
@ -31,10 +34,8 @@ namespace QSB.ItemSync.WorldObjects
|
||||
AttachedObject.SetColliderActivation(true);
|
||||
}
|
||||
|
||||
public virtual void SocketItem(Transform socketTransform, Sector sector)
|
||||
=> AttachedObject.SocketItem(socketTransform, sector);
|
||||
|
||||
public virtual void PlaySocketAnimation() { }
|
||||
public virtual void PlayUnsocketAnimation() { }
|
||||
public virtual void OnCompleteUnsocket() { }
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,9 @@
|
||||
public override void PlayUnsocketAnimation()
|
||||
=> AttachedObject.PlayUnsocketAnimation();
|
||||
|
||||
public override void OnCompleteUnsocket()
|
||||
=> AttachedObject.OnCompleteUnsocket();
|
||||
|
||||
public void HideNomaiText()
|
||||
=> AttachedObject.HideNomaiText();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user