Commit 9d83a735 authored by timel's avatar timel

fix: small

parent 6ae9cd3b
...@@ -42,35 +42,38 @@ export const editDeckStore = proxy({ ...@@ -42,35 +42,38 @@ export const editDeckStore = proxy({
}, },
/** 一张卡能不能放入某个区 */ /** 一张卡能不能放入某个区 */
canAdd(card: CardMeta, type: Type): { result: boolean; reason: string } { canAdd(card: CardMeta, type: Type): { result: boolean; reason: string } {
const deckType = editDeckStore[type];
const cardType = card.data.type ?? 0;
let result = true, let result = true,
reason = ""; reason = "";
const initialCards = editDeckStore[type];
// 如果是衍生物,则不能添加 if (isToken(cardType)) {
if (isToken(card.data.type ?? 0)) {
result = false; result = false;
reason = "不能添加衍生物"; reason = "不能添加衍生物";
} }
// 超出数量,则不能添加
const countLimit = type === "main" ? 60 : 15; const countLimit = type === "main" ? 60 : 15;
if (initialCards.length >= countLimit) { if (deckType.length >= countLimit) {
result = false; result = false;
reason = `超过 ${countLimit} 张的上限`; reason = `超过 ${countLimit} 张的上限`;
} }
// 接着需要检查卡的种类
if ( if (
(type === "extra" && !isExtraDeckCard(card.data.type ?? 0)) || (type === "extra" && !isExtraDeckCard(cardType)) ||
(type === "main" && isExtraDeckCard(card.data.type ?? 0)) (type === "main" && isExtraDeckCard(cardType))
) { ) {
result = false; result = false;
reason = "卡片种类不符合"; reason = "卡片种类不符合";
} }
// 同名卡不超过三张
const maxSameCard = 3; // TODO: 禁卡表 const maxSameCard = 3; // TODO: 禁卡表
const sameCardCount = initialCards.filter((c) => c.id === card.id).length; const sameCardCount = deckType.filter((c) => c.id === card.id).length;
if (sameCardCount >= maxSameCard) { if (sameCardCount >= maxSameCard) {
result = false; result = false;
reason = `超过同名卡 ${maxSameCard} 张的上限`; reason = `超过同名卡 ${maxSameCard} 张的上限`;
} }
return { result, reason }; return { result, reason };
}, },
}) satisfies EditingDeck; }) satisfies EditingDeck;
...@@ -41,14 +41,17 @@ export const compareCards = (a: CardMeta, b: CardMeta): number => { ...@@ -41,14 +41,17 @@ export const compareCards = (a: CardMeta, b: CardMeta): number => {
/** 生成ydk格式的卡组文本 */ /** 生成ydk格式的卡组文本 */
function genYdkText(deck: IDeck): string { function genYdkText(deck: IDeck): string {
const lines: string[] = []; const { main, extra, side } = deck;
lines.push("#created by neos");
lines.push("#main"); const lines = [
lines.push(...deck.main.map((cardId) => cardId.toString())); "#created by neos",
lines.push("#extra"); "#main",
lines.push(...deck.extra.map((cardId) => cardId.toString())); ...main.map((cardId) => cardId.toString()),
lines.push("!side"); "#extra",
lines.push(...deck.side.map((cardId) => cardId.toString())); ...extra.map((cardId) => cardId.toString()),
"!side",
...side.map((cardId) => cardId.toString()),
];
return lines.join("\n"); return lines.join("\n");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment