systems now have a limited amount of mining resources

I did away with the whole mining rate thing.
slack
Jordan Orelli 10 years ago
parent e7472a6d10
commit 9daf5b2786

@ -37,11 +37,11 @@ var nearbyCommand = &Command{
return return
} }
fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n") fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n")
fmt.Fprintf(conn, "%-4s %-20s %s\n", "id", "name", "travel time") fmt.Fprintf(conn, "%-4s %-20s %s\n", "id", "name", "distance")
fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n") fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n")
for _, neighbor := range neighbors { for _, neighbor := range neighbors {
other := index[neighbor.id] other := index[neighbor.id]
fmt.Fprintf(conn, "%-4d %-20s %v\n", other.id, other.name, system.TravelTimeTo(other)) fmt.Fprintf(conn, "%-4d %-20s %v\n", other.id, other.name, neighbor.distance)
} }
fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n") fmt.Fprintf(conn, "--------------------------------------------------------------------------------\n")
}, },

@ -105,8 +105,19 @@ func (c *Connection) Tick(frame int64) {
c.land() c.land()
} }
case mining: case mining:
c.Deposit(options.miningRate) sys := c.System()
log_info("%v", c.money) if sys == nil {
log_error("a player is in the mining state with no system. what?")
break
}
if sys.money <= 0 {
fmt.Fprintf(c, "system %s is all out of space duckets.\n", sys.Label())
c.StopMining()
} else {
c.Deposit(1)
sys.money -= 1
log_info("%v", c.money)
}
default: default:
log_error("connection %v has invalid state wtf", c) log_error("connection %v has invalid state wtf", c)
} }
@ -197,7 +208,7 @@ func (c *Connection) MadeKill(victim *Connection) {
func (c *Connection) Mine() { func (c *Connection) Mine() {
switch c.state { switch c.state {
case idle: case idle:
fmt.Fprintf(c, "now mining %s with a payout rate of %v\n", c.System().name, c.System().miningRate) fmt.Fprintf(c, "now mining %s. %v space duckets remaining.\n", c.System().name, c.System().money)
fmt.Fprintln(c, "(press enter to stop mining)") fmt.Fprintln(c, "(press enter to stop mining)")
c.state = mining c.state = mining
default: default:

@ -15,7 +15,8 @@ import (
var options struct { var options struct {
lightSpeed float64 lightSpeed float64
frameRate int frameRate int
miningRate int moneySigma float64
moneyMean float64
playerSpeed float64 playerSpeed float64
bombSpeed float64 bombSpeed float64
economic int economic int
@ -115,8 +116,9 @@ func main() {
func init() { func init() {
flag.Float64Var(&options.lightSpeed, "light-speed", 0.01, "speed of light in parsecs per frame") flag.Float64Var(&options.lightSpeed, "light-speed", 0.01, "speed of light in parsecs per frame")
flag.IntVar(&options.frameRate, "frame-rate", 100, "frame rate, in frames per second") flag.IntVar(&options.frameRate, "frame-rate", 100, "frame rate, in frames per second")
flag.IntVar(&options.miningRate, "mining-rate", 1, "mining rate, in duckets per frame")
flag.Float64Var(&options.playerSpeed, "player-speed", 0.8, "player travel speed, relative to C, the speed of light") flag.Float64Var(&options.playerSpeed, "player-speed", 0.8, "player travel speed, relative to C, the speed of light")
flag.Float64Var(&options.bombSpeed, "bomb-speed", 0.9, "bomb travel speed, relattive to C, the speed of light") flag.Float64Var(&options.bombSpeed, "bomb-speed", 0.9, "bomb travel speed, relattive to C, the speed of light")
flag.IntVar(&options.economic, "economic", 25000, "amount of money needed to win economic victory") flag.IntVar(&options.economic, "economic", 25000, "amount of money needed to win economic victory")
flag.Float64Var(&options.moneyMean, "money-mean", 10000, "mean amount of money on a system")
flag.Float64Var(&options.moneySigma, "money-sigma", 1500, "standard deviation in money per system")
} }

@ -19,9 +19,9 @@ type System struct {
planets int planets int
name string name string
players map[*Connection]bool players map[*Connection]bool
miningRate float64
colonizedBy *Connection colonizedBy *Connection
distances []Ray distances []Ray
money int64
} }
func (s *System) Tick(frame int64) { func (s *System) Tick(frame int64) {
@ -246,7 +246,8 @@ func indexSystems() map[int]*System {
} }
index[p.id] = &p index[p.id] = &p
nameIndex[p.name] = &p nameIndex[p.name] = &p
p.miningRate = rand.Float64() p.money = int64(rand.NormFloat64()*options.moneySigma + options.moneyMean)
log_info("seeded system %s with %v monies", p.Label(), p.money)
} }
return index return index
} }

Loading…
Cancel
Save