Made Spectator/term ui pluggable

This commit is contained in:
sm
2016-07-17 23:50:59 -07:00
parent f9984c1826
commit f1ae71ecc0
5 changed files with 96 additions and 86 deletions
+15 -13
View File
@@ -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)
}
}