aboutsummaryrefslogtreecommitdiff
path: root/net/server.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2017-02-21 16:23:29 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2017-02-21 16:23:29 +0100
commit867e214433a605e0e26f085eaa8f37f500fcf607 (patch)
tree603e2c2af149d3c18a03fb75f535ee0d5ec37ada /net/server.go
parentb8bdd9d0419bab8ee0a7dd4b6e9fb1df7fecf221 (diff)
downloadgoffel-867e214433a605e0e26f085eaa8f37f500fcf607.tar.gz
goffel-867e214433a605e0e26f085eaa8f37f500fcf607.zip
logic: add FindBest()
server: use logic.Player
Diffstat (limited to 'net/server.go')
-rw-r--r--net/server.go41
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))