Esempio n. 1
0
 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;
     }
 }
Esempio n. 2
0
 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() );
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
            }
        }
Esempio n. 5
0
        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;
            }
        }