public void DrawDistrict(District district, Color c, bool bDrawRoads, bool bDrawCells) { //Fill the cells foreach (var cell in district.Cells) { if(bDrawCells) DrawCell(cell, c.GetRandomColorOffset(0.07)); else { var cellColor = Color.FromRgb(200, 200, 200); //DrawCell(cell.Cell, cellColor); } if (bDrawRoads && cell.Roads != null) { var roadColor = Color.FromRgb(75,75,75); foreach (var road in cell.Roads) { //roadColor = Extensions.Extensions.RandomColor(false,225); DrawRoad(road, roadColor, Colors.Red, Colors.Aqua, false,3); } } }; }
/// <summary> /// find all district cells with the same type and make a district from them /// </summary> private District CreateDistrict(DistrictSettings settings) { var district = new District {DistrictType = settings.Type }; //sort all cells by their district type //and generate the roads foreach (var dc in _districtCells) { //sort by type if (dc.DistrictType != district.DistrictType) { continue; } //add the cell district.Cells.Add(dc); //generate roads inside the district cell dc.Roads = _roadBuilder.BuildRoad(dc, _citySettings.GenerateInnerRoads, _citySettings.RoadSubdivision); //create buildings on each road foreach (var road in dc.Roads) { CreateBuildingOnRoad(road); } //debug mode only generates one full cell if(_citySettings.DebugMode) break; } return district; }