diff --git a/src/client/src/types/game.ts b/src/client/src/types/game.ts index 0e67808..7e1f8f6 100644 --- a/src/client/src/types/game.ts +++ b/src/client/src/types/game.ts @@ -20,7 +20,9 @@ export interface StackObject { export interface CardInstance { instanceId: string; - oracleId: string; // Scryfall ID + scryfallId: string; // Used for cache hydration + setCode?: string; // Used for cache hydration + oracleId: string; // Scryfall Oracle ID name: string; imageUrl: string; controllerId: string; diff --git a/src/server/game/types.ts b/src/server/game/types.ts index e76c7fa..1e9e6b5 100644 --- a/src/server/game/types.ts +++ b/src/server/game/types.ts @@ -61,6 +61,8 @@ export interface CardObject { position?: { x: number; y: number; z: number }; // Metadata + scryfallId?: string; + setCode?: string; controlledSinceTurn: number; // For Summoning Sickness check definition?: any; } diff --git a/src/server/index.ts b/src/server/index.ts index d9321b4..ae9b8c6 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -342,9 +342,11 @@ const draftInterval = setInterval(() => { gameManager.addCardToGame(roomId, { ownerId: p.id, controllerId: p.id, - oracleId: card.oracle_id || card.id, + oracleId: card.oracle_id || card.id || card.definition?.oracle_id, + scryfallId: card.scryfallId || card.id || card.definition?.id, + setCode: card.setCode || card.set || card.definition?.set, name: card.name, - imageUrl: card.image || card.image_uris?.normal || card.card_faces?.[0]?.image_uris?.normal || "", + imageUrl: "", // Optimisation: Client hydrates from cache zone: 'library', typeLine: card.typeLine || card.type_line || '', oracleText: card.oracleText || card.oracle_text || '', @@ -677,9 +679,11 @@ io.on('connection', (socket) => { gameManager.addCardToGame(room.id, { ownerId: pid, controllerId: pid, - oracleId: card.oracle_id || card.id, + oracleId: card.oracle_id || card.id || card.definition?.oracle_id, + scryfallId: card.scryfallId || card.id || card.definition?.id, + setCode: card.setCode || card.set || card.definition?.set, name: card.name, - imageUrl: card.image_uris?.normal || card.card_faces?.[0]?.image_uris?.normal || "", + imageUrl: "", // Optimisation: Client hydrates from cache zone: 'library', typeLine: card.typeLine || card.type_line || '', oracleText: card.oracleText || card.oracle_text || '', @@ -799,9 +803,11 @@ io.on('connection', (socket) => { gameManager.addCardToGame(matchId, { ownerId: p.id, controllerId: p.id, - oracleId: card.oracle_id || card.id, + oracleId: card.oracle_id || card.id || card.definition?.oracle_id, + scryfallId: card.scryfallId || card.id || card.definition?.id, + setCode: card.setCode || card.set || card.definition?.set, name: card.name, - imageUrl: card.image || card.image_uris?.normal || card.card_faces?.[0]?.image_uris?.normal || "", + imageUrl: "", // Optimisation: Client hydrates from cache zone: 'library', typeLine: card.typeLine || card.type_line || '', oracleText: card.oracleText || card.oracle_text || '', diff --git a/src/server/managers/GameManager.ts b/src/server/managers/GameManager.ts index ec38609..3df11be 100644 --- a/src/server/managers/GameManager.ts +++ b/src/server/managers/GameManager.ts @@ -449,6 +449,8 @@ export class GameManager extends EventEmitter { controllerId: '', ownerId: '', oracleId: '', + scryfallId: cardData.scryfallId || '', + setCode: cardData.setCode || '', name: '', ...cardData, damageMarked: 0,