A collection of all cells of with the same type
Beispiel #1
0
        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;
        }