Caching IsAdmin as to optimize load on file system

This commit is contained in:
Maverick Motherfucker 2011-06-02 21:59:33 -07:00
parent 79c0bddf5e
commit 818348a445
4 changed files with 22 additions and 9 deletions

View file

@ -65,7 +65,7 @@ namespace TShockAPI
int ply = args.PlayerID;
if (!(Tools.FindPlayer(plStr) == -1 || plStr == ""))
{
if (!Tools.IsAdmin(Tools.FindPlayer(plStr)))
if (!TShock.players[Tools.FindPlayer(plStr)].IsAdmin())
{
Tools.Kick(Tools.FindPlayer(plStr), "You were kicked.");
Tools.Broadcast(plStr + " was kicked by " + Tools.FindPlayer(ply));
@ -83,7 +83,7 @@ namespace TShockAPI
int ply = args.PlayerID;
if (!(Tools.FindPlayer(plStr) == -1 || plStr == ""))
{
if (!Tools.IsAdmin(Tools.FindPlayer(plStr)))
if (!TShock.players[Tools.FindPlayer(plStr)].IsAdmin())
{
FileTools.WriteBan(Tools.FindPlayer(plStr));
Tools.Kick(Tools.FindPlayer(plStr), "You were banned.");
@ -420,7 +420,7 @@ namespace TShockAPI
{
int ply = args.PlayerID;
var commands = TShock.commandList;
if (Tools.IsAdmin(ply))
if (TShock.players[ply].IsAdmin())
commands = TShock.admincommandList;
Tools.SendMessage(ply, "TShock Commands:");
int h = 1;
@ -489,7 +489,7 @@ namespace TShockAPI
public static void Kill(CommandArgs args)
{
bool isadmin = Tools.IsAdmin(args.PlayerID);
bool isadmin = TShock.players[args.PlayerID].IsAdmin(); ;
var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
if (msgargs.Length == 2 && isadmin)
{

View file

@ -5,10 +5,12 @@ using System.Text;
namespace TShockAPI
{
class TSPlayer
public class TSPlayer
{
public uint tileThreshold;
private int player;
private bool admin;
private bool adminSet;
public TSPlayer(int ply)
{
@ -19,5 +21,16 @@ namespace TShockAPI
{
return Terraria.Main.player[player];
}
public bool IsAdmin()
{
if (adminSet)
{
return admin;
}
admin = Tools.IsAdmin(player);
adminSet = true;
return admin;
}
}
}

View file

@ -11,7 +11,7 @@ namespace TShockAPI
{
public class TShock : TerrariaPlugin
{
TSPlayer[] players = new TSPlayer[Main.maxPlayers];
public static TSPlayer[] players = new TSPlayer[Main.maxPlayers];
public static string saveDir = "./tshock/";
@ -228,7 +228,7 @@ namespace TShockAPI
Main.player[who].hostile = true;
NetMessage.SendData(30, -1, -1, "", who);
}
if (Tools.IsAdmin(who) && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion)
if (TShock.players[who].IsAdmin() && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion)
{
StartInvasion();
}
@ -246,7 +246,7 @@ namespace TShockAPI
{
Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply);
var commands = commandList;
if (Tools.IsAdmin(ply))
if (TShock.players[ply].IsAdmin())
commands = admincommandList;
Commands.CommandDelegate command;

View file

@ -224,7 +224,7 @@ namespace TShockAPI
/// <param name="ply">int player</param>
public static void HandleCheater(int ply)
{
if (!Tools.IsAdmin(ply))
if (!TShock.players[ply].IsAdmin())
{
string cheater = Tools.FindPlayer(ply);
string ip = Tools.GetRealIP(Convert.ToString(Netplay.serverSock[ply].tcpClient.Client.RemoteEndPoint));