diff --git a/cmd/server/ws.go b/cmd/server/ws.go index e2912cc..dc8a62a 100644 --- a/cmd/server/ws.go +++ b/cmd/server/ws.go @@ -61,21 +61,42 @@ func (s *S) serveWS(w http.ResponseWriter, r *http.Request) error { return err } - if gameState.Started { - break - } + msg := map[string]any{} - items := []map[string]any{} - for k := range gameState.Players { - name, err := s.games.UserName(ctx, k) - if err != nil { - return err + if gameState.Started { + msg["page"] = "B" + if gameState.Completed.IsZero() { + msg["event"] = "A" + } else { + msg["event"] = "B" + items := []map[string]any{} + for k, v := range gameState.Players { + name, err := s.games.UserName(ctx, k) + if err != nil { + return err + } + points := 0 + for _, kill := range v.Kills { + points += kill.KillWord.Points + } + items = append(items, map[string]any{ + "name": name, + "title": fmt.Sprint(points), + }) + } + msg["items"] = items } - items = append(items, map[string]any{"name": name}) - } - msg := map[string]any{ - "page": "A", - "items": items, + } else { + msg["page"] = "A" + items := []map[string]any{} + for k := range gameState.Players { + name, err := s.games.UserName(ctx, k) + if err != nil { + return err + } + items = append(items, map[string]any{"name": name}) + } + msg["items"] = items } msgB, _ := json.Marshal(msg) @@ -83,6 +104,4 @@ func (s *S) serveWS(w http.ResponseWriter, r *http.Request) error { return err } } - - return fmt.Errorf("not impl: game started") }