]> git.scottworley.com Git - planeteer/blobdiff - planeteer.go
Some safety against future modifications in DimensionSizes().
[planeteer] / planeteer.go
index a07c6693d3bc2b4fc6af15a8c89af200b788e848..314a3b62e62c18a4a8a7f259c33df374ffe6214b 100644 (file)
@@ -27,15 +27,14 @@ var start = flag.String("start", "",
        "The planet to start at")
 
 var end = flag.String("end", "",
-       "A comma-separated list of planets to end at")
+       "A comma-separated list of acceptable ending planets.")
 
 var planet_data_file = flag.String("planet_data_file", "planet-data",
        "The file to read planet data from")
 
-var fuel = flag.Int("fuel", 16,
-       "Reactor units; How many non-Eden jumps we can make "+
-               "(but remember that deviating from the flight plan "+
-               "costs two units of fuel per jump)")
+var fuel = flag.Int("fuel", 16, "Reactor units")
+
+var hold = flag.Int("hold", 300, "Size of your cargo hold")
 
 var start_edens = flag.Int("start_edens", 0,
        "How many Eden Warp Units are you starting with?")
@@ -46,11 +45,9 @@ var end_edens = flag.Int("end_edens", 0,
 var cloak = flag.Bool("cloak", false,
        "Make sure to end with a Device of Cloaking")
 
-var drones = flag.Int("drones", 0,
-       "Buy this many Fighter Drones")
+var drones = flag.Int("drones", 0, "Buy this many Fighter Drones")
 
-var batteries = flag.Int("batteries", 0,
-       "Buy this many Shield Batterys")
+var batteries = flag.Int("batteries", 0, "Buy this many Shield Batterys")
 
 var visit_string = flag.String("visit", "",
        "A comma-separated list of planets to make sure to visit")
@@ -111,7 +108,7 @@ func ReadData() (data planet_data) {
 
 // The official list of dimensions:
 const (
-       // Name          Num  Size  Description
+       // Name                Num  Size  Description
        Edens        = iota //   1     3  # of Eden warp units (0 - 2 typically)
        Cloaks              //   2     2  # of Devices of Cloaking (0 or 1)
        UnusedCargo         //   3     4  # of unused cargo spaces (0 - 3 typically)
@@ -135,19 +132,22 @@ func bint(b bool) int {
 func DimensionSizes(data planet_data) []int {
        eden_capacity := data.Commodities["Eden Warp Units"].Limit
        cloak_capacity := bint(*cloak)
-       dims := []int{
-               eden_capacity + 1,
-               cloak_capacity + 1,
-               eden_capacity + cloak_capacity + 1,
-               *fuel + 1,
-               len(data.Planets),
-               len(data.Commodities),
-               bint(*drones > 0) + 1,
-               bint(*batteries > 0) + 1,
-               1 << uint(len(visit())),
-       }
-       if len(dims) != NumDimensions {
-               panic("Dimensionality mismatch")
+       dims := make([]int, NumDimensions)
+       dims[Edens] = eden_capacity + 1
+       dims[Cloaks] = cloak_capacity + 1
+       dims[UnusedCargo] = eden_capacity + cloak_capacity + 1
+       dims[Fuel] = *fuel + 1
+       dims[Location] = len(data.Planets)
+       dims[Hold] = len(data.Commodities)
+       dims[NeedFighters] = bint(*drones > 0) + 1
+       dims[NeedShields] = bint(*batteries > 0) + 1
+       dims[Visit] = 1 << uint(len(visit()))
+
+       // Remind myself to add a line above when adding new dimensions
+       for i, dim := range dims {
+               if dim < 1 {
+                       panic(i)
+               }
        }
        return dims
 }