add AddWithType, Param, VlElement to NetworkArray

also:
* replace StringParam, IntParam and DoubleParam by generic Param<T>() method
* use VlElement<T>() to build vl packets for World Event
This commit is contained in:
Robert Paciorek 2024-02-28 00:11:27 +00:00
parent 18ff27f8e7
commit 5c6f39c800
6 changed files with 82 additions and 106 deletions

View File

@ -67,17 +67,17 @@ class SetUserVariablesHandler : ICommandHandler {
if (FP != null) { if (FP != null) {
client.PlayerData.Fp = FP; client.PlayerData.Fp = FP;
data2.Add("FP", client.PlayerData.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) { if (PU != null) {
client.PlayerData.Pu = PU; client.PlayerData.Pu = PU;
data2.Add("PU", client.PlayerData.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) { if (L != null) {
client.PlayerData.L = L; client.PlayerData.L = L;
data2.Add("L", client.PlayerData.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); data.Add("vl", vl);
@ -116,29 +116,29 @@ class SetUserVariablesHandler : ICommandHandler {
user.Add((short)client.ClientID); user.Add((short)client.ClientID);
NetworkArray playerData = new(); NetworkArray playerData = new();
playerData.Add(NetworkArray.DoubleParam("R1", client.PlayerData.R1)); playerData.Add(NetworkArray.Param("R1", client.PlayerData.R1));
playerData.Add(NetworkArray.StringParam("FP", client.PlayerData.Fp)); playerData.Add(NetworkArray.Param("FP", client.PlayerData.Fp));
playerData.Add(NetworkArray.DoubleParam("MX", client.PlayerData.Mx)); playerData.Add(NetworkArray.Param("MX", client.PlayerData.Mx));
playerData.Add(NetworkArray.StringParam("UDT", client.PlayerData.Udt)); playerData.Add(NetworkArray.Param("UDT", client.PlayerData.Udt));
playerData.Add(NetworkArray.DoubleParam("P2", client.PlayerData.P2)); playerData.Add(NetworkArray.Param("P2", client.PlayerData.P2));
playerData.Add(NetworkArray.DoubleParam("NT", Runtime.CurrentRuntime)); playerData.Add(NetworkArray.Param("NT", (double)Runtime.CurrentRuntime));
playerData.Add(NetworkArray.IntParam("t", (int)(Runtime.CurrentRuntime / 1000))); playerData.Add(NetworkArray.Param("t", (int)(Runtime.CurrentRuntime / 1000)));
playerData.Add(NetworkArray.StringParam("J", client.PlayerData.J)); playerData.Add(NetworkArray.Param("J", client.PlayerData.J));
playerData.Add(NetworkArray.IntParam("F", client.PlayerData.F)); playerData.Add(NetworkArray.Param("F", client.PlayerData.F));
playerData.Add(NetworkArray.IntParam("MBF", client.PlayerData.Mbf)); playerData.Add(NetworkArray.Param("MBF", client.PlayerData.Mbf));
playerData.Add(NetworkArray.DoubleParam("R2", client.PlayerData.R2)); playerData.Add(NetworkArray.Param("R2", client.PlayerData.R2));
playerData.Add(NetworkArray.DoubleParam("R", client.PlayerData.R)); playerData.Add(NetworkArray.Param("R", client.PlayerData.R));
playerData.Add(NetworkArray.StringParam("BU", client.PlayerData.Bu)); playerData.Add(NetworkArray.Param("BU", client.PlayerData.Bu));
playerData.Add(NetworkArray.DoubleParam("P1", client.PlayerData.P1)); playerData.Add(NetworkArray.Param("P1", client.PlayerData.P1));
playerData.Add(NetworkArray.StringParam("UID", client.PlayerData.Uid)); playerData.Add(NetworkArray.Param("UID", client.PlayerData.Uid));
playerData.Add(NetworkArray.DoubleParam("R3", client.PlayerData.R3)); playerData.Add(NetworkArray.Param("R3", client.PlayerData.R3));
playerData.Add(NetworkArray.StringParam("PU", client.PlayerData.Pu)); playerData.Add(NetworkArray.Param("PU", client.PlayerData.Pu));
playerData.Add(NetworkArray.StringParam("A", client.PlayerData.A)); playerData.Add(NetworkArray.Param("A", client.PlayerData.A));
playerData.Add(NetworkArray.StringParam("RA", client.PlayerData.Ra)); playerData.Add(NetworkArray.Param("RA", client.PlayerData.Ra));
playerData.Add(NetworkArray.DoubleParam("P3", client.PlayerData.P3)); playerData.Add(NetworkArray.Param("P3", client.PlayerData.P3));
playerData.Add(NetworkArray.StringParam("CU", client.PlayerData.Cu)); playerData.Add(NetworkArray.Param("CU", client.PlayerData.Cu));
playerData.Add(NetworkArray.StringParam("M", client.PlayerData.M)); playerData.Add(NetworkArray.Param("M", client.PlayerData.M));
playerData.Add(NetworkArray.StringParam("L", client.PlayerData.L)); playerData.Add(NetworkArray.Param("L", client.PlayerData.L));
user.Add(playerData); user.Add(playerData);
data.Add("u", user); data.Add("u", user);

View File

@ -100,7 +100,6 @@ public class GauntletRoom : Room {
List<string> info = new(); List<string> info = new();
info.Add("GC"); info.Add("GC");
info.Add(base.Id.ToString()); info.Add(base.Id.ToString());
int i = 0;
foreach(var player in players) { foreach(var player in players) {
if (player.Value.resultA is null) if (player.Value.resultA is null)
continue; continue;

View File

@ -18,13 +18,7 @@ internal static class Utils {
public static NetworkPacket VlNetworkPacket(string a, string b, int roomID) { public static NetworkPacket VlNetworkPacket(string a, string b, int roomID) {
NetworkArray vl = new(); NetworkArray vl = new();
NetworkArray vl2 = new(); vl.Add(NetworkArray.VlElement(a, b));
vl2.Add(a);
vl2.Add((Byte)4);
vl2.Add(b);
vl2.Add(false);
vl2.Add(false);
vl.Add(vl2);
return VlNetworkPacket(vl, roomID); return VlNetworkPacket(vl, roomID);
} }

View File

@ -163,28 +163,10 @@ class WorldEvent {
} }
NetworkArray vl = new(); NetworkArray vl = new();
NetworkArray vl1 = new(); vl.Add(NetworkArray.VlElement("WE__AI", NetworkArray.NULL));
vl1.Add("WE__AI");
vl1.Add((Byte)0);
vl1.Add("");
vl1.Add(false);
vl1.Add(false);
vl.Add(vl1);
foreach (var t in health) { foreach (var t in health) {
NetworkArray vl2 = new(); vl.Add(NetworkArray.VlElement("WEH_" + t.Key, NetworkArray.NULL));
vl2.Add("WEH_" + t.Key); vl.Add(NetworkArray.VlElement("WEF_" + t.Key, NetworkArray.NULL));
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);
} }
packet = Utils.VlNetworkPacket(vl, room.Id); packet = Utils.VlNetworkPacket(vl, room.Id);
foreach (var roomClient in room.Clients) { foreach (var roomClient in room.Clients) {
@ -235,24 +217,11 @@ class WorldEvent {
public NetworkArray EventInfoArray(bool WE = true, bool WEN = true) { public NetworkArray EventInfoArray(bool WE = true, bool WEN = true) {
NetworkArray vl = new(); NetworkArray vl = new();
if (WE) { if (WE) {
NetworkArray vl1 = new(); vl.Add(NetworkArray.VlElement("WE_ScoutAttack", EventInfo(), isPersistent:true));
vl1.Add("WE_ScoutAttack");
vl1.Add((Byte)4);
vl1.Add(EventInfo());
vl1.Add(false);
vl1.Add(true);
vl.Add(vl1);
} }
if (WEN) { if (WEN) {
NetworkArray vl2 = new(); vl.Add(NetworkArray.VlElement("WEN_ScoutAttack", nextStartTimeString, isPersistent:true));
vl2.Add("WEN_ScoutAttack");
vl2.Add((Byte)4);
vl2.Add(nextStartTimeString);
vl2.Add(false);
vl2.Add(true);
vl.Add(vl2);
} }
return vl; return vl;
} }

View File

@ -102,27 +102,41 @@ public class NetworkArray {
return false; return false;
} }
public static NetworkArray DoubleParam(string name, double value) { public class NullClass {};
NetworkArray arr = new(); public static NullClass NULL;
arr.Add(name);
arr.Add((byte)3); public void AddWithType<T>(T value) {
arr.Add(value); if (typeof(T) == typeof(NullClass))
return arr; 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");
} }
public static NetworkArray StringParam(string name, string value) { private void AddWithTypeObject(NetworkDataType dataType, byte typeId, object obj) {
NetworkArray arr = new(); Add(new DataWrapper(NetworkDataType.Byte,typeId));
arr.Add(name); Add(new DataWrapper(dataType, obj));
arr.Add((byte)4);
arr.Add(value);
return arr;
} }
public static NetworkArray IntParam(string name, int value) { public static NetworkArray Param<T>(string name, T value) {
NetworkArray arr = new(); NetworkArray arr = new();
arr.Add(name); arr.Add(name);
arr.Add((byte)2); arr.AddWithType(value);
arr.Add(value); return arr;
}
public static NetworkArray VlElement<T>(string name, T value, bool isPrivate = false, bool isPersistent = false) {
NetworkArray arr = new();
arr.Add(name);
arr.AddWithType(value);
arr.Add(isPrivate);
arr.Add(isPersistent);
return arr; return arr;
} }
} }

View File

@ -107,29 +107,29 @@ public class PlayerData {
arr.Add((short)clientID); arr.Add((short)clientID);
NetworkArray paramArr = new(); NetworkArray paramArr = new();
paramArr.Add(NetworkArray.DoubleParam("R1", R1)); paramArr.Add(NetworkArray.Param("R1", R1));
paramArr.Add(NetworkArray.StringParam("FP", Fp)); paramArr.Add(NetworkArray.Param("FP", Fp));
paramArr.Add(NetworkArray.DoubleParam("MX", Mx)); paramArr.Add(NetworkArray.Param("MX", Mx));
paramArr.Add(NetworkArray.StringParam("UDT", Udt)); paramArr.Add(NetworkArray.Param("UDT", Udt));
paramArr.Add(NetworkArray.DoubleParam("P2", P2)); paramArr.Add(NetworkArray.Param("P2", P2));
paramArr.Add(NetworkArray.StringParam("NT", Nt)); paramArr.Add(NetworkArray.Param("NT", Nt));
paramArr.Add(NetworkArray.IntParam("t", T)); paramArr.Add(NetworkArray.Param("t", T));
paramArr.Add(NetworkArray.StringParam("J", J)); paramArr.Add(NetworkArray.Param("J", J));
paramArr.Add(NetworkArray.IntParam("F", F)); paramArr.Add(NetworkArray.Param("F", F));
paramArr.Add(NetworkArray.IntParam("MBF", Mbf)); paramArr.Add(NetworkArray.Param("MBF", Mbf));
paramArr.Add(NetworkArray.DoubleParam("R2", R2)); paramArr.Add(NetworkArray.Param("R2", R2));
paramArr.Add(NetworkArray.DoubleParam("R", R)); paramArr.Add(NetworkArray.Param("R", R));
paramArr.Add(NetworkArray.StringParam("BU", Bu)); paramArr.Add(NetworkArray.Param("BU", Bu));
paramArr.Add(NetworkArray.DoubleParam("P1", P1)); paramArr.Add(NetworkArray.Param("P1", P1));
paramArr.Add(NetworkArray.StringParam("UID", Uid)); paramArr.Add(NetworkArray.Param("UID", Uid));
paramArr.Add(NetworkArray.DoubleParam("R3", R3)); paramArr.Add(NetworkArray.Param("R3", R3));
paramArr.Add(NetworkArray.StringParam("PU", Pu)); paramArr.Add(NetworkArray.Param("PU", Pu));
paramArr.Add(NetworkArray.StringParam("A", A)); paramArr.Add(NetworkArray.Param("A", A));
paramArr.Add(NetworkArray.StringParam("RA", Ra)); paramArr.Add(NetworkArray.Param("RA", Ra));
paramArr.Add(NetworkArray.DoubleParam("P3", P3)); paramArr.Add(NetworkArray.Param("P3", P3));
paramArr.Add(NetworkArray.StringParam("CU", Cu)); paramArr.Add(NetworkArray.Param("CU", Cu));
paramArr.Add(NetworkArray.StringParam("M", M)); paramArr.Add(NetworkArray.Param("M", M));
paramArr.Add(NetworkArray.StringParam("L", L)); paramArr.Add(NetworkArray.Param("L", L));
arr.Add(paramArr); arr.Add(paramArr);
return arr; return arr;