diff --git a/src/CommandHandlers/SetUserVariablesHandler.cs b/src/CommandHandlers/SetUserVariablesHandler.cs index 93ce912..77c6d89 100644 --- a/src/CommandHandlers/SetUserVariablesHandler.cs +++ b/src/CommandHandlers/SetUserVariablesHandler.cs @@ -67,17 +67,17 @@ class SetUserVariablesHandler : ICommandHandler { if (FP != null) { client.PlayerData.Fp = FP; data2.Add("FP", client.PlayerData.Fp); - vl.Add(NetworkArray.StringParam("FP", client.PlayerData.Fp)); + vl.Add(NetworkArray.Param("FP", client.PlayerData.Fp)); } if (PU != null) { client.PlayerData.Pu = PU; data2.Add("PU", client.PlayerData.Pu); - vl.Add(NetworkArray.StringParam("PU", client.PlayerData.Pu)); + vl.Add(NetworkArray.Param("PU", client.PlayerData.Pu)); } if (L != null) { client.PlayerData.L = L; data2.Add("L", client.PlayerData.L); - vl.Add(NetworkArray.StringParam("L", client.PlayerData.L)); + vl.Add(NetworkArray.Param("L", client.PlayerData.L)); } data.Add("vl", vl); @@ -116,29 +116,29 @@ class SetUserVariablesHandler : ICommandHandler { user.Add((short)client.ClientID); NetworkArray playerData = new(); - playerData.Add(NetworkArray.DoubleParam("R1", client.PlayerData.R1)); - playerData.Add(NetworkArray.StringParam("FP", client.PlayerData.Fp)); - playerData.Add(NetworkArray.DoubleParam("MX", client.PlayerData.Mx)); - playerData.Add(NetworkArray.StringParam("UDT", client.PlayerData.Udt)); - playerData.Add(NetworkArray.DoubleParam("P2", client.PlayerData.P2)); - playerData.Add(NetworkArray.DoubleParam("NT", Runtime.CurrentRuntime)); - playerData.Add(NetworkArray.IntParam("t", (int)(Runtime.CurrentRuntime / 1000))); - playerData.Add(NetworkArray.StringParam("J", client.PlayerData.J)); - playerData.Add(NetworkArray.IntParam("F", client.PlayerData.F)); - playerData.Add(NetworkArray.IntParam("MBF", client.PlayerData.Mbf)); - playerData.Add(NetworkArray.DoubleParam("R2", client.PlayerData.R2)); - playerData.Add(NetworkArray.DoubleParam("R", client.PlayerData.R)); - playerData.Add(NetworkArray.StringParam("BU", client.PlayerData.Bu)); - playerData.Add(NetworkArray.DoubleParam("P1", client.PlayerData.P1)); - playerData.Add(NetworkArray.StringParam("UID", client.PlayerData.Uid)); - playerData.Add(NetworkArray.DoubleParam("R3", client.PlayerData.R3)); - playerData.Add(NetworkArray.StringParam("PU", client.PlayerData.Pu)); - playerData.Add(NetworkArray.StringParam("A", client.PlayerData.A)); - playerData.Add(NetworkArray.StringParam("RA", client.PlayerData.Ra)); - playerData.Add(NetworkArray.DoubleParam("P3", client.PlayerData.P3)); - playerData.Add(NetworkArray.StringParam("CU", client.PlayerData.Cu)); - playerData.Add(NetworkArray.StringParam("M", client.PlayerData.M)); - playerData.Add(NetworkArray.StringParam("L", client.PlayerData.L)); + playerData.Add(NetworkArray.Param("R1", client.PlayerData.R1)); + playerData.Add(NetworkArray.Param("FP", client.PlayerData.Fp)); + playerData.Add(NetworkArray.Param("MX", client.PlayerData.Mx)); + playerData.Add(NetworkArray.Param("UDT", client.PlayerData.Udt)); + playerData.Add(NetworkArray.Param("P2", client.PlayerData.P2)); + playerData.Add(NetworkArray.Param("NT", (double)Runtime.CurrentRuntime)); + playerData.Add(NetworkArray.Param("t", (int)(Runtime.CurrentRuntime / 1000))); + playerData.Add(NetworkArray.Param("J", client.PlayerData.J)); + playerData.Add(NetworkArray.Param("F", client.PlayerData.F)); + playerData.Add(NetworkArray.Param("MBF", client.PlayerData.Mbf)); + playerData.Add(NetworkArray.Param("R2", client.PlayerData.R2)); + playerData.Add(NetworkArray.Param("R", client.PlayerData.R)); + playerData.Add(NetworkArray.Param("BU", client.PlayerData.Bu)); + playerData.Add(NetworkArray.Param("P1", client.PlayerData.P1)); + playerData.Add(NetworkArray.Param("UID", client.PlayerData.Uid)); + playerData.Add(NetworkArray.Param("R3", client.PlayerData.R3)); + playerData.Add(NetworkArray.Param("PU", client.PlayerData.Pu)); + playerData.Add(NetworkArray.Param("A", client.PlayerData.A)); + playerData.Add(NetworkArray.Param("RA", client.PlayerData.Ra)); + playerData.Add(NetworkArray.Param("P3", client.PlayerData.P3)); + playerData.Add(NetworkArray.Param("CU", client.PlayerData.Cu)); + playerData.Add(NetworkArray.Param("M", client.PlayerData.M)); + playerData.Add(NetworkArray.Param("L", client.PlayerData.L)); user.Add(playerData); data.Add("u", user); diff --git a/src/Core/GauntletRoom.cs b/src/Core/GauntletRoom.cs index e1114c2..758601c 100644 --- a/src/Core/GauntletRoom.cs +++ b/src/Core/GauntletRoom.cs @@ -100,7 +100,6 @@ public class GauntletRoom : Room { List info = new(); info.Add("GC"); info.Add(base.Id.ToString()); - int i = 0; foreach(var player in players) { if (player.Value.resultA is null) continue; diff --git a/src/Core/Utils.cs b/src/Core/Utils.cs index df2471d..5194115 100644 --- a/src/Core/Utils.cs +++ b/src/Core/Utils.cs @@ -18,13 +18,7 @@ internal static class Utils { public static NetworkPacket VlNetworkPacket(string a, string b, int roomID) { NetworkArray vl = new(); - NetworkArray vl2 = new(); - vl2.Add(a); - vl2.Add((Byte)4); - vl2.Add(b); - vl2.Add(false); - vl2.Add(false); - vl.Add(vl2); + vl.Add(NetworkArray.VlElement(a, b)); return VlNetworkPacket(vl, roomID); } diff --git a/src/Core/WorldEvent.cs b/src/Core/WorldEvent.cs index 8fe1267..e6f8879 100644 --- a/src/Core/WorldEvent.cs +++ b/src/Core/WorldEvent.cs @@ -163,28 +163,10 @@ class WorldEvent { } NetworkArray vl = new(); - NetworkArray vl1 = new(); - vl1.Add("WE__AI"); - vl1.Add((Byte)0); - vl1.Add(""); - vl1.Add(false); - vl1.Add(false); - vl.Add(vl1); + vl.Add(NetworkArray.VlElement("WE__AI", NetworkArray.NULL)); foreach (var t in health) { - NetworkArray vl2 = new(); - vl2.Add("WEH_" + t.Key); - vl2.Add((Byte)0); - vl2.Add(""); - vl2.Add(false); - vl2.Add(false); - vl.Add(vl2); - NetworkArray vl3 = new(); - vl3.Add("WEF_" + t.Key); - vl3.Add((Byte)0); - vl3.Add(""); - vl3.Add(false); - vl3.Add(false); - vl.Add(vl3); + vl.Add(NetworkArray.VlElement("WEH_" + t.Key, NetworkArray.NULL)); + vl.Add(NetworkArray.VlElement("WEF_" + t.Key, NetworkArray.NULL)); } packet = Utils.VlNetworkPacket(vl, room.Id); foreach (var roomClient in room.Clients) { @@ -235,24 +217,11 @@ class WorldEvent { public NetworkArray EventInfoArray(bool WE = true, bool WEN = true) { NetworkArray vl = new(); if (WE) { - NetworkArray vl1 = new(); - vl1.Add("WE_ScoutAttack"); - vl1.Add((Byte)4); - vl1.Add(EventInfo()); - vl1.Add(false); - vl1.Add(true); - vl.Add(vl1); + vl.Add(NetworkArray.VlElement("WE_ScoutAttack", EventInfo(), isPersistent:true)); } if (WEN) { - NetworkArray vl2 = new(); - vl2.Add("WEN_ScoutAttack"); - vl2.Add((Byte)4); - vl2.Add(nextStartTimeString); - vl2.Add(false); - vl2.Add(true); - vl.Add(vl2); + vl.Add(NetworkArray.VlElement("WEN_ScoutAttack", nextStartTimeString, isPersistent:true)); } - return vl; } diff --git a/src/Data/NetworkArray.cs b/src/Data/NetworkArray.cs index 31756a6..abc0b11 100644 --- a/src/Data/NetworkArray.cs +++ b/src/Data/NetworkArray.cs @@ -102,27 +102,41 @@ public class NetworkArray { return false; } - public static NetworkArray DoubleParam(string name, double value) { - NetworkArray arr = new(); - arr.Add(name); - arr.Add((byte)3); - arr.Add(value); - return arr; + public class NullClass {}; + public static NullClass NULL; + + public void AddWithType(T value) { + if (typeof(T) == typeof(NullClass)) + AddWithTypeObject(NetworkDataType.Null, 0, null); + else if (typeof(T) == typeof(bool)) + AddWithTypeObject(NetworkDataType.Bool, 1, value); + else if (typeof(T) == typeof(int)) + AddWithTypeObject(NetworkDataType.Int, 2, value); + else if (typeof(T) == typeof(double)) + AddWithTypeObject(NetworkDataType.Double, 3, value); + else if (typeof(T) == typeof(string)) + AddWithTypeObject(NetworkDataType.String, 4, value); + else + throw new Exception("Unsupported type"); + } + + private void AddWithTypeObject(NetworkDataType dataType, byte typeId, object obj) { + Add(new DataWrapper(NetworkDataType.Byte,typeId)); + Add(new DataWrapper(dataType, obj)); } - public static NetworkArray StringParam(string name, string value) { + public static NetworkArray Param(string name, T value) { NetworkArray arr = new(); arr.Add(name); - arr.Add((byte)4); - arr.Add(value); + arr.AddWithType(value); return arr; } - - public static NetworkArray IntParam(string name, int value) { + public static NetworkArray VlElement(string name, T value, bool isPrivate = false, bool isPersistent = false) { NetworkArray arr = new(); arr.Add(name); - arr.Add((byte)2); - arr.Add(value); + arr.AddWithType(value); + arr.Add(isPrivate); + arr.Add(isPersistent); return arr; } } diff --git a/src/Data/PlayerData.cs b/src/Data/PlayerData.cs index 58ddefa..ea8e420 100644 --- a/src/Data/PlayerData.cs +++ b/src/Data/PlayerData.cs @@ -107,29 +107,29 @@ public class PlayerData { arr.Add((short)clientID); NetworkArray paramArr = new(); - paramArr.Add(NetworkArray.DoubleParam("R1", R1)); - paramArr.Add(NetworkArray.StringParam("FP", Fp)); - paramArr.Add(NetworkArray.DoubleParam("MX", Mx)); - paramArr.Add(NetworkArray.StringParam("UDT", Udt)); - paramArr.Add(NetworkArray.DoubleParam("P2", P2)); - paramArr.Add(NetworkArray.StringParam("NT", Nt)); - paramArr.Add(NetworkArray.IntParam("t", T)); - paramArr.Add(NetworkArray.StringParam("J", J)); - paramArr.Add(NetworkArray.IntParam("F", F)); - paramArr.Add(NetworkArray.IntParam("MBF", Mbf)); - paramArr.Add(NetworkArray.DoubleParam("R2", R2)); - paramArr.Add(NetworkArray.DoubleParam("R", R)); - paramArr.Add(NetworkArray.StringParam("BU", Bu)); - paramArr.Add(NetworkArray.DoubleParam("P1", P1)); - paramArr.Add(NetworkArray.StringParam("UID", Uid)); - paramArr.Add(NetworkArray.DoubleParam("R3", R3)); - paramArr.Add(NetworkArray.StringParam("PU", Pu)); - paramArr.Add(NetworkArray.StringParam("A", A)); - paramArr.Add(NetworkArray.StringParam("RA", Ra)); - paramArr.Add(NetworkArray.DoubleParam("P3", P3)); - paramArr.Add(NetworkArray.StringParam("CU", Cu)); - paramArr.Add(NetworkArray.StringParam("M", M)); - paramArr.Add(NetworkArray.StringParam("L", L)); + paramArr.Add(NetworkArray.Param("R1", R1)); + paramArr.Add(NetworkArray.Param("FP", Fp)); + paramArr.Add(NetworkArray.Param("MX", Mx)); + paramArr.Add(NetworkArray.Param("UDT", Udt)); + paramArr.Add(NetworkArray.Param("P2", P2)); + paramArr.Add(NetworkArray.Param("NT", Nt)); + paramArr.Add(NetworkArray.Param("t", T)); + paramArr.Add(NetworkArray.Param("J", J)); + paramArr.Add(NetworkArray.Param("F", F)); + paramArr.Add(NetworkArray.Param("MBF", Mbf)); + paramArr.Add(NetworkArray.Param("R2", R2)); + paramArr.Add(NetworkArray.Param("R", R)); + paramArr.Add(NetworkArray.Param("BU", Bu)); + paramArr.Add(NetworkArray.Param("P1", P1)); + paramArr.Add(NetworkArray.Param("UID", Uid)); + paramArr.Add(NetworkArray.Param("R3", R3)); + paramArr.Add(NetworkArray.Param("PU", Pu)); + paramArr.Add(NetworkArray.Param("A", A)); + paramArr.Add(NetworkArray.Param("RA", Ra)); + paramArr.Add(NetworkArray.Param("P3", P3)); + paramArr.Add(NetworkArray.Param("CU", Cu)); + paramArr.Add(NetworkArray.Param("M", M)); + paramArr.Add(NetworkArray.Param("L", L)); arr.Add(paramArr); return arr;