simplify more messages

This commit is contained in:
Mister_Nebula 2022-02-28 21:20:51 +00:00
parent d1f2b2815d
commit 171f83c835
7 changed files with 74 additions and 147 deletions

View File

@ -7,32 +7,18 @@ namespace QSB.AuthoritySync
/// <summary>
/// always sent to host
/// </summary>
public class AuthQueueMessage : QSBMessage<AuthQueueAction>
public class AuthQueueMessage : QSBMessage<AuthQueueAction, uint>
{
private uint NetId;
public AuthQueueMessage(uint netId, AuthQueueAction action)
{
To = 0;
NetId = netId;
Value = action;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(NetId);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
NetId = reader.ReadUInt();
Value1 = action;
Value2 = netId;
}
public override bool ShouldReceive => QSBWorldSync.AllObjectsReady;
public override void OnReceiveLocal() => OnReceiveRemote();
public override void OnReceiveRemote() => NetworkServer.spawned[NetId].ServerUpdateAuthQueue(From, Value);
public override void OnReceiveRemote() => NetworkServer.spawned[Value2].ServerUpdateAuthQueue(From, Value1);
}
public enum AuthQueueAction

View File

@ -7,46 +7,29 @@ using UnityEngine;
namespace QSB.ConversationSync.Messages
{
public class ConversationMessage : QSBMessage<ConversationType>
public class ConversationMessage : QSBMessage<ConversationType, int, string>
{
private int Id;
private string Message;
public ConversationMessage(ConversationType type, int id, string message = "")
{
Value = type;
Id = id;
Message = message;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(Id);
writer.Write(Message);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
Id = reader.Read<int>();
Message = reader.ReadString();
Value1 = type;
Value2 = id;
Value3 = message;
}
public override bool ShouldReceive => QSBWorldSync.AllObjectsReady;
public override void OnReceiveRemote()
{
switch (Value)
switch (Value1)
{
case ConversationType.Character:
var translated = TextTranslation.Translate(Message).Trim();
var translated = TextTranslation.Translate(Value3).Trim();
translated = Regex.Replace(translated, @"<[Pp]ause=?\d*\.?\d*\s?\/?>", "");
ConversationManager.Instance.DisplayCharacterConversationBox(Id, translated);
ConversationManager.Instance.DisplayCharacterConversationBox(Value2, translated);
break;
case ConversationType.Player:
ConversationManager.Instance.DisplayPlayerConversationBox((uint)Id, Message);
ConversationManager.Instance.DisplayPlayerConversationBox((uint)Value2, Value3);
break;
case ConversationType.CloseCharacter:
@ -55,12 +38,12 @@ namespace QSB.ConversationSync.Messages
break;
}
var tree = QSBWorldSync.OldDialogueTrees[Id];
var tree = QSBWorldSync.OldDialogueTrees[Value2];
Object.Destroy(ConversationManager.Instance.BoxMappings[tree]);
break;
case ConversationType.ClosePlayer:
Object.Destroy(QSBPlayerManager.GetPlayer((uint)Id).CurrentDialogueBox);
Object.Destroy(QSBPlayerManager.GetPlayer((uint)Value2).CurrentDialogueBox);
break;
}
}

View File

@ -7,43 +7,29 @@ using QSB.WorldSync;
namespace QSB.ConversationSync.Messages
{
public class ConversationStartEndMessage : QSBMessage<bool>
public class ConversationStartEndMessage : QSBMessage<bool, int>
{
private int TreeId;
public ConversationStartEndMessage(int treeId, bool start)
{
TreeId = treeId;
Value = start;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(TreeId);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
TreeId = reader.Read<int>();
Value2 = treeId;
Value1 = start;
}
public override bool ShouldReceive => QSBWorldSync.AllObjectsReady;
public override void OnReceiveRemote()
{
if (TreeId == -1)
if (Value2 == -1)
{
DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning);
return;
}
var dialogueTree = QSBWorldSync.OldDialogueTrees[TreeId];
var dialogueTree = QSBWorldSync.OldDialogueTrees[Value2];
if (Value)
if (Value1)
{
StartConversation(From, TreeId, dialogueTree);
StartConversation(From, Value2, dialogueTree);
}
else
{

View File

@ -4,61 +4,44 @@ using QSB.WorldSync;
namespace QSB.ConversationSync.Messages
{
public class DialogueConditionMessage : QSBMessage
public class DialogueConditionMessage : QSBMessage<string, bool>
{
private string ConditionName;
private bool ConditionState;
public DialogueConditionMessage(string name, bool state)
{
ConditionName = name;
ConditionState = state;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(ConditionName);
writer.Write(ConditionState);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
ConditionName = reader.ReadString();
ConditionState = reader.Read<bool>();
Value1 = name;
Value2 = state;
}
public override void OnReceiveRemote()
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetDialogueCondition(ConditionName, ConditionState);
QSBWorldSync.SetDialogueCondition(Value1, Value2);
}
var sharedInstance = DialogueConditionManager.SharedInstance;
var flag = true;
if (sharedInstance.ConditionExists(ConditionName))
if (sharedInstance.ConditionExists(Value1))
{
if (sharedInstance._dictConditions[ConditionName] == ConditionState)
if (sharedInstance._dictConditions[Value1] == Value2)
{
flag = false;
}
sharedInstance._dictConditions[ConditionName] = ConditionState;
sharedInstance._dictConditions[Value1] = Value2;
}
else
{
sharedInstance.AddCondition(ConditionName, ConditionState);
sharedInstance.AddCondition(Value1, Value2);
}
if (flag)
{
GlobalMessenger<string, bool>.FireEvent("DialogueConditionChanged", ConditionName, ConditionState);
GlobalMessenger<string, bool>.FireEvent("DialogueConditionChanged", Value1, Value2);
}
if (ConditionName == "LAUNCH_CODES_GIVEN")
if (Value1 == "LAUNCH_CODES_GIVEN")
{
PlayerData.LearnLaunchCodes();
}
@ -68,7 +51,7 @@ namespace QSB.ConversationSync.Messages
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetDialogueCondition(ConditionName, ConditionState);
QSBWorldSync.SetDialogueCondition(Value1, Value2);
}
}
}

View File

@ -4,49 +4,32 @@ using QSB.WorldSync;
namespace QSB.ConversationSync.Messages
{
internal class PersistentConditionMessage : QSBMessage
internal class PersistentConditionMessage : QSBMessage<string, bool>
{
private string _conditionName;
private bool _conditionState;
public PersistentConditionMessage(string condition, bool state)
{
_conditionName = condition;
_conditionState = state;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(_conditionName);
writer.Write(_conditionState);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
_conditionName = reader.ReadString();
_conditionState = reader.ReadBool();
Value1 = condition;
Value2 = state;
}
public override void OnReceiveRemote()
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetPersistentCondition(_conditionName, _conditionState);
QSBWorldSync.SetPersistentCondition(Value1, Value2);
}
var gameSave = PlayerData._currentGameSave;
if (gameSave.dictConditions.ContainsKey(_conditionName))
if (gameSave.dictConditions.ContainsKey(Value1))
{
gameSave.dictConditions[_conditionName] = _conditionState;
gameSave.dictConditions[Value1] = Value2;
}
else
{
gameSave.dictConditions.Add(_conditionName, _conditionState);
gameSave.dictConditions.Add(Value1, Value2);
}
if (_conditionName
if (Value1
is not "LAUNCH_CODES_GIVEN"
and not "PLAYER_ENTERED_TIMELOOPCORE"
and not "PROBE_ENTERED_TIMELOOPCORE"
@ -60,7 +43,7 @@ namespace QSB.ConversationSync.Messages
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetPersistentCondition(_conditionName, _conditionState);
QSBWorldSync.SetPersistentCondition(Value1, Value2);
}
}
}

View File

@ -8,30 +8,13 @@ using QSB.WorldSync;
namespace QSB.ItemSync.Messages
{
internal class SocketItemMessage : QSBMessage<SocketMessageType>
internal class SocketItemMessage : QSBMessage<SocketMessageType, int, int>
{
private int SocketId;
private int ItemId;
public SocketItemMessage(SocketMessageType type, int socketId = -1, int itemId = -1)
{
Value = type;
SocketId = socketId;
ItemId = itemId;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(SocketId);
writer.Write(ItemId);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
SocketId = reader.Read<int>();
ItemId = reader.Read<int>();
Value1 = type;
Value2 = socketId;
Value3 = itemId;
}
public override bool ShouldReceive => QSBWorldSync.AllObjectsReady;
@ -46,16 +29,16 @@ namespace QSB.ItemSync.Messages
DebugLog.DebugWrite("DROP HELD ITEM");
player.AnimationSync.VisibleAnimator.SetTrigger("DropHeldItem");
switch (Value)
switch (Value1)
{
case SocketMessageType.Socket:
socketWorldObject = SocketId.GetWorldObject<QSBItemSocket>();
itemWorldObject = ItemId.GetWorldObject<IQSBItem>();
socketWorldObject = Value2.GetWorldObject<QSBItemSocket>();
itemWorldObject = Value3.GetWorldObject<IQSBItem>();
socketWorldObject.PlaceIntoSocket(itemWorldObject);
return;
case SocketMessageType.StartUnsocket:
socketWorldObject = SocketId.GetWorldObject<QSBItemSocket>();
socketWorldObject = Value2.GetWorldObject<QSBItemSocket>();
if (!socketWorldObject.IsSocketOccupied())
{
@ -66,7 +49,7 @@ namespace QSB.ItemSync.Messages
socketWorldObject.RemoveFromSocket();
return;
case SocketMessageType.CompleteUnsocket:
itemWorldObject = ItemId.GetWorldObject<IQSBItem>();
itemWorldObject = Value3.GetWorldObject<IQSBItem>();
itemWorldObject.OnCompleteUnsocket();
return;

View File

@ -81,4 +81,27 @@ namespace QSB.Messaging
Value2 = reader.Read<U>();
}
}
public abstract class QSBMessage<T, U, V> : QSBMessage
{
protected T Value1;
protected U Value2;
protected V Value3;
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(Value1);
writer.Write(Value2);
writer.Write(Value3);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
Value1 = reader.Read<T>();
Value2 = reader.Read<U>();
Value3 = reader.Read<V>();
}
}
}