Move Utils.FindPlayer -> TSPlayer.FindByNameOrID.

This makes TShock more OOP like (get the matching players from the
player as opposed to getting the players from a random class that
shouldn't exist).
This commit is contained in:
Lucas Nicodemus 2017-12-26 20:53:00 -07:00
parent 830b1634f2
commit 11920cde48
5 changed files with 63 additions and 60 deletions

View file

@ -210,42 +210,7 @@ namespace TShockAPI
return Main.player.Where(p => null != p && p.active).Count();
}
/// <summary>
/// Finds a TSPlayer based on name or ID
/// </summary>
/// <param name="plr">Player name or ID</param>
/// <returns>A list of matching players</returns>
public List<TSPlayer> FindPlayer(string plr)
{
var found = new List<TSPlayer>();
// Avoid errors caused by null search
if (plr == null)
return found;
byte plrID;
if (byte.TryParse(plr, out plrID) && plrID < Main.maxPlayers)
{
TSPlayer player = TShock.Players[plrID];
if (player != null && player.Active)
{
return new List<TSPlayer> { player };
}
}
string plrLower = plr.ToLower();
foreach (TSPlayer player in TShock.Players)
{
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);
}
}
return found;
}
//Random should not be generated in a method
Random r = new Random();