diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-21 16:23:29 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2017-02-21 16:23:29 +0100 |
| commit | 867e214433a605e0e26f085eaa8f37f500fcf607 (patch) | |
| tree | 603e2c2af149d3c18a03fb75f535ee0d5ec37ada /net/server.go | |
| parent | b8bdd9d0419bab8ee0a7dd4b6e9fb1df7fecf221 (diff) | |
| download | goffel-867e214433a605e0e26f085eaa8f37f500fcf607.tar.gz goffel-867e214433a605e0e26f085eaa8f37f500fcf607.zip | |
logic: add FindBest()
server: use logic.Player
Diffstat (limited to 'net/server.go')
| -rw-r--r-- | net/server.go | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/net/server.go b/net/server.go index 3c65b20..0716100 100644 --- a/net/server.go +++ b/net/server.go @@ -90,15 +90,6 @@ func (msg sMsg) String() string { return fmt.Sprintf("%s%s%v", response, res, payload) } -type player struct { - logic.Player - client *client -} - -func (p player) String() string { - return p.Name -} - type client struct { sock net.Conn reader *bufio.Reader @@ -106,7 +97,7 @@ type client struct { encoder *json.Encoder decoder *json.Decoder encoding string - players []player + players []logic.Player results chan sMsg } @@ -144,21 +135,6 @@ func (c *client) recvCmd() (logic.Cmd, error) { return cmd, err } -func (c *client) getBest() ([]player, int) { - best := []player{} - max := 0 - for _, p := range c.players { - t := p.Score.Score() - if t > max { - best = []player{p} - max = t - } else if t == max { - best = append(best, p) - } - } - return best, max -} - func (c *client) round(round int, wg *sync.WaitGroup) { dice := logic.Dice{} var msg sMsg @@ -342,17 +318,12 @@ func (s *session) play() { } s.clients = okClients } - winners := []player{} - max := 0 + best := make([]logic.Player, 0, len(s.clients)) for _, c := range s.clients { - best, m := c.getBest() - if m > max { - winners = best - max = m - } else if m == max { - winners = append(winners, best...) - } + b, _ := logic.FindBest(c.players) + best = append(best, b...) } + winners, max := logic.FindBest(best) msg = sMsg{97, []interface{}{max, winners}} for _, c := range s.clients { c.send(msg) @@ -423,7 +394,7 @@ func (s *Server) Serve() error { helo.Players = line[1:] } for _, name := range helo.Players { - c.players = append(c.players, player{logic.NewPlayer(name), &c}) + c.players = append(c.players, logic.NewPlayer(name)) } c.results = make(chan sMsg, len(c.players)) |
