Optimize some GetBy* methods, also fix up the project file.

This commit is contained in:
MarioE 2012-08-20 11:16:00 -04:00
parent 2e2539a4d1
commit 500fc6b211
2 changed files with 43 additions and 79 deletions

View file

@ -117,7 +117,7 @@
<Compile Include="PacketBufferer.cs" /> <Compile Include="PacketBufferer.cs" />
<Compile Include="Permissions.cs" /> <Compile Include="Permissions.cs" />
<Compile Include="RconHandler.cs" /> <Compile Include="RconHandler.cs" />
<Compile Include="DB\RememberPosManager.cs" /> <Compile Include="DB\RememberedPosManager.cs" />
<Compile Include="Resources.Designer.cs"> <Compile Include="Resources.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>

View file

@ -243,42 +243,39 @@ namespace TShockAPI
} }
/// <summary> /// <summary>
/// Finds a TSPlayer based on name or id /// Finds a TSPlayer based on name or ID
/// </summary> /// </summary>
/// <param name="ply">Player name</param> /// <param name="plr">Player name or ID</param>
/// <returns></returns> /// <returns></returns>
public List<TSPlayer> FindPlayer(string ply) public List<TSPlayer> FindPlayer(string plr)
{ {
var found = new List<TSPlayer>(); var found = new List<TSPlayer>();
// Avoid errors caused by null search // Avoid errors caused by null search
if (null == ply) if (plr == null)
return found; return found;
ply = ply.ToLower();
foreach (TSPlayer player in TShock.Players)
{
if (player == null)
continue;
try byte plrID;
if (byte.TryParse(plr, out plrID))
{ {
if (Convert.ToInt32(ply) == player.Index && player.Active) TSPlayer player = TShock.Players[plrID];
if (player.Active)
{ {
return new List<TSPlayer> { player }; return new List<TSPlayer> { player };
} }
} }
// ReSharper disable EmptyGeneralCatchClause
catch (Exception e)
// ReSharper restore EmptyGeneralCatchClause
{
// Conversion failed
}
string name = player.Name.ToLower(); string plrLower = plr.ToLower();
if (name.Equals(ply)) foreach (TSPlayer player in TShock.Players)
return new List<TSPlayer> {player}; {
if (name.Contains(ply)) if (player != null)
{
// Must be an EXACT match
if (player.Name == plr)
return new List<TSPlayer> { player };
if (player.Name.ToLower().StartsWith(plrLower))
found.Add(player); found.Add(player);
} }
}
return found; return found;
} }
@ -366,31 +363,17 @@ namespace TShockAPI
/// <returns>List of Items</returns> /// <returns>List of Items</returns>
public List<Item> GetItemByName(string name) public List<Item> GetItemByName(string name)
{ {
//Method #1 - must be exact match, allows support for different pickaxes/hammers/swords etc
for (int i = 1; i < Main.maxItemTypes; i++)
{
Item item = new Item();
item.SetDefaults(name);
if (item.name == name)
return new List<Item> {item};
}
//Method #2 - allows impartial matching
var found = new List<Item>(); var found = new List<Item>();
Item item = new Item();
string nameLower = name.ToLower();
for (int i = -24; i < Main.maxItemTypes; i++) for (int i = -24; i < Main.maxItemTypes; i++)
{ {
try
{
Item item = new Item();
item.netDefaults(i); item.netDefaults(i);
if (item.name.ToLower() == name.ToLower()) if (item.name.ToLower() == nameLower)
return new List<Item> {item}; return new List<Item> {item};
if (item.name.ToLower().StartsWith(name.ToLower())) if (item.name.ToLower().StartsWith(nameLower))
found.Add(item); found.Add(item);
} }
catch
{
}
}
return found; return found;
} }
@ -477,15 +460,16 @@ namespace TShockAPI
/// <returns>Matching list of buff ids</returns> /// <returns>Matching list of buff ids</returns>
public List<int> GetBuffByName(string name) public List<int> GetBuffByName(string name)
{ {
string nameLower = name.ToLower();
for (int i = 1; i < Main.maxBuffs; i++) for (int i = 1; i < Main.maxBuffs; i++)
{ {
if (Main.buffName[i].ToLower() == name) if (Main.buffName[i].ToLower() == nameLower)
return new List<int> {i}; return new List<int> {i};
} }
var found = new List<int>(); var found = new List<int>();
for (int i = 1; i < Main.maxBuffs; i++) for (int i = 1; i < Main.maxBuffs; i++)
{ {
if (Main.buffName[i].ToLower().StartsWith(name.ToLower())) if (Main.buffName[i].ToLower().StartsWith(nameLower))
found.Add(i); found.Add(i);
} }
return found; return found;
@ -517,33 +501,13 @@ namespace TShockAPI
string lowerName = name.ToLower(); string lowerName = name.ToLower();
var found = new List<int>(); var found = new List<int>();
for (int i = FirstItemPrefix; i <= LastItemPrefix; i++) for (int i = FirstItemPrefix; i <= LastItemPrefix; i++)
{
try
{ {
item.prefix = (byte)i; item.prefix = (byte)i;
string trimmed = item.AffixName().Trim(); string prefixName = item.AffixName().Trim().ToLower();
if (trimmed == name) if (prefixName == lowerName)
{ return new List<int>() { i };
// Exact match else if (prefixName.StartsWith(lowerName)) // Partial match
found.Add(i); found.Add(i);
return found;
}
else
{
string trimmedLower = trimmed.ToLower();
if (trimmedLower == lowerName)
{
// Exact match (caseinsensitive)
found.Add(i);
return found;
}
else if (trimmedLower.StartsWith(lowerName)) // Partial match
found.Add(i);
}
}
catch
{
}
} }
return found; return found;
} }
@ -650,9 +614,9 @@ namespace TShockAPI
if (!silent) if (!silent)
{ {
if (string.IsNullOrWhiteSpace(adminUserName)) if (string.IsNullOrWhiteSpace(adminUserName))
Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower())); Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower()), Color.Green);
else else
Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower())); Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower()), Color.Green);
} }
return true; return true;
} }