/// <summary> /// Generates the map. /// </summary> protected virtual void Generate() { SadConsoleMap = new SadConsole.Maps.SimpleMap(MapWidth, MapHeight, new Rectangle(0, 0, ViewPortWidth, ViewPortHeight)); GoRogueMap = new GoRogue.MapViews.ArrayMap <bool>(MapWidth, MapHeight); // Generate rooms var mapRooms = GoRogue.MapGeneration.Generators.RoomsGenerator.Generate(GoRogueMap, Settings.RoomsCountMin, Settings.RoomsCountMax, Settings.RoomsSizeMin, Settings.RoomsSizeMax, Settings.RoomsSizeFontRatioX, Settings.RoomsSizeFontRatioY); // Generate maze GoRogue.MapGeneration.Generators.MazeGenerator.Generate(GoRogueMap, Settings.MazeChangeDirectionImprovement, Settings.MazeSaveDeadEndChance); // Conenct rooms to maze var connections = GoRogue.MapGeneration.Generators.RoomsGenerator.ConnectRooms(GoRogueMap, mapRooms, Settings.RoomsConnectionsMinSides, Settings.RoomsConnectionsMaxSides, Settings.RoomsConnectionsCancelSideSelectChance, Settings.RoomsConnectionsCancelPlacementChance, Settings.RoomsConnectionsCancelPlacementChanceIncrease); // Transform rooms into regions Rooms = (from c in connections let innerRect = c.Room.ToMonoGameRectangle() let outerRect = c.Room.Expand(1, 1).ToMonoGameRectangle() select new Region() { IsRectangle = true, InnerRect = innerRect, OuterRect = outerRect, InnerPoints = new List <Point>(innerRect.GetPoints()), OuterPoints = new List <Point>(outerRect.GetPoints()), Connections = c.Connections.SelectMany(a => a).Select(a => a.ToPoint()).ToList() }).ToList(); // Copy regions to map SadConsoleMap.Regions = new List <Region>(Rooms); // Create tiles in the SadConsole map foreach (var position in GoRogueMap.Positions()) { if (GoRogueMap[position]) { SadConsoleMap[position] = Tile.Factory.Create(Settings.TileBlueprintFloor); } else { SadConsoleMap[position] = Tile.Factory.Create(Settings.TileBlueprintWall); } } foreach (var region in Rooms) { foreach (var point in region.InnerPoints) { SadConsoleMap[point].SetFlag(TileFlags.RegionLighted); } } }
public DungeonScreen(SadConsole.Maps.SimpleMap map) { // Setup map Map = map; Children.Add(Map); // Setup actions ActionProcessor = new SadConsole.Actions.ActionStack(); ActionProcessor.Push(new SadConsole.Actions.ActionDelegate(ActionKeyboardProcessor)); // Setup messages Messages = new MessageConsole(ScreenRegionMessages.Width, ScreenRegionMessages.Height); Messages.Position = ScreenRegionMessages.Location; Children.Add(Messages); }