Пример #1
0
        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);
            }
        }
Пример #2
0
        protected void AddStairsUp(DungeonNode node)
        {
            var stairs = CreateStairsUp(node.NodeIndex);

            stairsUp = stairs;
            node.SetTile(stairs, node.GetEmptyTiles().First().point);
            OnStairsUpCreated(stairs);
        }