Esempio n. 1
0
        private void WriteProperty(BgoProtocolWriter w, IDictionary <UserSetting, object> settings, UserSetting property)
        {
            object obj = settings[property];

            w.Write((byte)property);
            UserSettingValueType valueType = GetValueType(property);

            w.Write((byte)valueType);
            switch (valueType)
            {
            case UserSettingValueType.Byte:
                w.Write((byte)obj);
                break;

            case UserSettingValueType.Float:
                w.Write((float)obj);
                break;

            case UserSettingValueType.Boolean:
                w.Write((bool)obj);
                break;

            case UserSettingValueType.Integer:
                w.Write((int)obj);
                break;

            case UserSettingValueType.Float2:
            {
                float2 @float = (float2)obj;
                w.Write(@float.x);
                w.Write(@float.y);
                break;
            }

            case UserSettingValueType.HelpScreenType:
            {
                List <HelpScreenType> list = (List <HelpScreenType>)obj;
                w.Write((ushort)list.Count);
                foreach (HelpScreenType item in list)
                {
                    w.Write((ushort)item);
                }
                break;
            }

            default:
                w.Write((byte)0);
                break;
            }
        }
Esempio n. 2
0
        public static void ReadSettingsFromDatabase(int index, IDictionary <string, string> settings)
        {
            IDictionary <UserSetting, object> newSettings = new Dictionary <UserSetting, object>();

            foreach (KeyValuePair <string, string> setting in settings)
            {
                UserSetting          userSetting = (UserSetting)Enum.Parse(typeof(UserSetting), setting.Key);
                UserSettingValueType valueType   = GetValueType(userSetting);
                switch (valueType)
                {
                case UserSettingValueType.Byte:
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;

                case UserSettingValueType.Float:
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;

                case UserSettingValueType.Boolean:
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;

                case UserSettingValueType.Integer:
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;

                case UserSettingValueType.Float2:
                {
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;
                }

                case UserSettingValueType.HelpScreenType:
                {
                    newSettings.Add(userSetting, ParseValueType(setting.Value));
                    break;
                }

                default:

                    break;
                }
            }

            Server.GetClientByIndex(index).Character.settings = newSettings;
        }
Esempio n. 3
0
        private void ReadProperty(IDictionary <UserSetting, object> settings, BgoProtocolReader br)
        {
            UserSetting          property  = (UserSetting)br.ReadByte();
            UserSettingValueType valueType = (UserSettingValueType)br.ReadByte();

            switch (valueType)
            {
            case UserSettingValueType.Byte:
                settings.Add(property, br.ReadByte());
                break;

            case UserSettingValueType.Float:
                settings.Add(property, br.ReadSingle());
                break;

            case UserSettingValueType.Boolean:
                settings.Add(property, br.ReadBoolean());
                break;

            case UserSettingValueType.Integer:
                settings.Add(property, br.ReadInt32());
                break;

            case UserSettingValueType.Float2:
            {
                settings.Add(property, new float2(br.ReadSingle(), br.ReadSingle()));
                break;
            }

            case UserSettingValueType.HelpScreenType:
            {
                List <HelpScreenType> hstList = new List <HelpScreenType>();
                int hstSize = br.ReadUInt16();
                for (int i = 0; i < hstSize; i++)
                {
                    hstList.Add((HelpScreenType)br.ReadUInt16());
                }
                settings.Add(property, hstList);
                break;
            }

            default:
                settings.Add(property, br.ReadByte());
                break;
            }
        }
        public static void SaveSettings(string id, IDictionary <UserSetting, object> settings)
        {
            if (GetUserById(id) == null)
            {
                return;
            }

            IDictionary <string, string> newSettings = new Dictionary <string, string>();

            foreach (KeyValuePair <UserSetting, object> setting in settings)
            {
                UserSettingValueType valueType = SettingProtocol.GetValueType(setting.Key);
                switch (valueType)
                {
                case UserSettingValueType.Byte:
                    newSettings.Add(setting.Key.ToString(), "byte|" + setting.Value);
                    break;

                case UserSettingValueType.Float:
                    newSettings.Add(setting.Key.ToString(), "float|" + setting.Value);
                    break;

                case UserSettingValueType.Boolean:
                    newSettings.Add(setting.Key.ToString(), "bool|" + setting.Value);
                    break;

                case UserSettingValueType.Integer:
                    newSettings.Add(setting.Key.ToString(), "int|" + setting.Value);
                    break;

                case UserSettingValueType.Float2:
                {
                    float2 @float = (float2)setting.Value;
                    newSettings.Add(setting.Key.ToString(), "float2|" + ((float2)setting.Value).x + "|" + ((float2)setting.Value).y);
                    break;
                }

                case UserSettingValueType.HelpScreenType:
                {
                    List <HelpScreenType> list = (List <HelpScreenType>)setting.Value;
                    string listString          = "";
                    foreach (HelpScreenType item in list)
                    {
                        listString += item.ToString() + "|";
                    }
                    newSettings.Add(setting.Key.ToString(), "hstList|" + list.Count + "|" + listString);

                    break;
                }

                default:

                    break;
                }
            }

            Expression <Func <Users, bool> > filter =
                x => x.PlayerId.Equals(id);
            Users user = colUsers.Find(filter).FirstOrDefault();

            user.settings = newSettings;
            colUsers.ReplaceOne(filter, user);
        }