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; } }
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; }
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); }