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,41 +243,38 @@ 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();
byte plrID;
if (byte.TryParse(plr, out plrID))
{
TSPlayer player = TShock.Players[plrID];
if (player.Active)
{
return new List<TSPlayer> { player };
}
}
string plrLower = plr.ToLower();
foreach (TSPlayer player in TShock.Players) foreach (TSPlayer player in TShock.Players)
{ {
if (player == null) if (player != null)
continue; {
// Must be an EXACT match
try if (player.Name == plr)
{ return new List<TSPlayer> { player };
if (Convert.ToInt32(ply) == player.Index && player.Active) if (player.Name.ToLower().StartsWith(plrLower))
{ found.Add(player);
return new List<TSPlayer> { player }; }
}
}
// ReSharper disable EmptyGeneralCatchClause
catch (Exception e)
// ReSharper restore EmptyGeneralCatchClause
{
// Conversion failed
}
string name = player.Name.ToLower();
if (name.Equals(ply))
return new List<TSPlayer> {player};
if (name.Contains(ply))
found.Add(player);
} }
return found; return found;
} }
@ -366,30 +363,16 @@ 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.netDefaults(i);
{ if (item.name.ToLower() == nameLower)
Item item = new Item(); return new List<Item> {item};
item.netDefaults(i); if (item.name.ToLower().StartsWith(nameLower))
if (item.name.ToLower() == name.ToLower()) found.Add(item);
return new List<Item> {item};
if (item.name.ToLower().StartsWith(name.ToLower()))
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;
@ -518,32 +502,12 @@ namespace TShockAPI
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;
{ string prefixName = item.AffixName().Trim().ToLower();
item.prefix = (byte)i; if (prefixName == lowerName)
string trimmed = item.AffixName().Trim(); return new List<int>() { i };
if (trimmed == name) else if (prefixName.StartsWith(lowerName)) // Partial match
{ found.Add(i);
// Exact match
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;
} }