private void InitializeGame(bool custom) { while (true) { Map = MapGenerator.GenerateMap(Rng, GraphicsDevice.Viewport.Width / TileWidth, GraphicsDevice.Viewport.Height / TileHeight, custom ? 0 : 100); if (Map.Rooms.Count == 1) { continue; // Only 1 room generated, we can do better. } Brushes = new BrushSet { [Material.None] = new Brush(Color.Black), [Material.Dirt] = new Brush(Color.SaddleBrown), [Material.Grass] = new Brush(Color.LawnGreen), [Material.Gravel] = new Brush(Color.DarkGray), [Material.Water] = new Brush(Color.Aqua), [Material.Wall] = new Brush(Color.SlateGray) }; Entities.Clear(); if (!InitializePlayer()) { continue; // We failed to place the player, try regenerating. } var numberOfRats = Rng.Next(1, Map.Rooms.Count); for (var ratIndex = 0; ratIndex < numberOfRats; ++ratIndex) { InitializeRat(); } break; } }
/// <summary> /// Add new layout's set and add vertex to one /// </summary> /// <param name="vertex2D"></param> public void AddNewSet(Vertex2D vertex2D) { IVisualSet visualSet = null; switch (vertex2D.VertexType) { case VertexType.Vertex: visualSet = new SimpleSet(); break; case VertexType.Brush: visualSet = new BrushSet(); break; case VertexType.Eraser: visualSet = new EraserSet(); break; case VertexType.Image: visualSet = new ImageSet(); break; case VertexType.Spline: visualSet = IsInstrumentChanged ? new SplineSet() : vertex2Ds.Last(x => x is SplineSet); IsInstrumentChanged = false; break; } visualSet?.Add(vertex2D); if (visualSet != null) { vertex2Ds.Add(visualSet); } }