Ejemplo n.º 1
0
        static void AddRank(Rank newRank)
        {
            Console.WriteLine();
            Console.WriteLine("Where to position the new rank?");
            TextMenu   menu = new TextMenu();
            TextOption optionTop = menu.AddOption("T", "Top of the hierarchy");
            TextOption optionBottom = menu.AddOption("B", "Bottom of the hierarchy");
            TextOption optionCancel = menu.AddOption("C", "Cancel");
            TextOption optionAbove = null, optionUnder = null;

            if (RankManager.Ranks.Count > 1)
            {
                menu.Column = Column.Right;
                optionAbove = menu.AddOption("O", "Over a specific rank");
                optionUnder = menu.AddOption("U", "Under a specific rank");
            }

            TextOption choice = menu.Show();

            if (choice == optionCancel)
            {
                return;
            }

            if (choice == optionTop)
            {
                RankManager.AddRank(newRank, 0);
            }
            else if (choice == optionBottom)
            {
                RankManager.AddRank(newRank);
            }
            else if (choice == optionAbove)
            {
                int otherRankIndex = TextMenu.ShowNumber("Above which rank?",
                                                         1, RankManager.Ranks.Count);
                if (otherRankIndex == -1)
                {
                    return;
                }
                RankManager.AddRank(newRank, otherRankIndex - 1);
            }
            else if (choice == optionUnder)
            {
                int otherRankIndex = TextMenu.ShowNumber("Under which rank?",
                                                         1, RankManager.Ranks.Count);
                if (otherRankIndex == -1)
                {
                    return;
                }
                RankManager.AddRank(newRank, otherRankIndex);
            }
        }
Ejemplo n.º 2
0
        static void LoadRankList([NotNull] XContainer el, bool fromFile)
        {
            if (el == null)
            {
                throw new ArgumentNullException("el");
            }

            XElement legacyRankMappingTag = el.Element("LegacyRankMapping");

            if (legacyRankMappingTag != null)
            {
                foreach (XElement rankPair in legacyRankMappingTag.Elements("LegacyRankPair"))
                {
                    XAttribute fromRankID = rankPair.Attribute("from");
                    XAttribute toRankID   = rankPair.Attribute("to");
                    if (fromRankID == null || String.IsNullOrEmpty(fromRankID.Value) ||
                        toRankID == null || String.IsNullOrEmpty(toRankID.Value))
                    {
                        Logger.Log(LogType.Error,
                                   "Config.Load: Could not parse a LegacyRankMapping entry: {0}", rankPair);
                    }
                    else
                    {
                        //TODO: RankManager.LegacyRankMapping.Add( fromRankID.Value, toRankID.Value );
                    }
                }
            }

            XElement rankList = el.Element("Ranks");

            if (rankList != null)
            {
                XElement[] rankDefinitionList = rankList.Elements("Rank").ToArray();

                foreach (XElement rankDefinition in rankDefinitionList)
                {
                    try {
                        RankManager.AddRank(new Rank(rankDefinition));
                    } catch (RankDefinitionException ex) {
                        Logger.Log(LogType.Error, ex.Message);
                    }
                }

                if (RankManager.RanksByName.Count == 0)
                {
                    Logger.Log(LogType.Warning,
                               "Config.Load: No ranks were defined, or none were defined correctly. " +
                               "Using default ranks (guest, builder, op, and owner).");
                    rankList.Remove();
                    //TODO: el.Add( RankManager.DefineDefaultRanks() );
                }
            }
            else
            {
                if (fromFile)
                {
                    Logger.Log(LogType.Warning, "Config.Load: using default player ranks.");
                }
                //TODO: el.Add( RankManager.DefineDefaultRanks() );
            }

            // parse rank-limit permissions
            //TODO: RankManager.ParsePermissionLimits();
        }