Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using log4net;
- using Mango.Attributes;
- using Mango.Database.Exceptions;
- using Mango.Players;
- using MySql.Data.MySqlClient;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Mango.Roleplay.Rankings
- {
- sealed class RankingManager
- {
- private static readonly ILog log = LogManager.GetLogger("Mango.Roleplay.Rankings.RankingManager");
- /// <summary>
- /// This collection contains all ranks.
- /// </summary>
- private readonly Dictionary<int, Rank> _ranks;
- /// <summary>
- /// Initializes a new instance of the RankingManager.
- /// </summary>
- public RankingManager()
- {
- this._ranks = new Dictionary<int, Rank>();
- }
- /// <summary>
- /// Initializes all components within the RankingManager.
- /// </summary>
- public void Init()
- {
- using (var DbCon = Mango.GetServer().GetDatabase().GetConnection())
- {
- DbCon.SetQuery("SELECT * FROM `roleplay_rankings`");
- DbCon.Open();
- using (MySqlDataReader Reader = DbCon.ExecuteReader())
- {
- while (Reader.Read())
- {
- try
- {
- this._ranks.Add(Reader.GetInt32("experience_required"), new Rank(Reader.GetInt32("id"), Reader.GetString("name"),
- Reader.GetString("description"), Reader.GetInt32("experience_required")));
- }
- catch (DatabaseException ex)
- {
- log.Error("Unable to load Rank for ID [" + Reader.GetInt32("id") + "]", ex);
- }
- }
- }
- }
- log.Info("Loaded " + this._ranks.Count + " ranking definitions.");
- }
- /// <summary>
- /// Checks if the player has the required amount of experience to rank up using the suggested data.
- /// </summary>
- /// <param name="Player"></param>
- /// <param name="Rank"></param>
- /// <returns></returns>
- public bool HasRequired(Player Player, out Rank Rank)
- {
- return this._ranks.TryGetValue(Player.GetSession().GetRoleplayer().Experience, out Rank);
- }
- /// <summary>
- /// Attempts to get an existing rank using the suggested experience required.
- /// </summary>
- /// <param name="ExperienceRequired"></param>
- /// <param name="Rank"></param>s
- /// <returns></returns>
- public bool TryGet(int ExperienceRequired, out Rank Rank)
- {
- return this._ranks.TryGetValue((ExperienceRequired + 50) / 100 * 100, out Rank);
- }
- /// <summary>
- /// Checks if an existing rank is available using the suggested experience required.
- /// </summary>
- /// <param name="ExperienceRequired"></param>
- /// <returns></returns>
- public bool Contains(int ExperienceRequired)
- {
- return this._ranks.ContainsKey((ExperienceRequired + 50) / 100 * 100);
- }
- /// <summary>
- /// Clears the RankingManager.
- /// </summary>
- [DevNoticeAttribute("Used for debugging.")]
- public void Clear()
- {
- this._ranks.Clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment