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