Made Spectator/term ui pluggable
This commit is contained in:
+15
-13
@@ -8,7 +8,6 @@ import (
|
||||
"time"
|
||||
|
||||
"hackerbots.us/client"
|
||||
"hackerbots.us/server"
|
||||
)
|
||||
|
||||
var addr = flag.String("addr", "ws://localhost:8666", "server hostname")
|
||||
@@ -16,22 +15,19 @@ var forceJSON = flag.Bool("json", false, "force json encoding")
|
||||
|
||||
func main() {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
var gameId string
|
||||
var gameID string
|
||||
flag.Parse()
|
||||
if flag.NArg() < 1 {
|
||||
gameId = "debug"
|
||||
gameID = "debug"
|
||||
} else {
|
||||
gameId = flag.Arg(0)
|
||||
gameID = flag.Arg(0)
|
||||
}
|
||||
|
||||
c := &client.Client{
|
||||
Server: *addr,
|
||||
Name: "bspect",
|
||||
GameId: gameId,
|
||||
ForceJSON: *forceJSON,
|
||||
StateStream: make(chan *server.Boardstate),
|
||||
Die: make(chan struct{}),
|
||||
Player: client.Spectator{},
|
||||
Server: *addr,
|
||||
Name: "bspect",
|
||||
GameId: gameID,
|
||||
ForceJSON: *forceJSON,
|
||||
}
|
||||
var err error
|
||||
err = c.Negotiate("spectator", c.Player)
|
||||
@@ -40,10 +36,16 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
ui := client.NewSpectator(c.Width, c.Height)
|
||||
c.Player = ui
|
||||
|
||||
go func() {
|
||||
if err := c.Play(); err != nil {
|
||||
close(c.Die)
|
||||
close(ui.Die)
|
||||
}
|
||||
}()
|
||||
c.Visualize()
|
||||
if err := ui.Spectate(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "problem during visualization: %+v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
+9
-15
@@ -26,7 +26,7 @@ var weaponSpeed = flag.Int("wspeed", 50, "weapons speed")
|
||||
var addr = flag.String("addr", "ws://localhost:8666", "server hostname")
|
||||
var botname = flag.String("name", "gobot", "the name that other players will see")
|
||||
var forceJSON = flag.Bool("json", false, "force json encoding")
|
||||
var botType = flag.String("bot", "simple", "which Bot")
|
||||
var botType = flag.String("bot", "simple", "which Bot [fraserbot, simple]")
|
||||
|
||||
func main() {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
@@ -39,13 +39,10 @@ func main() {
|
||||
}
|
||||
|
||||
c := &client.Client{
|
||||
Server: *addr,
|
||||
Name: *botname,
|
||||
GameId: gameId,
|
||||
// XXX: update with missing fields
|
||||
ForceJSON: *forceJSON,
|
||||
StateStream: make(chan *server.Boardstate),
|
||||
Die: make(chan struct{}),
|
||||
Server: *addr,
|
||||
Name: *botname,
|
||||
GameId: gameId,
|
||||
ForceJSON: *forceJSON,
|
||||
}
|
||||
sr := server.StatsRequest{
|
||||
Hp: *hp,
|
||||
@@ -75,11 +72,8 @@ func main() {
|
||||
fmt.Fprintf(os.Stderr, "%s: failed to negociate: %s\n", c.Name, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
go func() {
|
||||
if err := c.Play(); err != nil {
|
||||
close(c.Die)
|
||||
}
|
||||
}()
|
||||
c.Visualize()
|
||||
if err := c.Play(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "problem during play: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user