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);
        }
示例#5
0
        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;
                    }
                }
            }
        }