Preliminary work on the new default region setting mechanism

This commit is contained in:
Melanie
2010-01-09 20:46:32 +00:00
parent 25fdbd6cbc
commit 28d6705358
11 changed files with 180 additions and 1 deletions

View File

@@ -60,5 +60,16 @@ namespace OpenSim.Data
bool Delete(UUID regionID);
List<RegionData> GetDefaultRegions(UUID scopeID);
List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y);
}
[Flags]
public enum RegionFlags : int
{
DefaultRegion = 1, // Used for new Rez. Random if multiple defined
FallbackRegion = 2, // Regions we redirect to when the destination is down
RegionOnline = 4, // Set when a region comes online, unset when it unregisters and DeleteOnUnregister is false
NoDirectLogin = 8 // Region unavailable for direct logins (by name)
}
}

View File

@@ -307,5 +307,15 @@ namespace OpenSim.Data.MSSQL
}
return false;
}
public List<RegionData> GetDefaultRegions(UUID scopeID)
{
return null;
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
return null;
}
}
}

View File

@@ -274,5 +274,31 @@ namespace OpenSim.Data.MySQL
return false;
}
public List<RegionData> GetDefaultRegions(UUID scopeID)
{
string command = "select * from `"+m_Realm+"` where (flags & 1) <> 0";
if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID";
MySqlCommand cmd = new MySqlCommand(command);
cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString());
return RunCommand(cmd);
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
string command = "select * from `"+m_Realm+"` where (flags & 2) <> 0";
if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID";
MySqlCommand cmd = new MySqlCommand(command);
cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString());
// TODO: distance-sort results
return RunCommand(cmd);
}
}
}

View File

@@ -0,0 +1,6 @@
BEGIN;
ALTER TABLE `regions` ADD COLUMN `flags` integer NOT NULL DEFAULT 0;
CREATE INDEX flags ON regions(flags);
COMMIT;

View File

@@ -130,5 +130,15 @@ namespace OpenSim.Data.Null
return true;
}
public List<RegionData> GetDefaultRegions(UUID scopeID)
{
return null;
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
return null;
}
}
}

View File

@@ -136,7 +136,6 @@ namespace OpenSim.Data
/// </summary>
public uint maturity;
//Data Wrappers
public string RegionName
{