diff --git a/game.go b/game.go index 5ecc63c..ec5d848 100644 --- a/game.go +++ b/game.go @@ -24,13 +24,7 @@ func applyAction(g *game.Match, a action) error { case "quit": return g.Concede(a.Player) case "across", "self": - if err := g.Shoot(a.Player, a.Action == "self"); err != nil { - return err - } - if g.RoundWinner() != nil { - return errRoundEnded - } - return nil + return g.Shoot(a.Player, a.Action == "self") case "0": return g.Apply(a.Player, 0) case "1": @@ -88,7 +82,7 @@ func gameActor(ctx context.Context, g *game.Match, dealer, chall person, join <- switch err { case nil: broadcast(ctx, g, dealer, chall, obs) - case errRoundEnded: + case game.ErrRoundEnded: broadcast(ctx, g, dealer, chall, obs) if g.MatchWinner() != nil { gameOver(ctx, dealer, chall, obs) @@ -97,7 +91,10 @@ func gameActor(ctx context.Context, g *game.Match, dealer, chall person, join <- } g.NextRound() broadcast(ctx, g, dealer, chall, obs) - // TODO(zeph): broadcast shell counts? + case game.ErrGameEnded: + broadcast(ctx, g, dealer, chall, obs) + g.NextGame() + broadcast(ctx, g, dealer, chall, obs) case game.ErrWrongTurn: // do nothing case errWeirdAction: slog.WarnContext(ctx, "nonsense action", "from", a.Player, "action", a.Action) @@ -159,7 +156,6 @@ func gameOver(ctx context.Context, dealer, chall person, obs []person) { } var ( - errRoundEnded = errors.New("someone h*ckin died") errWeirdAction = errors.New("unknown action") errMatchExpired = errors.New("there is a time limit on matches please") )