public static void UpdatePlayerData(byte fromClient, PlayerDataTypes pdtype, string variable, object obj) { using (Packet packet = new Packet((int)ServerPackets.PlayerDataChange)) { packet.Write((int)pdtype); packet.Write(variable); switch (pdtype) { case PlayerDataTypes.Bool: packet.Write((bool)obj); break; case PlayerDataTypes.Float: packet.Write((float)obj); break; case PlayerDataTypes.Int: packet.Write((int)obj); break; case PlayerDataTypes.Other: packet.Write((string)obj); break; case PlayerDataTypes.String: packet.Write((string)obj); break; case PlayerDataTypes.Vector3: packet.Write((Vector3)obj); break; } SendTCPDataToAll(fromClient, packet); } }
///Data(PlayerDataTypes) /// <summary> /// Choose data process by specific datatype. /// </summary> /// <param name="dataType"></param> /// Precondition: dataType must be a valid dataType. /// Postcondition: Depending on a datatype, a function will be called. public void Data(PlayerDataTypes dataType) { Debug.Log(dataType); switch (dataType) { case PlayerDataTypes.none: break; case PlayerDataTypes.GetData: GetUserData(); break; case PlayerDataTypes.ClearData: ClearUserData(); break; } }
public static void SendPDChange(PlayerDataTypes pdtype, string variable, object obj) { try { if (Client.Instance.isConnected && SessionManager.Instance.WSyncClientEnabled) { using (Packet packet = new Packet((int)ClientPackets.PlayerDataChange)) { packet.Write((int)pdtype); packet.Write(variable); switch (pdtype) { case PlayerDataTypes.Bool: packet.Write((bool)obj); break; case PlayerDataTypes.Float: packet.Write((float)obj); break; case PlayerDataTypes.Int: packet.Write((int)obj); break; case PlayerDataTypes.Other: packet.Write((string)obj); break; case PlayerDataTypes.String: packet.Write((string)obj); break; case PlayerDataTypes.Vector3: packet.Write((Vector3)obj); break; } SendTCPData(packet); } } } catch { } }
public static void PlayerDataChange(byte fromClient, Packet packet) { PlayerDataTypes pdtype = (PlayerDataTypes)packet.ReadInt(); string variable = packet.ReadString(); Log(Server.clients[fromClient].player.username + " " + pdtype.ToString() + " " + variable); object obj = null; switch (pdtype) { case PlayerDataTypes.Bool: obj = packet.ReadBool(); break; case PlayerDataTypes.Float: obj = packet.ReadFloat(); break; case PlayerDataTypes.Int: obj = packet.ReadInt(); break; case PlayerDataTypes.Other: obj = packet.ReadString(); break; case PlayerDataTypes.String: obj = packet.ReadString(); break; case PlayerDataTypes.Vector3: obj = packet.ReadVector3(); break; } ServerSend.UpdatePlayerData(fromClient, pdtype, variable, obj); }
public static void PlayerDataSync(Packet packet) { if (PlayerData.instance != null && SessionManager.Instance.WSyncClientEnabled) { PlayerDataTypes pdtype = (PlayerDataTypes)packet.ReadInt(); string variable = packet.ReadString(); bool dosync = true; foreach ((string s, ExclusionType exclusiontype, bool skip) in SAVEEXCLUDE) { dosync = !(exclusiontype == ExclusionType.Contains ? variable.ToLower().Contains(s) : variable.ToLower() == s); if (!dosync) { if (skip) { dosync = true; } break; } } Log("PlayerData Sync " + dosync + " " + variable); if (dosync) { switch (pdtype) { case PlayerDataTypes.Bool: bool b = packet.ReadBool(); Modding.ReflectionHelper.SetAttrSafe <PlayerData, bool>(PlayerData.instance, variable, b); break; case PlayerDataTypes.Float: float f = packet.ReadFloat(); Modding.ReflectionHelper.SetAttrSafe <PlayerData, float>(PlayerData.instance, variable, f); break; case PlayerDataTypes.Int: int i = packet.ReadInt(); Modding.ReflectionHelper.SetAttrSafe <PlayerData, int>(PlayerData.instance, variable, i); break; case PlayerDataTypes.Other: string json = packet.ReadString(); foreach (FieldInfo fi in typeof(PlayerData).GetFields()) { if (fi.Name == variable) { object obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json); fi.SetValue(PlayerData.instance, obj); } } break; case PlayerDataTypes.String: string s = packet.ReadString(); Modding.ReflectionHelper.SetAttrSafe <PlayerData, string>(PlayerData.instance, variable, s); break; case PlayerDataTypes.Vector3: Vector3 v = packet.ReadVector3(); Modding.ReflectionHelper.SetAttrSafe <PlayerData, Vector3>(PlayerData.instance, variable, v); break; } } } }