From 46c8f688baa235232686c0a2149e02a0329c1b44 Mon Sep 17 00:00:00 2001 From: Josh Birnholz Date: Sat, 4 Feb 2023 15:04:27 -0500 Subject: [PATCH] Add Phyrexian autoframe support --- creator/index.html | 1 + js/creator-23.js | 160 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/creator/index.html b/creator/index.html index 972fe0aa..fb2d1aa5 100644 --- a/creator/index.html +++ b/creator/index.html @@ -653,6 +653,7 @@ + diff --git a/js/creator-23.js b/js/creator-23.js index 298f7394..4b0af08b 100644 --- a/js/creator-23.js +++ b/js/creator-23.js @@ -766,6 +766,9 @@ function autoFrame() { } else if (frame == 'Etched') { group = 'Showcase-5'; autoEtchedFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text); + } else if (frame == 'Praetors') { + group = 'Showcase-5'; + autoPhyrexianFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text); } else if (frame == 'Seventh') { group = 'Misc-2'; autoSeventhEditionFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text); @@ -1021,6 +1024,47 @@ async function autoEtchedFrame(colors, mana_cost, type_line, power) { await card.frames.forEach(item => addFrame([], item)); card.frames.reverse(); } +async function autoPhyrexianFrame(colors, mana_cost, type_line, power) { + var frames = card.frames.filter(frame => frame.name.includes('Extension')); + + //clear the draggable frames + card.frames = []; + document.querySelector('#frame-list').innerHTML = null; + + var properties = cardFrameProperties(colors, mana_cost, type_line, power, 'Phyrexian'); + + // Set frames + + if (type_line.toLowerCase().includes('legendary')) { + if (properties.pinlineRight) { + frames.push(makePhyrexianFrameByLetter(properties.pinlineRight, 'Crown', true)); + } + frames.push(makePhyrexianFrameByLetter(properties.pinline, "Crown", false)); + } + if (properties.pt) { + frames.push(makePhyrexianFrameByLetter(properties.pt, 'PT', false)); + } + if (properties.pinlineRight) { + frames.push(makePhyrexianFrameByLetter(properties.pinlineRight, 'Pinline', true)); + } + frames.push(makePhyrexianFrameByLetter(properties.pinline, 'Pinline', false)); + frames.push(makePhyrexianFrameByLetter(properties.typeTitle, 'Type', false)); + frames.push(makePhyrexianFrameByLetter(properties.typeTitle, 'Title', false)); + if (properties.pinlineRight) { + frames.push(makePhyrexianFrameByLetter(properties.rulesRight, 'Rules', true)); + } + frames.push(makePhyrexianFrameByLetter(properties.rules, 'Rules', false)); + if (properties.frameRight) { + frames.push(makePhyrexianFrameByLetter(properties.frameRight, 'Frame', true)); + } + frames.push(makePhyrexianFrameByLetter(properties.frame, 'Frame', false)); + frames.push(makePhyrexianFrameByLetter(properties.frame, 'Border', false)); + + card.frames = frames; + card.frames.reverse(); + await card.frames.forEach(item => addFrame([], item)); + card.frames.reverse(); +} async function autoSeventhEditionFrame(colors, mana_cost, type_line, power) { var frames = card.frames.filter(frame => frame.name.includes('Extension') || frame.name.includes('DCI Star')); @@ -1663,6 +1707,122 @@ function makeEtchedFrameByLetter(letter, mask = false, maskToRightHalf = false) return frame; } +function makePhyrexianFrameByLetter(letter, mask = false, maskToRightHalf = false) { + if (letter == 'C' || letter == 'V') { + letter = 'L'; + } + + if (mask == 'Rules') { + mask = 'Rules Text'; + } + + letter = letter.toUpperCase(); + var frameNames = { + 'W': 'White', + 'U': 'Blue', + 'B': 'Black', + 'R': 'Red', + 'G': 'Green', + 'M': 'Multicolored', + 'A': 'Artifact', + 'L': 'Land' + } + + if (mask == 'PT' && letter.includes('L') && letter.length > 1) { + letter = letter[0]; + } + + if (letter == 'ML') { + letter = 'M'; + } else if (letter.includes('L') && letter.length > 1) { + letter = letter[0]; + } + + var frameName = frameNames[letter]; + + if (mask == "Crown") { + var frame = { + 'name': frameName + ' Legendary Crown', + 'src': '/img/frames/m15/praetors/' + letter.toLowerCase() + 'Crown.png', + 'masks': [], + 'bounds': { + 'height': 100/2100, + 'width': 1, + 'x': 0, + 'y': 0 + } + } + if (maskToRightHalf) { + frame.masks.push({ + 'src': '/img/frames/maskRightHalf.png', + 'name': 'Right Half' + }); + } + return frame; + } + + if (mask == 'PT') { + return { + 'name': frameName + ' Power/Toughness', + 'src': '/img/frames/m15/praetors/' + letter.toLowerCase() + 'pt.png', + 'masks': [], + 'bounds': { + 'height': 0.0772, + 'width': 0.212, + 'x': 0.746, + 'y': 0.8858 + } + } + } + + var frame = { + 'name': frameName + ' Frame', + 'src': '/img/frames/m15/praetors/' + letter.toLowerCase() + '.png', + } + + if (mask == 'Type' || mask == 'Title') { + frame.masks = [ + { + 'src': '/img/frames/m15/regular/m15Mask' + mask + '.png', + 'name': mask + } + ] + + if (maskToRightHalf) { + frame.masks.push({ + 'src': '/img/frames/maskRightHalf.png', + 'name': 'Right Half' + }); + } + } else if (mask) { + var extension = "png"; + var name = mask.toLowerCase(); + if (mask == 'Frame') { + extension = 'svg'; + } else if (mask == 'Rules Text') { + extension = 'svg'; + name = 'text'; + } + + frame.masks = [ + { + 'src': '/img/frames/m15/praetors/' + name + '.' + extension, + 'name': mask + } + ] + + if (maskToRightHalf) { + frame.masks.push({ + 'src': '/img/frames/maskRightHalf.png', + 'name': 'Right Half' + }); + } + } else { + frame.masks = []; + } + + return frame; +} function makeSeventhEditionFrameByLetter(letter, mask = false, maskToRightHalf = false) { letter = letter.toUpperCase(); var frameNames = {