feat: Add Scryfall ID and set code to card instances for client-side image hydration and update card creation logic.
This commit is contained in:
@@ -20,7 +20,9 @@ export interface StackObject {
|
|||||||
|
|
||||||
export interface CardInstance {
|
export interface CardInstance {
|
||||||
instanceId: string;
|
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;
|
name: string;
|
||||||
imageUrl: string;
|
imageUrl: string;
|
||||||
controllerId: string;
|
controllerId: string;
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ export interface CardObject {
|
|||||||
position?: { x: number; y: number; z: number };
|
position?: { x: number; y: number; z: number };
|
||||||
|
|
||||||
// Metadata
|
// Metadata
|
||||||
|
scryfallId?: string;
|
||||||
|
setCode?: string;
|
||||||
controlledSinceTurn: number; // For Summoning Sickness check
|
controlledSinceTurn: number; // For Summoning Sickness check
|
||||||
definition?: any;
|
definition?: any;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,9 +342,11 @@ const draftInterval = setInterval(() => {
|
|||||||
gameManager.addCardToGame(roomId, {
|
gameManager.addCardToGame(roomId, {
|
||||||
ownerId: p.id,
|
ownerId: p.id,
|
||||||
controllerId: 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,
|
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',
|
zone: 'library',
|
||||||
typeLine: card.typeLine || card.type_line || '',
|
typeLine: card.typeLine || card.type_line || '',
|
||||||
oracleText: card.oracleText || card.oracle_text || '',
|
oracleText: card.oracleText || card.oracle_text || '',
|
||||||
@@ -677,9 +679,11 @@ io.on('connection', (socket) => {
|
|||||||
gameManager.addCardToGame(room.id, {
|
gameManager.addCardToGame(room.id, {
|
||||||
ownerId: pid,
|
ownerId: pid,
|
||||||
controllerId: 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,
|
name: card.name,
|
||||||
imageUrl: card.image_uris?.normal || card.card_faces?.[0]?.image_uris?.normal || "",
|
imageUrl: "", // Optimisation: Client hydrates from cache
|
||||||
zone: 'library',
|
zone: 'library',
|
||||||
typeLine: card.typeLine || card.type_line || '',
|
typeLine: card.typeLine || card.type_line || '',
|
||||||
oracleText: card.oracleText || card.oracle_text || '',
|
oracleText: card.oracleText || card.oracle_text || '',
|
||||||
@@ -799,9 +803,11 @@ io.on('connection', (socket) => {
|
|||||||
gameManager.addCardToGame(matchId, {
|
gameManager.addCardToGame(matchId, {
|
||||||
ownerId: p.id,
|
ownerId: p.id,
|
||||||
controllerId: 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,
|
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',
|
zone: 'library',
|
||||||
typeLine: card.typeLine || card.type_line || '',
|
typeLine: card.typeLine || card.type_line || '',
|
||||||
oracleText: card.oracleText || card.oracle_text || '',
|
oracleText: card.oracleText || card.oracle_text || '',
|
||||||
|
|||||||
@@ -449,6 +449,8 @@ export class GameManager extends EventEmitter {
|
|||||||
controllerId: '',
|
controllerId: '',
|
||||||
ownerId: '',
|
ownerId: '',
|
||||||
oracleId: '',
|
oracleId: '',
|
||||||
|
scryfallId: cardData.scryfallId || '',
|
||||||
|
setCode: cardData.setCode || '',
|
||||||
name: '',
|
name: '',
|
||||||
...cardData,
|
...cardData,
|
||||||
damageMarked: 0,
|
damageMarked: 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user