tyrants-edge/src/managers/DeckManager.js

37 lines
1.1 KiB
JavaScript

export class DeckManager {
static validate(deck, cardManager) {
const errors = [];
if (!deck.commander) {
errors.push('No commander selected');
} else {
const cmd = cardManager.getCard(deck.commander);
if (!cmd || cmd.type !== 'commander') errors.push('Invalid commander');
}
if (!deck.cards || deck.cards.length < 3) {
errors.push('Deck needs at least 3 assault cards');
}
if (deck.cards && deck.cards.length > 10) {
errors.push('Deck can have at most 10 assault cards');
}
const counts = {};
for (const id of (deck.cards || [])) {
counts[id] = (counts[id] || 0) + 1;
if (counts[id] > 3) errors.push(`Too many copies of ${id} (max 3)`);
}
return { valid: errors.length === 0, errors };
}
static createStarterDeck(cardManager) {
return {
id: 'deck_starter',
name: 'Starter Deck',
commander: 'imp_cmd_1',
cards: [
'imp_trooper_1', 'imp_trooper_1', 'imp_trooper_1',
'imp_gunner_1', 'imp_gunner_1', 'imp_gunner_1',
'imp_guardian_1', 'imp_guardian_1', 'imp_guardian_1',
]
};
}
}