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 {
|
||||
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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 || '',
|
||||
|
||||
@@ -449,6 +449,8 @@ export class GameManager extends EventEmitter {
|
||||
controllerId: '',
|
||||
ownerId: '',
|
||||
oracleId: '',
|
||||
scryfallId: cardData.scryfallId || '',
|
||||
setCode: cardData.setCode || '',
|
||||
name: '',
|
||||
...cardData,
|
||||
damageMarked: 0,
|
||||
|
||||
Reference in New Issue
Block a user