245 lines
5.1 KiB
TypeScript
245 lines
5.1 KiB
TypeScript
|
export interface MDCard {
|
|||
|
"card-number": string;
|
|||
|
"card-total": string;
|
|||
|
"card-set": string;
|
|||
|
language: string;
|
|||
|
"card-title": string;
|
|||
|
"mana-cost": string;
|
|||
|
"super-type": string;
|
|||
|
type: string;
|
|||
|
"sub-type": string;
|
|||
|
"text-size": string;
|
|||
|
rarity: string;
|
|||
|
artist?: string;
|
|||
|
power?: string;
|
|||
|
toughness?: string;
|
|||
|
loyalty?: string;
|
|||
|
artwork?: string;
|
|||
|
designer?: string;
|
|||
|
"card-template"?: string;
|
|||
|
"card-border"?: string;
|
|||
|
"card-overlay"?: string;
|
|||
|
"land-overlay"?: string;
|
|||
|
watermark?: string;
|
|||
|
"pt-color"?: string;
|
|||
|
"card-layout"?: string;
|
|||
|
"color-indicator"?: string;
|
|||
|
"set-symbol"?: string;
|
|||
|
centered?: boolean;
|
|||
|
"large-size"?: boolean;
|
|||
|
shiftrulestext?: boolean;
|
|||
|
colorshifted?: boolean;
|
|||
|
foil?: boolean;
|
|||
|
lighten?: boolean;
|
|||
|
"rules-text": string;
|
|||
|
"flavor-text": string;
|
|||
|
}
|
|||
|
|
|||
|
const urlbase = "https://mtg.design/render?";
|
|||
|
|
|||
|
export function getCardData(data: MDCard) {
|
|||
|
var card = "";
|
|||
|
|
|||
|
var manaCost = data["mana-cost"]
|
|||
|
.toUpperCase()
|
|||
|
.replace(/([\d\w])\/([\d\w])/g, "<$1/$2>")
|
|||
|
.replace(/(\d\d+)/g, "{$1}")
|
|||
|
.replace(/(\w)(?!\/)/g, "{$1}")
|
|||
|
.replace(/\{(\w)\}\>/g, "$1>")
|
|||
|
.replace(/\{(\d)\}\{(\d)\}/g, "$1$2")
|
|||
|
.replace(/\</g, "{")
|
|||
|
.replace(/\>/g, "}");
|
|||
|
|
|||
|
var identity,
|
|||
|
border,
|
|||
|
frame,
|
|||
|
color = 0;
|
|||
|
|
|||
|
if (/W/.test(manaCost)) color += 1;
|
|||
|
if (/U/.test(manaCost)) color += 2;
|
|||
|
if (/B/.test(manaCost)) color += 4;
|
|||
|
if (/R/.test(manaCost)) color += 8;
|
|||
|
if (/G/.test(manaCost)) color += 16;
|
|||
|
|
|||
|
switch (color) {
|
|||
|
case 0:
|
|||
|
border = "C";
|
|||
|
frame = "C";
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
border = "W";
|
|||
|
frame = "W";
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
border = "U";
|
|||
|
frame = "U";
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
border = "B";
|
|||
|
frame = "B";
|
|||
|
break;
|
|||
|
case 8:
|
|||
|
border = "R";
|
|||
|
frame = "R";
|
|||
|
break;
|
|||
|
case 16:
|
|||
|
border = "G";
|
|||
|
frame = "G";
|
|||
|
break;
|
|||
|
|
|||
|
case 3:
|
|||
|
border = "WU";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 5:
|
|||
|
border = "WB";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 6:
|
|||
|
border = "UB";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 9:
|
|||
|
border = "RW";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 10:
|
|||
|
border = "UR";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 12:
|
|||
|
border = "BR";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 17:
|
|||
|
border = "GW";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 18:
|
|||
|
border = "GU";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 20:
|
|||
|
border = "BG";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
case 24:
|
|||
|
border = "RG";
|
|||
|
frame = "Gld";
|
|||
|
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
|
|||
|
break;
|
|||
|
|
|||
|
case 7:
|
|||
|
case 11:
|
|||
|
case 13:
|
|||
|
case 14:
|
|||
|
case 15:
|
|||
|
case 19:
|
|||
|
case 21:
|
|||
|
case 22:
|
|||
|
case 23:
|
|||
|
case 25:
|
|||
|
case 26:
|
|||
|
case 27:
|
|||
|
case 28:
|
|||
|
case 29:
|
|||
|
case 30:
|
|||
|
case 31:
|
|||
|
border = "Gld";
|
|||
|
frame = "Gld";
|
|||
|
}
|
|||
|
|
|||
|
var key = [
|
|||
|
"card-number",
|
|||
|
"card-total",
|
|||
|
"card-set",
|
|||
|
"language",
|
|||
|
"card-title",
|
|||
|
"mana-cost",
|
|||
|
"super-type",
|
|||
|
"type",
|
|||
|
"sub-type",
|
|||
|
"text-size",
|
|||
|
"rarity",
|
|||
|
"artist",
|
|||
|
"power",
|
|||
|
"toughness",
|
|||
|
"loyalty",
|
|||
|
"artwork",
|
|||
|
"designer",
|
|||
|
"card-template",
|
|||
|
"card-border",
|
|||
|
"card-overlay",
|
|||
|
"land-overlay",
|
|||
|
"watermark",
|
|||
|
"pt-color",
|
|||
|
"card-layout",
|
|||
|
"color-indicator",
|
|||
|
"set-symbol"
|
|||
|
];
|
|||
|
var toggle = [
|
|||
|
"centered",
|
|||
|
"large-size",
|
|||
|
"shiftrulestext",
|
|||
|
"colorshifted",
|
|||
|
"foil",
|
|||
|
"lighten"
|
|||
|
];
|
|||
|
|
|||
|
for (var i = 0; i < key.length; i++) {
|
|||
|
var value = data[key[i]];
|
|||
|
if (value) {
|
|||
|
card +=
|
|||
|
"&" + key[i] + "=" + encodeURIComponent(value.replace(/\s+$/, ""));
|
|||
|
}
|
|||
|
}
|
|||
|
for (var i = 0; i < toggle.length; i++) {
|
|||
|
var value = data[toggle[i]] == true;
|
|||
|
if (value) {
|
|||
|
card += "&" + toggle[i] + "=true";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (data.type == "Planeswalker") {
|
|||
|
card += "&pw-size=" + data["pw-size"];
|
|||
|
//TODO Proper pw
|
|||
|
card +=
|
|||
|
"&rules-text=" +
|
|||
|
data["loyalty-ability-1"] +
|
|||
|
": " +
|
|||
|
encodeURIComponent(data["rules-text"] + " ");
|
|||
|
/*
|
|||
|
for (var i = 2; i <= $("#pw-size").val(); i++) {
|
|||
|
card +=
|
|||
|
"&pw-text" +
|
|||
|
i +
|
|||
|
"=" +
|
|||
|
$("#loyalty-ability-" + i).val() +
|
|||
|
": " +
|
|||
|
encodeURIComponent($("#planeswalker-text-" + i).val() + " ");
|
|||
|
}
|
|||
|
*/
|
|||
|
} else {
|
|||
|
card += "&rules-text=" + encodeURIComponent(data["rules-text"]);
|
|||
|
card += "&flavor-text=" + encodeURIComponent(data["flavor-text"]);
|
|||
|
}
|
|||
|
|
|||
|
card +=
|
|||
|
"&card-template=" +
|
|||
|
encodeURIComponent(frame) +
|
|||
|
"&card-accent=" +
|
|||
|
encodeURIComponent(border);
|
|||
|
card += "&edit=false";
|
|||
|
|
|||
|
return urlbase + card.substring(1);
|
|||
|
}
|