can make colonies again

slack
Jordan Orelli 10 years ago
parent 4c688080b3
commit 3663e4ec62

@ -0,0 +1,44 @@
package main
import ()
func MakeColony(c *Connection, sys *System) {
if c.money < options.colonyCost {
c.Printf("Not enough money! Colonies cost %v but you only have %v space duckets. Mine more space duckets!\n", options.colonyCost, c.money)
return
}
if sys.colonizedBy == c {
c.Printf("You've already colonized this system.\n")
return
}
c.money -= options.colonyCost
m := &MakeColonyState{
System: sys,
}
c.SetState(m)
}
type MakeColonyState struct {
CommandSuite
*System
start int64
}
func (m *MakeColonyState) Enter(c *Connection) {
c.Printf("Making colony on %v...\n", m.System)
}
func (m *MakeColonyState) Tick(c *Connection, frame int64) ConnectionState {
if m.start == 0 {
m.start = frame
}
if framesToDur(frame-m.start) >= options.makeColonyTime {
return Idle(m.System)
}
return m
}
func (m *MakeColonyState) Exit(c *Connection) {
m.System.colonizedBy = c
c.Printf("Established colony on %v.\n", m.System)
}

@ -85,7 +85,8 @@ func (c *Connection) Tick(frame int64) {
func (c *Connection) RunCommand(name string, args ...string) {
defer func() {
if r := recover(); r != nil {
c.Printf("shit is *really* fucked up.\n")
c.Printf("something is broken. Log this as a ticket!\n")
c.Printf("recovered: %v\n", r)
log_error("recovered: %v", r)
}
}()

@ -138,6 +138,7 @@ func (i *IdleState) scan(c *Connection, args ...string) {
currentGame.Register(NewScan(i.System))
}
// "make" is already a keyword
func (i *IdleState) maek(c *Connection, args ...string) {
switch args[0] {
case "bomb":
@ -146,6 +147,9 @@ func (i *IdleState) maek(c *Connection, args ...string) {
return
}
c.SetState(MakeBomb(i.System))
case "colony":
MakeColony(c, i.System)
return
default:
c.Printf("I don't know how to make a %v.\n", args[0])
}

@ -11,20 +11,22 @@ import (
)
var options struct {
bombCost int
bombSpeed float64
debug bool
economic int
frameLength time.Duration
frameRate int
lightSpeed float64
makeBombTime time.Duration
moneyMean float64
moneySigma float64
playerSpeed float64
respawnFrames int64
respawnTime time.Duration
speckPath string
bombCost int
bombSpeed float64
debug bool
economic int
frameLength time.Duration
colonyCost int
frameRate int
lightSpeed float64
makeBombTime time.Duration
makeColonyTime time.Duration
moneyMean float64
moneySigma float64
playerSpeed float64
respawnFrames int64
respawnTime time.Duration
speckPath string
}
var (
@ -118,4 +120,6 @@ func init() {
flag.DurationVar(&options.respawnTime, "respawn-time", 60*time.Second, "time for player respawn")
flag.DurationVar(&options.makeBombTime, "bomb-time", 5*time.Second, "time it takes to make a bomb")
flag.IntVar(&options.bombCost, "bomb-cost", 500, "price of a bomb")
flag.IntVar(&options.colonyCost, "colony-cost", 2000, "price of a colony")
flag.DurationVar(&options.makeColonyTime, "colony-time", 15*time.Second, "time it takes to make a colony")
}

Loading…
Cancel
Save