Пример #1
0
        public DungeonScreen(SadConsole.Tiles.TileMap map)
        {
            // Setup map
            Map        = map;
            MapConsole = new ScrollingConsole(map.Width, map.Height, SadConsole.Global.FontDefault,
                                              new Rectangle(0, 0, ScreenRegionMap.Width, ScreenRegionMap.Height), null);
            Map.ConfigureAsRenderer(MapConsole);

            MapConsole.Position = ScreenRegionMap.Location;
            //MapConsole.ViewPort = new Rectangle(0, 0, ScreenRegionMap.Width, ScreenRegionMap.Height);

            // Setup actions
            ActionProcessor = new SadConsole.Actions.ActionStack();
            ActionProcessor.Push(new SadConsole.Actions.ActionDelegate(ActionKeyboardProcessor));

            _frameManager = new GameFrameManager(map);
            _frameManager.LogicFrameCompleted += (s, e) => RedrawMap = true;

            // Setup messages
            Messages = new MessageConsole(ScreenRegionMessages.Width, ScreenRegionMessages.Height)
            {
                Position = ScreenRegionMessages.Location
            };
            Children.Add(Messages);
            Children.Add(MapConsole);
        }
        public static void Generate(SadConsole.Tiles.TileMap map, IEnumerable <Region> rooms, string doorBlueprint, int leaveFloorAloneChance = 20)
        {
            bool PercentageCheck(int outOfHundred) => outOfHundred != 0 && GoRogue.Random.SingletonRandom.DefaultRNG.Next(101) < outOfHundred;

            foreach (Region room in rooms)
            {
                foreach (GoRogue.Coord point in room.Connections)
                {
                    if (!PercentageCheck(leaveFloorAloneChance))
                    {
                        map.SetTerrain(SadConsole.Tiles.Tile.Factory.Create(doorBlueprint, point));
                    }
                }
            }
        }