fix variable reference warnings

This commit is contained in:
Mister_Nebula 2021-12-01 09:48:11 +00:00
parent 4dc5d0ce63
commit d42041e7d8
5 changed files with 79 additions and 17 deletions

View File

@ -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);

View File

@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync
{
public class BoolVariableSyncer : BaseVariableSyncer
{
public VariableReference<bool> ValueToSync { get; private set; } = new();
public VariableReference<bool> ValueToSync { get; private set; }
public void Init(Func<bool> getter, Action<bool> 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();
}
}
}
}

View File

@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync
{
public class FloatVariableSyncer : BaseVariableSyncer
{
public VariableReference<float> ValueToSync { get; private set; } = new();
public VariableReference<float> ValueToSync { get; private set; }
public void Init(Func<float> getter, Action<float> 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();
}
}
}
}

View File

@ -1,14 +1,17 @@
using QSB.Player;
using QSB.Player.TransformSync;
using System;
using System;
namespace QSB.Utility.VariableSync
{
public class VariableReference<T>
{
private BaseVariableSyncer _owner;
public Func<T> Getter;
public Action<T> 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);
}

View File

@ -6,10 +6,11 @@ namespace QSB.Utility.VariableSync
{
public class Vector3VariableSyncer : BaseVariableSyncer
{
public VariableReference<Vector3> ValueToSync { get; private set; } = new();
public VariableReference<Vector3> ValueToSync { get; private set; }
public void Init(Func<Vector3> getter, Action<Vector3> 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();
}
}
}
}