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

View file

@ -5,10 +5,12 @@ using System.Text;
namespace TShockAPI namespace TShockAPI
{ {
class TSPlayer public class TSPlayer
{ {
public uint tileThreshold; public uint tileThreshold;
private int player; private int player;
private bool admin;
private bool adminSet;
public TSPlayer(int ply) public TSPlayer(int ply)
{ {
@ -19,5 +21,16 @@ namespace TShockAPI
{ {
return Terraria.Main.player[player]; 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 public class TShock : TerrariaPlugin
{ {
TSPlayer[] players = new TSPlayer[Main.maxPlayers]; public static TSPlayer[] players = new TSPlayer[Main.maxPlayers];
public static string saveDir = "./tshock/"; public static string saveDir = "./tshock/";
@ -228,7 +228,7 @@ namespace TShockAPI
Main.player[who].hostile = true; Main.player[who].hostile = true;
NetMessage.SendData(30, -1, -1, "", who); NetMessage.SendData(30, -1, -1, "", who);
} }
if (Tools.IsAdmin(who) && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion) if (TShock.players[who].IsAdmin() && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion)
{ {
StartInvasion(); StartInvasion();
} }
@ -246,7 +246,7 @@ namespace TShockAPI
{ {
Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply); Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply);
var commands = commandList; var commands = commandList;
if (Tools.IsAdmin(ply)) if (TShock.players[ply].IsAdmin())
commands = admincommandList; commands = admincommandList;
Commands.CommandDelegate command; Commands.CommandDelegate command;

View file

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