diff --git a/cmd/server/games.go b/cmd/server/games.go index 5bfaabf..edde055 100644 --- a/cmd/server/games.go +++ b/cmd/server/games.go @@ -239,6 +239,14 @@ type ( Timestamp time.Time ID string } + EventCodenameAccusal struct { + Type EventType + Timestamp time.Time + } + EventCodenameTrial struct { + Type EventType + Timestamp time.Time + } AllKillWords map[string]KillWords ) @@ -248,6 +256,8 @@ const ( GameComplete AssignmentRotation GameReset + CodenameAccusal + CodenameTrial ) type Event interface{ event() } @@ -257,6 +267,8 @@ func (EventPlayerLeave) event() {} func (EventGameComplete) event() {} func (EventAssignmentRotation) event() {} func (EventGameReset) event() {} +func (EventCodenameAccusal) event() {} +func (EventCodenameTrial) event() {} func EventWithTime(event Event, t time.Time) Event { switch e := event.(type) { @@ -275,6 +287,12 @@ func EventWithTime(event Event, t time.Time) Event { case EventGameReset: e.Timestamp = t event = e + case EventCodenameAccusal: + e.Timestamp = t + event = e + case EventCodenameTrial: + e.Timestamp = t + event = e } return event } @@ -329,6 +347,14 @@ func parseEvent(b []byte, timestamp time.Time) (Event, error) { var v EventGameReset err := json.Unmarshal(b, &v) return EventWithTime(v, timestamp), err + case CodenameAccusal: + var v EventCodenameAccusal + err := json.Unmarshal(b, &v) + return EventWithTime(v, timestamp), err + case CodenameTrial: + var v EventCodenameTrial + err := json.Unmarshal(b, &v) + return EventWithTime(v, timestamp), err } return nil, fmt.Errorf("unknown event type %d: %s", peek.Type, b) } @@ -374,6 +400,10 @@ func (games Games) GameState(ctx context.Context, id string) (GameState, error) player.KillWords = v result.Players[k] = player } + case EventCodenameAccusal: + return GameState{}, fmt.Errorf("not impl: accusal: %+v", e) + case EventCodenameTrial: + return GameState{}, fmt.Errorf("not impl: trial: %+v", e) case EventGameReset: return games.GameState(ctx, e.ID) default: @@ -711,7 +741,3 @@ func (games Games) createEvent(ctx context.Context, id string, v any) error { ) VALUES (?, ?, ?) `, id, time.Now(), payload) } - -func (games *Games) Reset(ctx context.Context, gid string) error { - return games.CreateEventGameReset(ctx, gid) -} diff --git a/cmd/server/games_test.go b/cmd/server/games_test.go index e0331a9..3dc7cdf 100644 --- a/cmd/server/games_test.go +++ b/cmd/server/games_test.go @@ -150,7 +150,7 @@ func TestGames(t *testing.T) { t.Fatal("state.Completed is zero") } - if err := games.Reset(ctx, id); err != nil { + if err := games.CreateEventGameReset(ctx, id); err != nil { t.Fatal(err) } else if state, err := games.GameState(ctx, id); err != nil { t.Fatal(err) diff --git a/cmd/server/usergameserver.go b/cmd/server/usergameserver.go index 65bcf35..66353c8 100644 --- a/cmd/server/usergameserver.go +++ b/cmd/server/usergameserver.go @@ -116,7 +116,7 @@ func (ugs *UserGameServer) listen(ctx context.Context, reader func(context.Conte if gameState, err := ugs.games.GameState(ctx, ugs.ID); err != nil { return err } else if gameState.Completed.IsZero() { - } else if err := ugs.games.Reset(ctx, ugs.ID); err != nil { + } else if err := ugs.games.CreateEventGameReset(ctx, ugs.ID); err != nil { return err } } else {