impl first game reset but realize it must be an event to broadcast to all players
parent
f1282f588d
commit
57dd66e510
|
|
@ -666,3 +666,25 @@ func (games Games) createEvent(ctx context.Context, id string, v any) error {
|
|||
) VALUES (?, ?, ?)
|
||||
`, id, time.Now(), payload)
|
||||
}
|
||||
|
||||
// TODO not impl gotta be an event so existing websockets look at new game
|
||||
func (games *Games) Reset(ctx context.Context, gid string) (string, error) {
|
||||
state, err := games.GameState(ctx, gid)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
name, err := games.GameName(ctx, gid)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
gid2, err := games.CreateGame(ctx, name)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
for p := range state.Players {
|
||||
if err := games.CreateEventPlayerJoin(ctx, gid2, p); err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
return gid2, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,6 +149,26 @@ func TestGames(t *testing.T) {
|
|||
} else if state.Completed.IsZero() {
|
||||
t.Fatal("state.Completed is zero")
|
||||
}
|
||||
|
||||
if id, err := games.Reset(ctx, id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if state, err := games.GameState(ctx, id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if state.Started {
|
||||
t.Fatal("reset game is started", state.Started)
|
||||
} else if !state.Completed.IsZero() {
|
||||
t.Fatal("reset game is complete", state.Completed)
|
||||
} else if len(state.Players) != 4 {
|
||||
t.Fatal("reset game doesnt have all players", len(state.Players))
|
||||
} else if p := state.Players["p1"]; !p.Empty() {
|
||||
t.Fatal("reset game missing p1", p)
|
||||
} else if p := state.Players["p2"]; !p.Empty() {
|
||||
t.Fatal("reset game missing p2", p)
|
||||
} else if p := state.Players["p3"]; !p.Empty() {
|
||||
t.Fatal("reset game missing p3", p)
|
||||
} else if p := state.Players["p4"]; !p.Empty() {
|
||||
t.Fatal("reset game missing p4", p)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,8 +116,8 @@ 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 {
|
||||
return fmt.Errorf("not impl: new game: %+v", m)
|
||||
} else if _, err := ugs.games.Reset(ctx, ugs.ID); err != nil {
|
||||
return err // TODO ugs.ID = newid but for everyone
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("UNKNOWN: %+v", m)
|
||||
|
|
|
|||
Loading…
Reference in New Issue