public void AddDecorations() { if (!Inited()) { return; } Func <Tile, bool> areNeibsEmpty = (Tile i) => { return(dungeonNode.GetNeighborTiles(i, true).All(j => j != null && j.IsEmpty)); }; var empty = dungeonNode.GetEmptyTiles().Where(i => areNeibsEmpty(i)).ToList(); if (empty.Any()) { var t = empty[RandHelper.Random.Next(empty.Count())]; var pts = new List <Point>() { t.point }; var others = dungeonNode.GetNeighborTiles(t).Where(i => areNeibsEmpty(i)).ToList(); if (others.Any()) { int maxDecLen = 6; int max = RandHelper.Random.Next(1, maxDecLen); for (int i = 0; i < max && i < others.Count; i++) { pts.Add(others[i].point); } } AddWalls(pts); } }
protected void AddStairsUp(DungeonNode node) { var stairs = CreateStairsUp(node.NodeIndex); stairsUp = stairs; node.SetTile(stairs, node.GetEmptyTiles().First().point); OnStairsUpCreated(stairs); }