using System; using System.Text; using System.Collections; using Ion.Storage; using System.Data; namespace Holo.Managers { /// /// Provides information about the various user ranks/levels. /// public static class rankManager { private static Hashtable userRanks; /// /// Initializes the various user ranks. /// public static void Init() { Out.WriteLine("Intializing rank templates..."); userRanks = new Hashtable(); for(byte i = 1; i <= 7; i++) userRanks.Add(i,new userRank(i)); Out.WriteLine("Rank templates loaded."); } /// /// Returns the fuserights string for a certain user rank. /// /// The ID of the user rank. public static string fuseRights(byte rankID) { string[] fuseRights = ((userRank)userRanks[rankID]).fuseRights; StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < fuseRights.Length; i++) strBuilder.Append(fuseRights[i] + Convert.ToChar(2)); return strBuilder.ToString(); } /// /// Returns a bool that indicates if a certain user rank contains a certain fuseright. /// /// The ID of the user rank. /// The fuseright to look for. /// public static bool containsRight(byte rankID, string fuseRight) { userRank objRank = ((userRank)userRanks[rankID]); for (int i = 0; i < objRank.fuseRights.Length; i++) if (objRank.fuseRights[i] == fuseRight) return true; return false; } /// /// This struct represents a user rank. /// private struct userRank { internal string[] fuseRights; /// /// Initializes a user rank. /// /// The ID of the rank to initialize. internal userRank(byte rankID) { using (DatabaseClient dbClient = (Eucalypt.dbManager.GetClient())) { DataColumn column = dbClient.ReadDataColumn("SELECT fuseright FROM rank_fuserights WHERE minrank <= " + rankID); fuseRights = new string[column.Table.Rows.Count]; for (int i = 0; i < column.Table.Rows.Count; i++) fuseRights[i] = column.Table.Rows[i][0].ToString(); } } } } }