Adding more misc functions for future use.

This commit is contained in:
Lucas Nicodemus 2011-07-14 03:31:25 -06:00
parent 751210d6ce
commit f4b4d041d9
2 changed files with 50 additions and 5 deletions

View file

@ -167,8 +167,8 @@ namespace TShockAPI.DB
return false;
}
}
[Obsolete("Use Region.* functions for more granular control over what is returned.")]
public bool InProtectedArea(int X, int Y, User user)
[Obsolete("Use CanBuild and InArea instead.")]
public bool InProtectedAreaAndCantBuild(int X, int Y, User user)
{
Rectangle r = new Rectangle(X, Y, 0, 0);
for (int i = 0; i < RegionArray.Length; i++)
@ -187,6 +187,51 @@ namespace TShockAPI.DB
return true;
}
public bool CanBuild(int x, int y, User user)
{
for (int i = 0; i < RegionArray.Length; i++)
{
if (RegionArray[i].InArea(new Rectangle(x, y, 0, 0)) && RegionArray[i].HasPermissionToBuildInRegion(new Rectangle(x, y, 0, 0), user))
{
return true;
}
}
return false;
}
public bool CanBuild(int x, int y, TSPlayer ply)
{
User user = TShock.Users.GetUserByName(ply.TPlayer.name);
if (!ply.Group.HasPermission("canbuild"))
{
return false;
}
if (ply.Group.HasPermission("editspawn"))
{
return true;
}
for (int i = 0; i < RegionArray.Length; i++)
{
if (RegionArray[i].InArea(new Rectangle(x, y, 0, 0)) && RegionArray[i].HasPermissionToBuildInRegion(new Rectangle(x, y, 0, 0), user))
{
return true;
}
}
return false;
}
public bool InArea(int x, int y, User user)
{
for (int i = 0; i < RegionArray.Length; i++)
{
if (RegionArray[i].InArea(new Rectangle(x, y, 0, 0)))
{
return true;
}
}
return false;
}
public static List<string> ListIDs(string MergedIDs)
{
List<string> SplitIDs = new List<string>();
@ -291,7 +336,7 @@ namespace TShockAPI.DB
RegionWorldID = string.Empty;
}
public bool InProtectedArea(Rectangle point, User user)
public bool InArea(Rectangle point)
{
if (RegionArea.Intersects(point))
{

View file

@ -278,7 +278,7 @@ namespace TShockAPI
return true;
}
}
if (!args.Player.Group.HasPermission("editspawn") && TShock.Regions.InProtectedArea(x, y, TShock.Users.GetUserByIP(args.Player.IP)))
if (!args.Player.Group.HasPermission("editspawn") && TShock.Regions.InProtectedAreaAndCantBuild(x, y, TShock.Users.GetUserByIP(args.Player.IP)))
{
if ((DateTime.UtcNow - args.Player.LastTileChangeNotify).TotalMilliseconds > 1000)
{
@ -537,7 +537,7 @@ namespace TShockAPI
args.Player.SendTileSquare(tilex, tiley);
return true;
}
if (!args.Player.Group.HasPermission("editspawn") && TShock.Regions.InProtectedArea(tilex, tiley, TShock.Users.GetUserByName(args.Player.Name)))
if (!args.Player.Group.HasPermission("editspawn") && TShock.Regions.InProtectedAreaAndCantBuild(tilex, tiley, TShock.Users.GetUserByName(args.Player.Name)))
{
args.Player.SendMessage("Region protected from changes.", Color.Red);
args.Player.SendTileSquare(tilex, tiley);