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