import { Card } from "./types"; export function cardFullName(card: Card): string { if (card.Subname != "") { return `${card.Name}, ${card.Subname}`; } return card.Name; } export function createPonyheadURL(cards: Card[]): string { const cardlist = cards.map(c => `${c.ID}x1`); return "https://ponyhead.com/deckbuilder?v1code=" + cardlist.join("-"); } export const colorNames = [ "Loyalty", "Honesty", "Laughter", "Magic", "Generosity", "Kindness", "None" ]; export const typeNames = [ "Mane Character", "Friend", "Event", "Resource", "Troublemaker", "Problem" ]; export const rarityNames = ["C", "U", "R", "SR", "UR", "RR", "F"]; // Trasform string from list to a number that can be used for comparison/sorting function arrIndex(arr: string[]) { return function(comp: string) { const idx = arr.indexOf(comp); if (idx < 0) { return arr.length; } return idx; }; } export const elemIndex = arrIndex(colorNames); export const typeIndex = arrIndex(typeNames); export const rarityIndex = arrIndex(rarityNames); // Convert Element[] to number by scaling elements for fair comparisons // Example: ["Loyalty", "Kindness"] -> [0, 5] -> [1, 6] -> 16 export function multiElemStr(elems: string[]): number { return elems .map(elemIndex) .reduce( (acc, elem, idx, arr) => acc + (elem + 1) * 10 ** (arr.length - idx - 1), 0 ); } export function cardLimit(type: string) { switch (type) { case "Mane Character": return 1; case "Problem": return 2; default: return 3; } }