dont use message field where we dont have to

This commit is contained in:
JohnCorby 2021-12-25 16:42:50 -08:00
parent b030671119
commit 9f39b13ed7
2 changed files with 21 additions and 6 deletions

View File

@ -63,10 +63,10 @@ namespace QSB.ConversationSync
}
public void CloseBoxPlayer() =>
new ConversationMessage(ConversationType.ClosePlayer, (int)QSBPlayerManager.LocalPlayerId, "").Send();
new ConversationMessage(ConversationType.ClosePlayer, (int)QSBPlayerManager.LocalPlayerId).Send();
public void CloseBoxCharacter(int id) =>
new ConversationMessage(ConversationType.CloseCharacter, id, "").Send();
new ConversationMessage(ConversationType.CloseCharacter, id).Send();
public void SendConvState(int charId, bool state)
{

View File

@ -8,14 +8,23 @@ namespace QSB.ConversationSync.Messages
{
public class ConversationMessage : QSBEnumMessage<ConversationType>
{
/// <summary>
/// character (tree) id or player id
/// </summary>
private int Id;
/// <summary>
/// used only for character and player type
/// </summary>
private string Message;
public ConversationMessage(ConversationType type, int id, string message)
public ConversationMessage(ConversationType type, int id, string message = default)
{
Value = type;
Id = id;
Message = message;
if (Value is ConversationType.Character or ConversationType.Player)
{
Message = message;
}
}
public ConversationMessage() { }
@ -24,14 +33,20 @@ namespace QSB.ConversationSync.Messages
{
base.Serialize(writer);
writer.Write(Id);
writer.Write(Message);
if (Value is ConversationType.Character or ConversationType.Player)
{
writer.Write(Message);
}
}
public override void Deserialize(QNetworkReader reader)
{
base.Deserialize(reader);
Id = reader.ReadInt32();
Message = reader.ReadString();
if (Value is ConversationType.Character or ConversationType.Player)
{
Message = reader.ReadString();
}
}
public override bool ShouldReceive => WorldObjectManager.AllObjectsReady;