]> git.scottworley.com Git - planeteer/blobdiff - planeteer.go
Prefer to not name return values
[planeteer] / planeteer.go
index 6c8f087feef72dff1eea89d4ee37d5006e66cdd9..187da80034e77aa6de1596e37058002f94103fff 100644 (file)
@@ -146,12 +146,13 @@ func json_slurp(filename string, receptacle interface{}) error {
        return nil
 }
 
-func ReadData() (data planet_data) {
+func ReadData() planet_data {
+       var data planet_data
        err := json_slurp(*planet_data_file, &data)
        if err != nil {
                panic(err)
        }
-       return
+       return data
 }
 
 /* This program operates by filling in a state table representing the best
@@ -193,7 +194,7 @@ func ReadData() (data planet_data) {
  *    * Reduce the size of the Edens dimension from 3 to 2, for the
  *      same reasons as Fuel above.  33% savings.
  *    * Buy more ram.  (Just sayin'.  It's cheaper than you think.)
- *      
+ *
  */
 
 // The official list of dimensions:
@@ -325,7 +326,7 @@ func CreateStateTable(data planet_data, dims LogicalIndex) []State {
        addr[Edens] = *start_edens
        addr[Location] = PlanetIndex(data, *start)
        if *start_hold != "" {
-               addr[Hold] = CommodityIndex(data,*start_hold)
+               addr[Hold] = CommodityIndex(data, *start_hold)
        }
        start_index := EncodeIndex(dims, addr)
        table[start_index].value = Value(*funds)
@@ -399,7 +400,7 @@ func CellValue(data planet_data, dims LogicalIndex, table []State, addr LogicalI
                }
 
                /* Travel here via Eden Warp Unit */
-               if addr[Edens]+1 < dims[Edens] && addr[UnusedCargo] > 0 {
+               if addr[Edens]+1 < dims[Edens] && (addr[Hold] == 0 || addr[UnusedCargo] > 0) {
                        _, available := data.Planets[data.i2p[addr[Location]]].RelativePrices["Eden Warp Units"]
                        if !available {
                                other[Edens] = addr[Edens] + 1
@@ -606,7 +607,8 @@ func FindBestState(data planet_data, dims LogicalIndex, table []State, addr Logi
        return max_index
 }
 
-func Commas(n Value) (s string) {
+func Commas(n Value) string {
+       var s string
        if n < 0 {
                panic(n)
        }
@@ -618,7 +620,7 @@ func Commas(n Value) (s string) {
                n /= 1000
        }
        s = fmt.Sprint(r) + s
-       return
+       return s
 }
 
 func FighterAndShieldCost(data planet_data, dims LogicalIndex, table []State, best PhysicalIndex) {
@@ -688,7 +690,8 @@ func EndLocationCost(data planet_data, dims LogicalIndex, table []State, best Ph
        *end_string = save_end_string
 }
 
-func DescribePath(data planet_data, dims LogicalIndex, table []State, start PhysicalIndex) (description []string) {
+func DescribePath(data planet_data, dims LogicalIndex, table []State, start PhysicalIndex) []string {
+       var description []string
        for index := start; table[index].from > FROM_ROOT; index = table[index].from {
                if table[index].from == FROM_UNINITIALIZED {
                        panic(index)
@@ -745,7 +748,7 @@ func DescribePath(data planet_data, dims LogicalIndex, table []State, start Phys
                }
                description = append(description, fmt.Sprintf("%13v ", Commas(table[index].value))+line)
        }
-       return
+       return description
 }
 
 // (Example of a use case for generics in Go)