Tweaked around with the region code a lot.
Databases will need to be rebuilt past this build.
This commit is contained in:
parent
c4efc96303
commit
5b79212b8f
6 changed files with 55 additions and 82 deletions
|
|
@ -1443,7 +1443,7 @@ namespace TShockAPI
|
|||
int.TryParse(args.Parameters[1], out page);
|
||||
var sb = new StringBuilder();
|
||||
|
||||
List<RegionStore> Regions = TShock.Regions.ListAllRegions();
|
||||
List<Region> Regions = TShock.Regions.ListAllRegions();
|
||||
|
||||
if (Regions.Count > (15 * (page - 1)))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ namespace TShockAPI.DB
|
|||
{
|
||||
public static List<Region> Regions = new List<Region>();
|
||||
|
||||
public Region[] RegionArray;
|
||||
|
||||
private IDbConnection database;
|
||||
|
||||
public RegionManager(IDbConnection db)
|
||||
|
|
@ -45,15 +47,54 @@ namespace TShockAPI.DB
|
|||
{
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'X2' NUMERIC, 'Y2' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);";
|
||||
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText =
|
||||
"CREATE TABLE IF NOT EXISTS Regions (X1 INT(11), Y1 INT(11), X2 INT(11), Y2 INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));";
|
||||
"CREATE TABLE IF NOT EXISTS Regions (X1 INT(11), Y1 INT(11), height INT(11), width INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));";
|
||||
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
public void ReloadAllRegions()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
|
||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
int regionCount = reader.RecordsAffected;
|
||||
RegionArray = new Region[regionCount];
|
||||
int iterationCounter = 0;
|
||||
while (reader.Read())
|
||||
{
|
||||
int X1 = reader.Get<int>("X1");
|
||||
int Y1 = reader.Get<int>("Y1");
|
||||
int height = reader.Get<int>("height");
|
||||
int width = reader.Get<int>("width");
|
||||
int Protected = reader.Get<int>("Protected");
|
||||
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
||||
string name = DbExt.Get<string>(reader, "RegionName");
|
||||
|
||||
string[] SplitIDs = MergedIDs.Split(',');
|
||||
|
||||
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected, Main.worldID.ToString());
|
||||
RegionArray[iterationCounter] = r;
|
||||
iterationCounter++;
|
||||
}
|
||||
reader.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid)
|
||||
{
|
||||
try
|
||||
|
|
@ -141,17 +182,17 @@ namespace TShockAPI.DB
|
|||
{
|
||||
int X1 = reader.Get<int>("X1");
|
||||
int Y1 = reader.Get<int>("Y1");
|
||||
int X2 = reader.Get<int>("X2");
|
||||
int Y2 = reader.Get<int>("Y2");
|
||||
int height = reader.Get<int>("height");
|
||||
int width = reader.Get<int>("width");
|
||||
int Protected = reader.Get<int>("Protected");
|
||||
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
||||
|
||||
string[] SplitIDs = MergedIDs.Split(',');
|
||||
|
||||
if (X >= X1 &&
|
||||
X <= X2 &&
|
||||
X <= height &&
|
||||
Y >= Y1 &&
|
||||
Y <= Y2 &&
|
||||
Y <= width &&
|
||||
Protected == 1)
|
||||
{
|
||||
if (!SplitIDs.Contains(user.ID.ToString()))
|
||||
|
|
@ -237,7 +278,7 @@ namespace TShockAPI.DB
|
|||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
Regions.Add(new Region(new Rectangle(reader.Get<int>("X1"), reader.Get<int>("Y1"), reader.Get<int>("X2"), reader.Get<int>("Y2")), reader.Get<string>("RegionName"), reader.Get<int>("Protected"), reader.Get<string>("WorldID")));
|
||||
Regions.Add(new Region(new Rectangle(reader.Get<int>("X1"), reader.Get<int>("Y1"), reader.Get<int>("height"), reader.Get<int>("width")), reader.Get<string>("RegionName"), reader.Get<int>("Protected"), reader.Get<string>("WorldID")));
|
||||
reader.Close();
|
||||
}
|
||||
}
|
||||
|
|
@ -256,14 +297,14 @@ namespace TShockAPI.DB
|
|||
public string RegionName { get; set; }
|
||||
public int DisableBuild { get; set; }
|
||||
public string RegionWorldID { get; set; }
|
||||
public string RegionAllowedIDs { get; set; }
|
||||
public string[] RegionAllowedIDs { get; set; }
|
||||
|
||||
public Region(Rectangle region, string name, int disablebuild, string worldname)
|
||||
public Region(Rectangle region, string name, int disablebuild, string RegionWorldIDz)
|
||||
{
|
||||
RegionArea = region;
|
||||
RegionName = name;
|
||||
DisableBuild = disablebuild;
|
||||
RegionWorldID = worldname;
|
||||
RegionWorldID = RegionWorldIDz;
|
||||
}
|
||||
|
||||
public Region()
|
||||
|
|
|
|||
|
|
@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
|
|||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyVersion("2.3.4.0713")]
|
||||
[assembly: AssemblyFileVersion("2.3.4.0713")]
|
||||
[assembly: AssemblyVersion("2.3.4.0714")]
|
||||
[assembly: AssemblyFileVersion("2.3.4.0714")]
|
||||
|
|
|
|||
|
|
@ -1,67 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using TShockAPI.DB;
|
||||
|
||||
namespace TShockAPI
|
||||
{
|
||||
class RegionStore
|
||||
{
|
||||
public int X1;
|
||||
public int X2;
|
||||
public int Y1;
|
||||
public int Y2;
|
||||
public int IsProtected;
|
||||
public string[] UserIDs;
|
||||
public RegionStore(string tX1, string tX2, string tY1, string tY2, int tIsProtected, string[] tUserIDs)
|
||||
{
|
||||
X1 = Convert.ToInt32(tX1);
|
||||
X2 = Convert.ToInt32(tX2);
|
||||
Y1 = Convert.ToInt32(tY1);
|
||||
Y2 = Convert.ToInt32(tY2);
|
||||
IsProtected = tIsProtected;
|
||||
UserIDs = tUserIDs;
|
||||
}
|
||||
|
||||
public RegionStore(int tX1, int tX2, int tY1, int tY2, int tIsProtected, string[] tUserIDs)
|
||||
{
|
||||
X1 = Convert.ToInt32(tX1);
|
||||
X2 = Convert.ToInt32(tX2);
|
||||
Y1 = Convert.ToInt32(tY1);
|
||||
Y2 = Convert.ToInt32(tY2);
|
||||
IsProtected = tIsProtected;
|
||||
UserIDs = tUserIDs;
|
||||
}
|
||||
|
||||
public RegionStore(string tX1, string tX2, string tY1, string tY2)
|
||||
{
|
||||
X1 = Convert.ToInt32(tX1);
|
||||
X2 = Convert.ToInt32(tX2);
|
||||
Y1 = Convert.ToInt32(tY1);
|
||||
Y2 = Convert.ToInt32(tY2);
|
||||
}
|
||||
|
||||
public RegionStore(int tX1, int tX2, int tY1, int tY2)
|
||||
{
|
||||
X1 = Convert.ToInt32(tX1);
|
||||
X2 = Convert.ToInt32(tX2);
|
||||
Y1 = Convert.ToInt32(tY1);
|
||||
Y2 = Convert.ToInt32(tY2);
|
||||
}
|
||||
|
||||
public bool InProtectedArea(int x, int y, User user)
|
||||
{
|
||||
if (x >= X1 &&
|
||||
x <= X2 &&
|
||||
y >= Y1 &&
|
||||
y <= Y2 &&
|
||||
IsProtected == 1)
|
||||
{
|
||||
if (!UserIDs.Contains(user.ID.ToString()))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -100,7 +100,6 @@
|
|||
<Compile Include="Net\WorldInfoMsg.cs" />
|
||||
<Compile Include="DB\RegionManager.cs" />
|
||||
<Compile Include="RconHandler.cs" />
|
||||
<Compile Include="RegionStore.cs" />
|
||||
<Compile Include="RememberPosManager.cs" />
|
||||
<Compile Include="Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ namespace TShockAPI
|
|||
using (var sha = new SHA512CryptoServiceProvider())
|
||||
{
|
||||
var bytes = sha.ComputeHash(Encoding.ASCII.GetBytes(password));
|
||||
return bytes.Aggregate("", (s, b) => s + b.ToString("X2"));
|
||||
return bytes.Aggregate("", (s, b) => s + b.ToString("height"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue