quantum-space-buddies/QSB/ConversationSync/Messages/DialogueConditionMessage.cs

75 lines
1.6 KiB
C#
Raw Normal View History

using Mirror;
using QSB.Messaging;
2021-12-23 16:20:17 -08:00
using QSB.WorldSync;
2020-12-11 12:54:19 +00:00
namespace QSB.ConversationSync.Messages
2020-12-11 12:54:19 +00:00
{
2021-12-23 16:20:17 -08:00
public class DialogueConditionMessage : QSBMessage
2020-12-11 12:54:19 +00:00
{
2021-12-23 16:20:17 -08:00
private string ConditionName;
private bool ConditionState;
public DialogueConditionMessage(string name, bool state)
{
ConditionName = name;
ConditionState = state;
2020-12-11 12:54:19 +00:00
}
public override void Serialize(NetworkWriter writer)
2020-12-11 12:54:19 +00:00
{
base.Serialize(writer);
writer.Write(ConditionName);
writer.Write(ConditionState);
}
2021-12-23 16:20:17 -08:00
public override void Deserialize(NetworkReader reader)
2021-12-23 16:20:17 -08:00
{
base.Deserialize(reader);
ConditionName = reader.ReadString();
ConditionState = reader.Read<bool>();
2021-12-23 16:20:17 -08:00
}
public override void OnReceiveRemote()
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetDialogueCondition(ConditionName, ConditionState);
}
var sharedInstance = DialogueConditionManager.SharedInstance;
var flag = true;
if (sharedInstance.ConditionExists(ConditionName))
{
if (sharedInstance._dictConditions[ConditionName] == ConditionState)
{
flag = false;
}
sharedInstance._dictConditions[ConditionName] = ConditionState;
}
else
{
sharedInstance.AddCondition(ConditionName, ConditionState);
}
if (flag)
{
GlobalMessenger<string, bool>.FireEvent("DialogueConditionChanged", ConditionName, ConditionState);
}
if (ConditionName == "LAUNCH_CODES_GIVEN")
{
PlayerData.LearnLaunchCodes();
}
2021-12-23 16:20:17 -08:00
}
public override void OnReceiveLocal()
{
if (QSBCore.IsHost)
{
QSBWorldSync.SetDialogueCondition(ConditionName, ConditionState);
}
}
2020-12-11 12:54:19 +00:00
}
2021-12-23 16:20:17 -08:00
}