updated game performance
This commit is contained in:
parent
6a1b9ef890
commit
9a5ee93c4b
|
|
@ -18,13 +18,16 @@ import { pickRandom } from "../../shared/utils";
|
|||
import { addGems } from "../repositories/gemsRepository";
|
||||
import { getCollection } from "../repositories/collectionRepository";
|
||||
|
||||
const safeGameState = (gameState: ServerGame) => {
|
||||
return gameState.finished ? gameState : serverToClientGame(gameState);
|
||||
};
|
||||
|
||||
export const gameController = createController({
|
||||
getGameState: createEndpoint(z.string(), async (uuid, ctx) => {
|
||||
const game = await getGame(ctx.db, uuid);
|
||||
const parsed = parseGameState(game.gameState);
|
||||
const gameState = await serverGame.parseAsync(parsed);
|
||||
if (game.finished) return gameState;
|
||||
return serverToClientGame(gameState);
|
||||
return safeGameState(gameState);
|
||||
}),
|
||||
createGame: createEndpoint(z.null(), async (_, { user, db }) => {
|
||||
if (!user) throw new UnauthorizedError("Unauthorized");
|
||||
|
|
@ -63,6 +66,7 @@ export const gameController = createController({
|
|||
emit({
|
||||
type: "updateGame",
|
||||
game: dbGame.uuid,
|
||||
gameState: safeGameState(serverGame),
|
||||
});
|
||||
if (ts === 0 && serverGame.finished !== 0) {
|
||||
emit({
|
||||
|
|
@ -96,6 +100,7 @@ export const gameController = createController({
|
|||
emit({
|
||||
type: "updateGame",
|
||||
game: dbGame.uuid,
|
||||
gameState: safeGameState(serverGame),
|
||||
});
|
||||
if (ts === 0 && serverGame.finished !== 0) {
|
||||
emit({
|
||||
|
|
@ -128,6 +133,7 @@ export const gameController = createController({
|
|||
emit({
|
||||
type: "updateGame",
|
||||
game: dbGame.uuid,
|
||||
gameState: safeGameState(serverGame),
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -143,6 +149,7 @@ export const gameController = createController({
|
|||
emit({
|
||||
type: "updateGame",
|
||||
game: dbGame.uuid,
|
||||
gameState: safeGameState(serverGame),
|
||||
});
|
||||
if (ts === 0 && serverGame.finished !== 0) {
|
||||
emit({
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import type { Rarity } from "../shared/lootboxes";
|
||||
import { ClientGame, ServerGame } from "./gameType";
|
||||
export type EventType = "new" | "finished" | "updateGame" | "updateStage";
|
||||
|
||||
export type Events =
|
||||
|
|
@ -15,6 +16,7 @@ export type Events =
|
|||
| {
|
||||
type: "updateGame";
|
||||
game: string;
|
||||
gameState: ServerGame | ClientGame;
|
||||
}
|
||||
| {
|
||||
type: "updateStage";
|
||||
|
|
|
|||
|
|
@ -64,9 +64,10 @@ const createWSClient = () => {
|
|||
addMessageListener((event: MessageEvent) => {
|
||||
const data = JSON.parse(event.data) as Events;
|
||||
if (data.type === "updateGame") {
|
||||
queryClient.refetchQueries({
|
||||
queryKey: ["game.getGameState", data.game],
|
||||
});
|
||||
queryClient.setQueryData(
|
||||
["game.getGameState", data.game],
|
||||
data.gameState,
|
||||
);
|
||||
}
|
||||
if (data.type === "loss") {
|
||||
queryClient.invalidateQueries({
|
||||
|
|
|
|||
Loading…
Reference in New Issue