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; return false;
} }
} }
[Obsolete("Use Region.* functions for more granular control over what is returned.")] [Obsolete("Use CanBuild and InArea instead.")]
public bool InProtectedArea(int X, int Y, User user) public bool InProtectedAreaAndCantBuild(int X, int Y, User user)
{ {
Rectangle r = new Rectangle(X, Y, 0, 0); Rectangle r = new Rectangle(X, Y, 0, 0);
for (int i = 0; i < RegionArray.Length; i++) for (int i = 0; i < RegionArray.Length; i++)
@ -187,6 +187,51 @@ namespace TShockAPI.DB
return true; 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) public static List<string> ListIDs(string MergedIDs)
{ {
List<string> SplitIDs = new List<string>(); List<string> SplitIDs = new List<string>();
@ -291,7 +336,7 @@ namespace TShockAPI.DB
RegionWorldID = string.Empty; RegionWorldID = string.Empty;
} }
public bool InProtectedArea(Rectangle point, User user) public bool InArea(Rectangle point)
{ {
if (RegionArea.Intersects(point)) if (RegionArea.Intersects(point))
{ {

View file

@ -278,7 +278,7 @@ namespace TShockAPI
return true; 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) if ((DateTime.UtcNow - args.Player.LastTileChangeNotify).TotalMilliseconds > 1000)
{ {
@ -537,7 +537,7 @@ namespace TShockAPI
args.Player.SendTileSquare(tilex, tiley); args.Player.SendTileSquare(tilex, tiley);
return true; 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.SendMessage("Region protected from changes.", Color.Red);
args.Player.SendTileSquare(tilex, tiley); args.Player.SendTileSquare(tilex, tiley);