private static void ApplyEnum <TEnum>([NotNull] ComboBox box, ConfigKey key, TEnum def) where TEnum : struct { if (box == null) { throw new ArgumentNullException("box"); } if (!typeof(TEnum).IsEnum) { throw new ArgumentException("Enum type required"); } try { if (key.IsBlank()) { box.SelectedIndex = (int)(object)def; } else { box.SelectedIndex = (int)Enum.Parse(typeof(TEnum), key.GetString(), true); } } catch (ArgumentException) { box.SelectedIndex = (int)(object)def; } }
static void WriteEnum<TEnum>( [NotNull] ComboBox box, ConfigKey key ) where TEnum : struct { if( box == null ) throw new ArgumentNullException( "box" ); if( !typeof( TEnum ).IsEnum ) throw new ArgumentException( "Enum type required" ); try { TEnum val = (TEnum)Enum.Parse( typeof( TEnum ), box.SelectedIndex.ToString( CultureInfo.InvariantCulture ), true ); key.TrySetValue( val ); } catch( ArgumentException ) { Logger.Log( LogType.Error, "ConfigUI.WriteEnum<{0}>: Could not parse value for {1}. Using default ({2}).", typeof( TEnum ).Name, key, key.GetString() ); } }
static MenuState ShowKey() { ShowSeparator(); var meta = currentKey.GetMetadata(); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Key {0} in section {1}", currentKey, currentSection); Console.Write(" Description: "); Console.ResetColor(); string[] newlineSeparator = new[] { "\r\n" }; string[] descriptionLines = meta.Description.Split(newlineSeparator, StringSplitOptions.RemoveEmptyEntries); Console.WriteLine(descriptionLines[0]); for (int i = 1; i < descriptionLines.Length; i++) { Console.WriteLine(" " + descriptionLines[i]); } Console.ForegroundColor = ConsoleColor.White; Console.Write(" Type: "); Console.ResetColor(); Console.WriteLine(meta.ValueType.Name); Console.ForegroundColor = ConsoleColor.White; Console.Write(" Default value: "); Console.ResetColor(); Console.WriteLine(meta.DefaultValue); Console.ForegroundColor = ConsoleColor.White; Console.Write(" Current value: "); Console.ResetColor(); Console.WriteLine(currentKey.GetString()); Console.ForegroundColor = ConsoleColor.White; Console.Write(" New value: "); Console.ResetColor(); while (true) { try { currentKey.SetValue(Console.ReadLine()); break; } catch (FormatException ex) { Console.WriteLine(ex.Message); } } return(MenuState.KeyList); }
static void WriteEnum <TEnum>(ComboBox box, ConfigKey key) where TEnum : struct { #if DEBUG if (!typeof(TEnum).IsEnum) { throw new ArgumentException("Enum type required", "TEnum"); } #endif try { TEnum val = (TEnum)Enum.Parse(typeof(TEnum), box.SelectedIndex.ToString(), true); Config.TrySetValue(key, val); } catch (ArgumentException) { Logger.Log("ConfigUI.WriteEnum<{0}>: Could not parse value for {1}. Using default ({2}).", LogType.Error, typeof(TEnum).Name, key, key.GetString()); } }
static void ApplyKeyChange(ConfigKey key) { switch (key) { case ConfigKey.AnnouncementColor: Color.Announcement = Color.Parse(key.GetString()); break; case ConfigKey.AntispamInterval: Player.AntispamInterval = key.GetInt(); break; case ConfigKey.AntispamMessageCount: Player.AntispamMessageCount = key.GetInt(); break; case ConfigKey.DefaultBuildRank: RankManager.DefaultBuildRank = Rank.Parse(key.GetString()); break; case ConfigKey.DefaultRank: RankManager.DefaultRank = Rank.Parse(key.GetString()); break; case ConfigKey.BandwidthUseMode: Player[] playerListCache = Server.Players; if (playerListCache != null) { foreach (Player p in playerListCache) { if (p.BandwidthUseMode == BandwidthUseMode.Default) { // resets the use tweaks p.BandwidthUseMode = BandwidthUseMode.Default; } } } break; case ConfigKey.BlockDBAutoEnableRank: RankManager.BlockDBAutoEnableRank = Rank.Parse(key.GetString()); if (BlockDB.IsEnabledGlobally) { World[] worldListCache = WorldManager.Worlds; foreach (World world in worldListCache) { if (world.BlockDB.AutoToggleIfNeeded()) { if (world.BlockDB.IsEnabled) { Logger.Log(LogType.SystemActivity, "BlockDB is now auto-enabled on world {0}", world.Name); } else { Logger.Log(LogType.SystemActivity, "BlockDB is now auto-disabled on world {0}", world.Name); } } } } break; case ConfigKey.BlockUpdateThrottling: Server.BlockUpdateThrottling = key.GetInt(); break; case ConfigKey.ConsoleName: if (Player.Console != null) { Player.Console.Info.Name = key.GetString(); } break; case ConfigKey.HelpColor: Color.Help = Color.Parse(key.GetString()); break; case ConfigKey.IRCDelay: IRC.SendDelay = key.GetInt(); break; case ConfigKey.IRCMessageColor: Color.IRC = Color.Parse(key.GetString()); break; case ConfigKey.LogMode: Logger.SplittingType = key.GetEnum <LogSplittingType>(); break; case ConfigKey.MapPath: if (!Paths.IgnoreMapPathConfigKey && GetString(ConfigKey.MapPath).Length > 0) { if (Paths.TestDirectory("MapPath", GetString(ConfigKey.MapPath), true)) { Paths.MapPath = Path.GetFullPath(GetString(ConfigKey.MapPath)); } } break; case ConfigKey.MaxUndo: BuildingCommands.MaxUndoCount = key.GetInt(); break; case ConfigKey.MeColor: Color.Me = Color.Parse(key.GetString()); break; case ConfigKey.NoPartialPositionUpdates: if (key.Enabled()) { Player.FullPositionUpdateInterval = 0; } else { Player.FullPositionUpdateInterval = Player.FullPositionUpdateIntervalDefault; } break; case ConfigKey.PatrolledRank: RankManager.PatrolledRank = Rank.Parse(key.GetString()); break; case ConfigKey.PrivateMessageColor: Color.PM = Color.Parse(key.GetString()); break; case ConfigKey.RelayAllBlockUpdates: Player.RelayAllUpdates = key.Enabled(); break; case ConfigKey.SayColor: Color.Say = Color.Parse(key.GetString()); break; case ConfigKey.SystemMessageColor: Color.Sys = Color.Parse(key.GetString()); break; case ConfigKey.TickInterval: Server.TicksPerSecond = 1000 / (float)key.GetInt(); break; case ConfigKey.UploadBandwidth: Server.MaxUploadSpeed = key.GetInt(); break; case ConfigKey.WarningColor: Color.Warning = Color.Parse(key.GetString()); break; } }