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 WriteData(QNetworkWriter writer);
public abstract void ReadData(QNetworkReader writer); public abstract void ReadData(QNetworkReader writer);
public bool Ready => _ready;
public virtual void Awake() public virtual void Awake()
{ {
QNetworkServer.instance.m_SimpleServerSimple.RegisterHandlerSafe(short.MaxValue, HandleVariable); QNetworkServer.instance.m_SimpleServerSimple.RegisterHandlerSafe(short.MaxValue, HandleVariable);

View File

@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync
{ {
public class BoolVariableSyncer : BaseVariableSyncer 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) public void Init(Func<bool> getter, Action<bool> setter)
{ {
ValueToSync = new(this);
ValueToSync.Getter = getter; ValueToSync.Getter = getter;
ValueToSync.Setter = setter; ValueToSync.Setter = setter;
_ready = true; _ready = true;
@ -18,9 +19,27 @@ namespace QSB.Utility.VariableSync
=> _ready = false; => _ready = false;
public override void WriteData(QNetworkWriter writer) 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) public override void ReadData(QNetworkReader reader)
=> ValueToSync.Value = writer.ReadBoolean(); {
if (Ready)
{
ValueToSync.Value = reader.ReadBoolean();
}
else
{
reader.ReadBoolean();
}
}
} }
} }

View File

@ -5,10 +5,11 @@ namespace QSB.Utility.VariableSync
{ {
public class FloatVariableSyncer : BaseVariableSyncer 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) public void Init(Func<float> getter, Action<float> setter)
{ {
ValueToSync = new(this);
ValueToSync.Getter = getter; ValueToSync.Getter = getter;
ValueToSync.Setter = setter; ValueToSync.Setter = setter;
_ready = true; _ready = true;
@ -18,9 +19,27 @@ namespace QSB.Utility.VariableSync
=> _ready = false; => _ready = false;
public override void WriteData(QNetworkWriter writer) 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) public override void ReadData(QNetworkReader reader)
=> ValueToSync.Value = writer.ReadSingle(); {
if (Ready)
{
ValueToSync.Value = reader.ReadSingle();
}
else
{
reader.ReadSingle();
}
}
} }
} }

View File

@ -1,14 +1,17 @@
using QSB.Player; using System;
using QSB.Player.TransformSync;
using System;
namespace QSB.Utility.VariableSync namespace QSB.Utility.VariableSync
{ {
public class VariableReference<T> public class VariableReference<T>
{ {
private BaseVariableSyncer _owner;
public Func<T> Getter; public Func<T> Getter;
public Action<T> Setter; public Action<T> Setter;
public VariableReference(BaseVariableSyncer owner)
=> _owner = owner;
public T Value public T Value
{ {
get get
@ -19,7 +22,7 @@ namespace QSB.Utility.VariableSync
} }
else else
{ {
if (PlayerTransformSync.LocalInstance != null && QSBPlayerManager.LocalPlayer.IsReady) if (_owner.Ready)
{ {
DebugLog.ToConsole($"Warning - Getter is null!", OWML.Common.MessageType.Warning); DebugLog.ToConsole($"Warning - Getter is null!", OWML.Common.MessageType.Warning);
} }
@ -35,7 +38,7 @@ namespace QSB.Utility.VariableSync
} }
else else
{ {
if (PlayerTransformSync.LocalInstance != null && QSBPlayerManager.LocalPlayer.IsReady) if (_owner.Ready)
{ {
DebugLog.ToConsole($"Warning - Setter is null!", OWML.Common.MessageType.Warning); 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 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) public void Init(Func<Vector3> getter, Action<Vector3> setter)
{ {
ValueToSync = new(this);
ValueToSync.Getter = getter; ValueToSync.Getter = getter;
ValueToSync.Setter = setter; ValueToSync.Setter = setter;
_ready = true; _ready = true;
@ -19,9 +20,27 @@ namespace QSB.Utility.VariableSync
=> _ready = false; => _ready = false;
public override void WriteData(QNetworkWriter writer) 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) public override void ReadData(QNetworkReader reader)
=> ValueToSync.Value = writer.ReadVector3(); {
if (Ready)
{
ValueToSync.Value = reader.ReadVector3();
}
else
{
reader.ReadVector3();
}
}
} }
} }