mlpcardgame/src/mlpccg/draft/types.ts

91 lines
1.6 KiB
TypeScript

import { Card } from "@/mlpccg";
import { PackBuilder } from "./booster";
export type Provider = Iterator<Card>;
export type Pack = Card[];
export interface PackSchema {
slots: PackSlot[];
}
export interface PackSlot {
amount: number;
provider: Provider;
alternate: AlternateProvider[];
}
export interface AlternateProvider {
probability: number;
provider: Provider;
}
export interface SetDraftOptions {
source: "set";
set: string;
}
export interface BlockDraftOptions {
source: "block";
block: string;
}
export interface CubeDraftOptions {
source: "cube";
url: string;
}
export interface I8PCubeDraftOptions {
source: "i8pcube";
url: string;
}
export interface LimitedBoosterDraft {
type: "booster-draft";
packs: number;
}
export interface LimitedSealedDraft {
type: "sealed";
packs: number;
}
export type LimitedGameType = LimitedBoosterDraft | LimitedSealedDraft;
export type DraftType =
| SetDraftOptions
| BlockDraftOptions
| CubeDraftOptions
| I8PCubeDraftOptions;
export interface SessionOptions {
players: number;
spacing: "evenly" | "randomly";
}
export type DraftOptions = SessionOptions & LimitedGameType & DraftType;
export interface DraftSchema {
boosters: Record<string, number>;
factories: Record<string, PackBuilder>;
}
export type Direction = "cw" | "ccw";
export interface I8PCubeSchema {
Schema: I8PPackSchema[];
ProblemPackSize: number;
Cards: Record<string, Card[]>;
}
export interface I8PFileSchema {
Schema: I8PPackSchema[];
ProblemPackSize: number;
Cards: Record<string, string[]>;
}
export interface I8PPackSchema {
Amount: number;
Type: string;
}