ACR_Quest.RandomDungeon._buildBorders C# (CSharp) Метод

_buildBorders() приватный Метод

private _buildBorders ( bool>.Dictionary necessaryBorders, RandomDungeonArea>.Dictionary adjacentToBe, RandomDungeonArea toAdd ) : void
necessaryBorders bool>.Dictionary
adjacentToBe RandomDungeonArea>.Dictionary
toAdd RandomDungeonArea
Результат void
        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);
                    }
                }
            }
        }