Commit 9d83a735 authored by timel's avatar timel

fix: small

parent 6ae9cd3b
......@@ -42,35 +42,38 @@ export const editDeckStore = proxy({
},
/** 一张卡能不能放入某个区 */
canAdd(card: CardMeta, type: Type): { result: boolean; reason: string } {
const deckType = editDeckStore[type];
const cardType = card.data.type ?? 0;
let result = true,
reason = "";
const initialCards = editDeckStore[type];
// 如果是衍生物,则不能添加
if (isToken(card.data.type ?? 0)) {
if (isToken(cardType)) {
result = false;
reason = "不能添加衍生物";
}
// 超出数量,则不能添加
const countLimit = type === "main" ? 60 : 15;
if (initialCards.length >= countLimit) {
if (deckType.length >= countLimit) {
result = false;
reason = `超过 ${countLimit} 张的上限`;
}
// 接着需要检查卡的种类
if (
(type === "extra" && !isExtraDeckCard(card.data.type ?? 0)) ||
(type === "main" && isExtraDeckCard(card.data.type ?? 0))
(type === "extra" && !isExtraDeckCard(cardType)) ||
(type === "main" && isExtraDeckCard(cardType))
) {
result = false;
reason = "卡片种类不符合";
}
// 同名卡不超过三张
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) {
result = false;
reason = `超过同名卡 ${maxSameCard} 张的上限`;
}
return { result, reason };
},
}) satisfies EditingDeck;
......@@ -41,14 +41,17 @@ export const compareCards = (a: CardMeta, b: CardMeta): number => {
/** 生成ydk格式的卡组文本 */
function genYdkText(deck: IDeck): string {
const lines: string[] = [];
lines.push("#created by neos");
lines.push("#main");
lines.push(...deck.main.map((cardId) => cardId.toString()));
lines.push("#extra");
lines.push(...deck.extra.map((cardId) => cardId.toString()));
lines.push("!side");
lines.push(...deck.side.map((cardId) => cardId.toString()));
const { main, extra, side } = deck;
const lines = [
"#created by neos",
"#main",
...main.map((cardId) => cardId.toString()),
"#extra",
...extra.map((cardId) => cardId.toString()),
"!side",
...side.map((cardId) => cardId.toString()),
];
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