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)); } } } }