From d42041e7d8595c5f0f8b484150a21a5f9e05fdfb Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 1 Dec 2021 09:48:11 +0000 Subject: [PATCH] fix variable reference warnings --- .../VariableSync/BaseVariableSyncer.cs | 2 ++ .../VariableSync/BoolVariableSyncer.cs | 27 ++++++++++++++++--- .../VariableSync/FloatVariableSyncer.cs | 27 ++++++++++++++++--- QSB/Utility/VariableSync/VariableReference.cs | 13 +++++---- .../VariableSync/Vector3VariableSyncer.cs | 27 ++++++++++++++++--- 5 files changed, 79 insertions(+), 17 deletions(-) diff --git a/QSB/Utility/VariableSync/BaseVariableSyncer.cs b/QSB/Utility/VariableSync/BaseVariableSyncer.cs index c2e884b1..1bc15024 100644 --- a/QSB/Utility/VariableSync/BaseVariableSyncer.cs +++ b/QSB/Utility/VariableSync/BaseVariableSyncer.cs @@ -17,6 +17,8 @@ namespace QSB.Utility.VariableSync public abstract void WriteData(QNetworkWriter writer); public abstract void ReadData(QNetworkReader writer); + public bool Ready => _ready; + public virtual void Awake() { QNetworkServer.instance.m_SimpleServerSimple.RegisterHandlerSafe(short.MaxValue, HandleVariable); diff --git a/QSB/Utility/VariableSync/BoolVariableSyncer.cs b/QSB/Utility/VariableSync/BoolVariableSyncer.cs index 58040b6b..874fadca 100644 --- a/QSB/Utility/VariableSync/BoolVariableSyncer.cs +++ b/QSB/Utility/VariableSync/BoolVariableSyncer.cs @@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync { public class BoolVariableSyncer : BaseVariableSyncer { - public VariableReference ValueToSync { get; private set; } = new(); + public VariableReference ValueToSync { get; private set; } public void Init(Func getter, Action setter) { + ValueToSync = new(this); ValueToSync.Getter = getter; ValueToSync.Setter = setter; _ready = true; @@ -18,9 +19,27 @@ namespace QSB.Utility.VariableSync => _ready = false; public override void WriteData(QNetworkWriter writer) - => writer.Write(ValueToSync.Value); + { + if (Ready) + { + writer.Write(ValueToSync.Value); + } + else + { + writer.Write(default(bool)); + } + } - public override void ReadData(QNetworkReader writer) - => ValueToSync.Value = writer.ReadBoolean(); + public override void ReadData(QNetworkReader reader) + { + if (Ready) + { + ValueToSync.Value = reader.ReadBoolean(); + } + else + { + reader.ReadBoolean(); + } + } } } diff --git a/QSB/Utility/VariableSync/FloatVariableSyncer.cs b/QSB/Utility/VariableSync/FloatVariableSyncer.cs index 37cbe735..5a49bf5d 100644 --- a/QSB/Utility/VariableSync/FloatVariableSyncer.cs +++ b/QSB/Utility/VariableSync/FloatVariableSyncer.cs @@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync { public class FloatVariableSyncer : BaseVariableSyncer { - public VariableReference ValueToSync { get; private set; } = new(); + public VariableReference ValueToSync { get; private set; } public void Init(Func getter, Action setter) { + ValueToSync = new(this); ValueToSync.Getter = getter; ValueToSync.Setter = setter; _ready = true; @@ -18,9 +19,27 @@ namespace QSB.Utility.VariableSync => _ready = false; public override void WriteData(QNetworkWriter writer) - => writer.Write(ValueToSync.Value); + { + if (Ready) + { + writer.Write(ValueToSync.Value); + } + else + { + writer.Write(default(float)); + } + } - public override void ReadData(QNetworkReader writer) - => ValueToSync.Value = writer.ReadSingle(); + public override void ReadData(QNetworkReader reader) + { + if (Ready) + { + ValueToSync.Value = reader.ReadSingle(); + } + else + { + reader.ReadSingle(); + } + } } } diff --git a/QSB/Utility/VariableSync/VariableReference.cs b/QSB/Utility/VariableSync/VariableReference.cs index cf2f6006..f2343bb5 100644 --- a/QSB/Utility/VariableSync/VariableReference.cs +++ b/QSB/Utility/VariableSync/VariableReference.cs @@ -1,14 +1,17 @@ -using QSB.Player; -using QSB.Player.TransformSync; -using System; +using System; namespace QSB.Utility.VariableSync { public class VariableReference { + private BaseVariableSyncer _owner; + public Func Getter; public Action Setter; + public VariableReference(BaseVariableSyncer owner) + => _owner = owner; + public T Value { get @@ -19,7 +22,7 @@ namespace QSB.Utility.VariableSync } else { - if (PlayerTransformSync.LocalInstance != null && QSBPlayerManager.LocalPlayer.IsReady) + if (_owner.Ready) { DebugLog.ToConsole($"Warning - Getter is null!", OWML.Common.MessageType.Warning); } @@ -35,7 +38,7 @@ namespace QSB.Utility.VariableSync } else { - if (PlayerTransformSync.LocalInstance != null && QSBPlayerManager.LocalPlayer.IsReady) + if (_owner.Ready) { DebugLog.ToConsole($"Warning - Setter is null!", OWML.Common.MessageType.Warning); } diff --git a/QSB/Utility/VariableSync/Vector3VariableSyncer.cs b/QSB/Utility/VariableSync/Vector3VariableSyncer.cs index bc91b37b..4c8ad761 100644 --- a/QSB/Utility/VariableSync/Vector3VariableSyncer.cs +++ b/QSB/Utility/VariableSync/Vector3VariableSyncer.cs @@ -6,10 +6,11 @@ namespace QSB.Utility.VariableSync { public class Vector3VariableSyncer : BaseVariableSyncer { - public VariableReference ValueToSync { get; private set; } = new(); + public VariableReference ValueToSync { get; private set; } public void Init(Func getter, Action setter) { + ValueToSync = new(this); ValueToSync.Getter = getter; ValueToSync.Setter = setter; _ready = true; @@ -19,9 +20,27 @@ namespace QSB.Utility.VariableSync => _ready = false; public override void WriteData(QNetworkWriter writer) - => writer.Write(ValueToSync.Value); + { + if (Ready) + { + writer.Write(ValueToSync.Value); + } + else + { + writer.Write(default(Vector3)); + } + } - public override void ReadData(QNetworkReader writer) - => ValueToSync.Value = writer.ReadVector3(); + public override void ReadData(QNetworkReader reader) + { + if (Ready) + { + ValueToSync.Value = reader.ReadVector3(); + } + else + { + reader.ReadVector3(); + } + } } }