diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index 2b80512..c16aac9 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -2,6 +2,8 @@ package generator import ( "fmt" + "math" + "math/rand" ) func Generate(cfg ...func(*MapSetting)) (Map, error) { @@ -40,7 +42,15 @@ func Generate(cfg ...func(*MapSetting)) (Map, error) { return Map{}, fmt.Errorf("%s: hw new_coordinate: %s", ms, err) } planet := NewPlanet(coord, float32(ms.HWSize), float32(ms.HWResources)) - m.HomePlanets[player] = PlanetarySystem{HW: planet} + m.HomePlanets[player] = PlanetarySystem{HW: planet, DW: make([]Planet, ms.DWCount)} + for dw := 0; dw < int(ms.DWCount); dw++ { + p := rand.Float64()*(float64(ms.DWMaxDistance)-float64(ms.DWMinDistance)) + float64(ms.DWMinDistance) + phi := rand.Float64() * 360 + x := float32(p * math.Cos(phi)) + y := float32(p * math.Sin(phi)) + dwPlanet := NewPlanet(Coordinate{x, y}, float32(ms.DWSize), float32(ms.DWResources)) + m.HomePlanets[player].DW[dw] = dwPlanet + } } // 4. Clear plotter and set dead zones around existing planets