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