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