91 lines
1.6 KiB
TypeScript
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;
|
|
}
|