private void _buildBorders(Dictionary<ExitDirection, bool> necessaryBorders, Dictionary<ExitDirection, RandomDungeonArea> adjacentToBe, RandomDungeonArea toAdd)
{
foreach (RandomDungeonArea area in AreasOfDungeon)
{
if (area.X == toAdd.X && area.Y == toAdd.Y && area.Z == toAdd.Z + 1)
{
// Area is above the new area.
if (area.AreaExits.Contains(ExitDirection.Down))
{
necessaryBorders.Add(ExitDirection.Up, true);
adjacentToBe.Add(ExitDirection.Up, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.Up))
{
// This location might have double end caps in it.
necessaryBorders.Add(ExitDirection.Up, false);
}
}
else if (area.X == toAdd.X && area.Y == toAdd.Y && area.Z == toAdd.Z - 1)
{
if (area.AreaExits.Contains(ExitDirection.Up))
{
necessaryBorders.Add(ExitDirection.Down, true);
adjacentToBe.Add(ExitDirection.Down, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.Down))
{
necessaryBorders.Add(ExitDirection.Down, false);
}
}
else if (area.X == toAdd.X + 1 && area.Y == toAdd.Y && area.Z == toAdd.Z)
{
if (area.AreaExits.Contains(ExitDirection.West))
{
necessaryBorders.Add(ExitDirection.East, true);
adjacentToBe.Add(ExitDirection.East, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.East))
{
necessaryBorders.Add(ExitDirection.East, false);
}
}
else if (area.X == toAdd.X - 1 && area.Y == toAdd.Y && area.Z == toAdd.Z)
{
if (area.AreaExits.Contains(ExitDirection.East))
{
necessaryBorders.Add(ExitDirection.West, true);
adjacentToBe.Add(ExitDirection.West, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.West))
{
necessaryBorders.Add(ExitDirection.West, false);
}
}
else if (area.X == toAdd.X && area.Y == toAdd.Y + 1 && area.Z == toAdd.Z)
{
if (area.AreaExits.Contains(ExitDirection.South))
{
necessaryBorders.Add(ExitDirection.North, true);
adjacentToBe.Add(ExitDirection.North, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.North))
{
necessaryBorders.Add(ExitDirection.North, false);
}
}
else if (area.X == toAdd.X && area.Y == toAdd.Y - 1 && area.Z == toAdd.Z)
{
if (area.AreaExits.Contains(ExitDirection.North))
{
necessaryBorders.Add(ExitDirection.South, true);
adjacentToBe.Add(ExitDirection.South, area);
}
else if (!necessaryBorders.ContainsKey(ExitDirection.South))
{
necessaryBorders.Add(ExitDirection.South, false);
}
}
}
}