This commit is contained in:
2026-05-03 17:01:46 +03:30
parent b5ad5420b2
commit 9c30295b4b
76 changed files with 7891 additions and 461 deletions

43
lib/specialCards.ts Normal file
View File

@@ -0,0 +1,43 @@
import type { Position, TeamPlayer } from "@prisma/client";
import { FORMATIONS } from "@/lib/teamValidation";
export const SPECIAL_CARD_TEAM_LIMIT = 3;
export function getSpecialCardSalePrice(price: number) {
return Math.round(price * 0.7);
}
export function getPositionLabel(position: Position | string) {
switch (position) {
case "GK":
return "دروازه‌بان";
case "DEF":
return "مدافع";
case "MID":
return "هافبک";
case "FWD":
return "مهاجم";
default:
return position;
}
}
export function getAutoPlacement(
formation: string,
teamPlayers: Array<TeamPlayer & { player: { position: Position } }>,
position: Position
) {
const fmt = FORMATIONS[formation] ?? FORMATIONS["4-3-3"];
const starterLimit = position === "GK" ? 1 : fmt[position.toLowerCase() as "def" | "mid" | "fwd"];
const starters = teamPlayers.filter((item) => !item.isBench && item.player.position === position);
if (starters.length < starterLimit) {
return { isBench: false as const, placementLabel: "فیکس" };
}
const bench = teamPlayers.filter((item) => item.isBench && item.player.position === position);
if (bench.length < 1) {
return { isBench: true as const, placementLabel: "ذخیره" };
}
return null;
}