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
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)
}

View File

@ -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)

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 {
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 {