示例#1
0
            void AddTile(Tile tile)
            {
                if (!tile.IsDoor)
                {
                    return;
                }

                if (Contains(tile))
                {
                    return;
                }

                var containableList = FindContainableListAll(tile);

                if (containableList.Length == 0)
                {
                    var newDoorTiles = new DoorTiles();
                    newDoorTiles.Add(tile);

                    doorGroup.Add(newDoorTiles);

                    return;
                }

                if (containableList.Length == 1)
                {
                    containableList[0].Add(tile);

                    return;
                }

                var concatedDoorTile = new DoorTiles();

                concatedDoorTile.Add(tile);

                foreach (var doorTiles in containableList)
                {
                    concatedDoorTile += doorTiles;
                }

                doorGroup.RemoveAll(doorTiles => containableList.Contains(doorTiles));
                doorGroup.Add(concatedDoorTile);
            }
示例#2
0
 public DoorTiles Concat(DoorTiles otherTiles)
 {
     return(new DoorTiles(doorTiles.Concat(otherTiles.doorTiles).ToList()));
 }