worldgen.go raw
1 package main
2
3 import (
4 "errors"
5 "fmt"
6 "github.com/l0k18/alieninvasion/pkg/cities"
7 "github.com/l0k18/alieninvasion/pkg/world"
8 "os"
9 "strconv"
10 )
11
12 func check(err error) {
13
14 if err != nil {
15 fmt.Println("alieninvasion world map grid generator")
16 fmt.Printf("usage: %s <h> <v> <seed> <filename>\n", os.Args[0])
17 fmt.Println("Error:", err)
18 os.Exit(1)
19 }
20 }
21
22 func main() {
23
24 if len(os.Args) != 5 {
25 check(errors.New("incorrect command line parameters"))
26 }
27
28 var h, v, seed int64
29 var err error
30
31 h, err = strconv.ParseInt(os.Args[1], 10, 64)
32 check(err)
33
34 v, err = strconv.ParseInt(os.Args[2], 10, 64)
35 check(err)
36
37 if int(h*v) > len(cities.NameList) {
38 err = fmt.Errorf(
39 "sorry, there isn't enough names in our list "+
40 "for that many human settlements, "+
41 "there is %d on earth over 1000 population",
42 len(cities.NameList),
43 )
44 check(err)
45 }
46
47 seed, err = strconv.ParseInt(os.Args[3], 10, 64)
48 check(err)
49
50 w := world.Generate(h, v, seed)
51 w.ToFile(os.Args[4])
52
53 }
54