stub codename trial, accuse events

main
Bel LaPointe 2024-12-15 18:43:15 -07:00
parent 4abac89472
commit 58fae19522
3 changed files with 32 additions and 6 deletions

View File

@ -239,6 +239,14 @@ type (
Timestamp time.Time Timestamp time.Time
ID string ID string
} }
EventCodenameAccusal struct {
Type EventType
Timestamp time.Time
}
EventCodenameTrial struct {
Type EventType
Timestamp time.Time
}
AllKillWords map[string]KillWords AllKillWords map[string]KillWords
) )
@ -248,6 +256,8 @@ const (
GameComplete GameComplete
AssignmentRotation AssignmentRotation
GameReset GameReset
CodenameAccusal
CodenameTrial
) )
type Event interface{ event() } type Event interface{ event() }
@ -257,6 +267,8 @@ func (EventPlayerLeave) event() {}
func (EventGameComplete) event() {} func (EventGameComplete) event() {}
func (EventAssignmentRotation) event() {} func (EventAssignmentRotation) event() {}
func (EventGameReset) event() {} func (EventGameReset) event() {}
func (EventCodenameAccusal) event() {}
func (EventCodenameTrial) event() {}
func EventWithTime(event Event, t time.Time) Event { func EventWithTime(event Event, t time.Time) Event {
switch e := event.(type) { switch e := event.(type) {
@ -275,6 +287,12 @@ func EventWithTime(event Event, t time.Time) Event {
case EventGameReset: case EventGameReset:
e.Timestamp = t e.Timestamp = t
event = e event = e
case EventCodenameAccusal:
e.Timestamp = t
event = e
case EventCodenameTrial:
e.Timestamp = t
event = e
} }
return event return event
} }
@ -329,6 +347,14 @@ func parseEvent(b []byte, timestamp time.Time) (Event, error) {
var v EventGameReset var v EventGameReset
err := json.Unmarshal(b, &v) err := json.Unmarshal(b, &v)
return EventWithTime(v, timestamp), err 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) 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 player.KillWords = v
result.Players[k] = player 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: case EventGameReset:
return games.GameState(ctx, e.ID) return games.GameState(ctx, e.ID)
default: default:
@ -711,7 +741,3 @@ func (games Games) createEvent(ctx context.Context, id string, v any) error {
) VALUES (?, ?, ?) ) VALUES (?, ?, ?)
`, id, time.Now(), payload) `, id, time.Now(), payload)
} }
func (games *Games) Reset(ctx context.Context, gid string) error {
return games.CreateEventGameReset(ctx, gid)
}

View File

@ -150,7 +150,7 @@ func TestGames(t *testing.T) {
t.Fatal("state.Completed is zero") 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) t.Fatal(err)
} else if state, err := games.GameState(ctx, id); err != nil { } else if state, err := games.GameState(ctx, id); err != nil {
t.Fatal(err) t.Fatal(err)

View File

@ -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 { if gameState, err := ugs.games.GameState(ctx, ugs.ID); err != nil {
return err return err
} else if gameState.Completed.IsZero() { } 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 return err
} }
} else { } else {