TheEditorUK

RankingManager

Jun 6th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.45 KB | None | 0 0
  1. using log4net;
  2. using Mango.Attributes;
  3. using Mango.Database.Exceptions;
  4. using Mango.Players;
  5. using MySql.Data.MySqlClient;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10.  
  11. namespace Mango.Roleplay.Rankings
  12. {
  13.     sealed class RankingManager
  14.     {
  15.         private static readonly ILog log = LogManager.GetLogger("Mango.Roleplay.Rankings.RankingManager");
  16.  
  17.         /// <summary>
  18.         /// This collection contains all ranks.
  19.         /// </summary>
  20.         private readonly Dictionary<int, Rank> _ranks;
  21.  
  22.         /// <summary>
  23.         /// Initializes a new instance of the RankingManager.
  24.         /// </summary>
  25.         public RankingManager()
  26.         {
  27.             this._ranks = new Dictionary<int, Rank>();
  28.         }
  29.  
  30.         /// <summary>
  31.         /// Initializes all components within the RankingManager.
  32.         /// </summary>
  33.         public void Init()
  34.         {
  35.             using (var DbCon = Mango.GetServer().GetDatabase().GetConnection())
  36.             {
  37.                 DbCon.SetQuery("SELECT * FROM `roleplay_rankings`");
  38.                 DbCon.Open();
  39.  
  40.                 using (MySqlDataReader Reader = DbCon.ExecuteReader())
  41.                 {
  42.                     while (Reader.Read())
  43.                     {
  44.                         try
  45.                         {
  46.                             this._ranks.Add(Reader.GetInt32("experience_required"), new Rank(Reader.GetInt32("id"), Reader.GetString("name"),
  47.                                 Reader.GetString("description"), Reader.GetInt32("experience_required")));
  48.                         }
  49.                         catch (DatabaseException ex)
  50.                         {
  51.                             log.Error("Unable to load Rank for ID [" + Reader.GetInt32("id") + "]", ex);
  52.                         }
  53.                     }
  54.                 }
  55.             }
  56.  
  57.             log.Info("Loaded " + this._ranks.Count + " ranking definitions.");
  58.         }
  59.  
  60.         /// <summary>
  61.         /// Checks if the player has the required amount of experience to rank up using the suggested data.
  62.         /// </summary>
  63.         /// <param name="Player"></param>
  64.         /// <param name="Rank"></param>
  65.         /// <returns></returns>
  66.         public bool HasRequired(Player Player, out Rank Rank)
  67.         {
  68.             return this._ranks.TryGetValue(Player.GetSession().GetRoleplayer().Experience, out Rank);
  69.         }
  70.  
  71.         /// <summary>
  72.         /// Attempts to get an existing rank using the suggested experience required.
  73.         /// </summary>
  74.         /// <param name="ExperienceRequired"></param>
  75.         /// <param name="Rank"></param>s
  76.         /// <returns></returns>
  77.         public bool TryGet(int ExperienceRequired, out Rank Rank)
  78.         {
  79.             return this._ranks.TryGetValue((ExperienceRequired + 50) / 100 * 100, out Rank);
  80.         }
  81.  
  82.         /// <summary>
  83.         /// Checks if an existing rank is available using the suggested experience required.
  84.         /// </summary>
  85.         /// <param name="ExperienceRequired"></param>
  86.         /// <returns></returns>
  87.         public bool Contains(int ExperienceRequired)
  88.         {
  89.             return this._ranks.ContainsKey((ExperienceRequired + 50) / 100 * 100);
  90.         }
  91.  
  92.         /// <summary>
  93.         /// Clears the RankingManager.
  94.         /// </summary>
  95.         [DevNoticeAttribute("Used for debugging.")]
  96.         public void Clear()
  97.         {
  98.             this._ranks.Clear();
  99.         }
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment