Moved enc/dec definition out of play func

This commit is contained in:
Stephen McQuay 2014-04-09 23:10:51 -07:00
parent d0c3b5a117
commit 6331803887
1 changed files with 12 additions and 13 deletions

View File

@ -29,6 +29,8 @@ type Client struct {
Game botserv.GameParam Game botserv.GameParam
boardstate botserv.Boardstate boardstate botserv.Boardstate
enc encoder
dec decoder
ws *websocket.Conn ws *websocket.Conn
} }
@ -100,6 +102,14 @@ func (c *Client) Negociate() (err error) {
log.Printf("%s: game parameters: %+v", c.Name, c.Game) log.Printf("%s: game parameters: %+v", c.Name, c.Game)
} }
if c.Game.Encoding == "json" {
c.enc = json.NewEncoder(c.ws)
c.dec = json.NewDecoder(c.ws)
} else {
c.enc = gob.NewEncoder(c.ws)
c.dec = gob.NewDecoder(c.ws)
}
conf := botserv.ClientConfig{ conf := botserv.ClientConfig{
ID: c.GameId, ID: c.GameId,
Stats: map[string]botserv.StatsRequest{ Stats: map[string]botserv.StatsRequest{
@ -140,27 +150,16 @@ func (c *Client) Negociate() (err error) {
func (c *Client) Play() error { func (c *Client) Play() error {
log.Printf("%s: starting loop", c.Name) log.Printf("%s: starting loop", c.Name)
var enc encoder
var dec decoder
if c.Game.Encoding == "json" {
enc = json.NewEncoder(c.ws)
dec = json.NewDecoder(c.ws)
} else {
enc = gob.NewEncoder(c.ws)
dec = gob.NewDecoder(c.ws)
}
var err error var err error
for { for {
err = dec.Decode(&c.boardstate) err = c.dec.Decode(&c.boardstate)
if err != nil { if err != nil {
return errors.New(fmt.Sprintf("%s: Connection likely lost: %s", c.Name, err)) return errors.New(fmt.Sprintf("%s: Connection likely lost: %s", c.Name, err))
} }
c.Player.Recv(&c.boardstate) c.Player.Recv(&c.boardstate)
instruction := c.Player.Instruction() instruction := c.Player.Instruction()
err = enc.Encode(instruction) err = c.enc.Encode(instruction)
if err != nil { if err != nil {
return err return err
} }