diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..c1dc104 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,67 @@ +type DominionText = string; + +type DominionColor = { + color: string; + priority: number; // highest priority is "primary", second highest is "secondary". + overridesAction: boolean; +}; + +type DominionBasicCardType = { + typeType: "basic"; + name: "Action" | "Treasure" | "Victory" | "Reaction" | "Duration" | "Reserve" | "Night" | "Attack" | "Command"; + color: null | DominionColor; +}; +type DominionBasicLandscapeType = { + typeType: "basic"; + name: "Event" | "Landmark" | "Project" | "Way" | "Trait"; + color: null | DominionColor; +}; + +type DominionCardType = DominionBasicCardType | DominionCustomCardType; +type DominionLandscapeType = DominionBasicLandscapeType | DominionCustomLandscapeType; + +type DominionCard = { + orientation: "card"; + title: string; + description: DominionText; + type: Array<DominionCardType>; + image: string; + artist: string; + author: string; + version: string; + price: DominionText; + preview: DominionText; +} | { + orientation: "landscape"; + title: string; + description: DominionText; + type: Array<DominionLandscapeType>; + image: string; + artist: string; + author: string; + version: string; + price: DominionText; +}; + +type DominionCustomSymbol = { + image: string; +}; + +type DominionCustomCardType = { + typeType: "custom"; + name: string; + color: DominionColor +}; +type DominionCustomLandscapeType = { + typeType: "custom"; + name: string; + color: DominionColor +}; + +type DominionExpansion = { + cards: Array<DominionCard>; + icon: string; + customSymbols: Array<DominionCustomSymbol>; + customCardTypes: Array<DominionCustomCardType>; + customLandscapeTypes: Array<DominionCustomLandscapeType>; +}