Add custom Circuit frame
@@ -675,6 +675,7 @@
|
|||||||
<option value="Praetors">Phyrexian</option>
|
<option value="Praetors">Phyrexian</option>
|
||||||
<option value="8th">8th Edition</option>
|
<option value="8th">8th Edition</option>
|
||||||
<option value="Seventh">Seventh Edition</option>
|
<option value="Seventh">Seventh Edition</option>
|
||||||
|
<option value="Circuit">Circuit (Custom)</option>
|
||||||
</select>
|
</select>
|
||||||
<!-- <button class='input' onclick='autoFrame("M15");'>M15</button>
|
<!-- <button class='input' onclick='autoFrame("M15");'>M15</button>
|
||||||
<button class='input' onclick='autoFrame("UB");'>Universes Beyond</button> -->
|
<button class='input' onclick='autoFrame("UB");'>Universes Beyond</button> -->
|
||||||
|
BIN
img/frames/custom/circuit/a.png
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
img/frames/custom/circuit/aThumb.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
img/frames/custom/circuit/b.png
Normal file
After Width: | Height: | Size: 562 KiB |
BIN
img/frames/custom/circuit/bThumb.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
img/frames/custom/circuit/bl.png
Normal file
After Width: | Height: | Size: 601 KiB |
BIN
img/frames/custom/circuit/blThumb.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
img/frames/custom/circuit/g.png
Normal file
After Width: | Height: | Size: 518 KiB |
BIN
img/frames/custom/circuit/gThumb.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
img/frames/custom/circuit/gl.png
Normal file
After Width: | Height: | Size: 560 KiB |
BIN
img/frames/custom/circuit/glThumb.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
img/frames/custom/circuit/l.png
Normal file
After Width: | Height: | Size: 540 KiB |
BIN
img/frames/custom/circuit/lThumb.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
img/frames/custom/circuit/m.png
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
img/frames/custom/circuit/mThumb.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
img/frames/custom/circuit/ml.png
Normal file
After Width: | Height: | Size: 464 KiB |
BIN
img/frames/custom/circuit/mlThumb.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
img/frames/custom/circuit/r.png
Normal file
After Width: | Height: | Size: 464 KiB |
BIN
img/frames/custom/circuit/rThumb.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
img/frames/custom/circuit/rl.png
Normal file
After Width: | Height: | Size: 483 KiB |
BIN
img/frames/custom/circuit/rlThumb.png
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
img/frames/custom/circuit/u.png
Normal file
After Width: | Height: | Size: 530 KiB |
BIN
img/frames/custom/circuit/uThumb.png
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
img/frames/custom/circuit/ul.png
Normal file
After Width: | Height: | Size: 558 KiB |
BIN
img/frames/custom/circuit/ulThumb.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
img/frames/custom/circuit/v.png
Normal file
After Width: | Height: | Size: 503 KiB |
BIN
img/frames/custom/circuit/vThumb.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
img/frames/custom/circuit/w.png
Normal file
After Width: | Height: | Size: 426 KiB |
BIN
img/frames/custom/circuit/wThumb.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
img/frames/custom/circuit/wl.png
Normal file
After Width: | Height: | Size: 454 KiB |
BIN
img/frames/custom/circuit/wlThumb.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
155
js/creator-23.js
@@ -791,6 +791,9 @@ function autoFrame() {
|
|||||||
} else if (frame == 'UB') {
|
} else if (frame == 'UB') {
|
||||||
autoUBFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text);
|
autoUBFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text);
|
||||||
group = 'Showcase-5';
|
group = 'Showcase-5';
|
||||||
|
} else if (frame == 'Circuit') {
|
||||||
|
autoCircuitFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text);
|
||||||
|
group = 'Custom';
|
||||||
} else if (frame == 'Etched') {
|
} else if (frame == 'Etched') {
|
||||||
group = 'Showcase-5';
|
group = 'Showcase-5';
|
||||||
autoEtchedFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text);
|
autoEtchedFrame(colors, card.text.mana.text, card.text.type.text, card.text.pt.text);
|
||||||
@@ -869,6 +872,52 @@ async function autoUBFrame(colors, mana_cost, type_line, power) {
|
|||||||
await card.frames.forEach(item => addFrame([], item));
|
await card.frames.forEach(item => addFrame([], item));
|
||||||
card.frames.reverse();
|
card.frames.reverse();
|
||||||
}
|
}
|
||||||
|
async function autoCircuitFrame(colors, mana_cost, type_line, power) {
|
||||||
|
var frames = card.frames.filter(frame => frame.name.includes('Extension') || frame.name.includes('Gray Holo Stamp') || frame.name.includes('Gold Holo Stamp'));
|
||||||
|
|
||||||
|
//clear the draggable frames
|
||||||
|
card.frames = [];
|
||||||
|
document.querySelector('#frame-list').innerHTML = null;
|
||||||
|
|
||||||
|
var properties = cardFrameProperties(colors, mana_cost, type_line, power);
|
||||||
|
|
||||||
|
// Set frames
|
||||||
|
|
||||||
|
if (type_line.toLowerCase().includes('legendary')) {
|
||||||
|
if (properties.pinlineRight) {
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pinlineRight, 'Crown', true));
|
||||||
|
}
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pinline, "Crown", false));
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pinline, "Crown Border Cover", false));
|
||||||
|
}
|
||||||
|
if (properties.pt) {
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pt, 'PT', false));
|
||||||
|
}
|
||||||
|
if (properties.pinlineRight) {
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pinlineRight, 'Pinline', true));
|
||||||
|
}
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.pinline, 'Pinline', false));
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.typeTitle, 'Type', false));
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.typeTitle, 'Title', false));
|
||||||
|
if (properties.pinlineRight) {
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.rulesRight, 'Rules', true));
|
||||||
|
}
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.rules, 'Rules', false));
|
||||||
|
if (properties.frameRight) {
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.frameRight, 'Frame', true));
|
||||||
|
}
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.frame, 'Frame', false));
|
||||||
|
frames.push(makeCircuitFrameByLetter(properties.frame, 'Border', false));
|
||||||
|
|
||||||
|
if (card.text.pt && type_line.includes('Vehicle') && !card.text.pt.text.includes('fff')) {
|
||||||
|
card.text.pt.text = '{fontcolor#fff}' + card.text.pt.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
card.frames = frames;
|
||||||
|
card.frames.reverse();
|
||||||
|
await card.frames.forEach(item => addFrame([], item));
|
||||||
|
card.frames.reverse();
|
||||||
|
}
|
||||||
async function autoM15Frame(colors, mana_cost, type_line, power) {
|
async function autoM15Frame(colors, mana_cost, type_line, power) {
|
||||||
var frames = card.frames.filter(frame => frame.name.includes('Extension'));
|
var frames = card.frames.filter(frame => frame.name.includes('Extension'));
|
||||||
|
|
||||||
@@ -1854,6 +1903,112 @@ function makeUBFrameByLetter(letter, mask = false, maskToRightHalf = false) {
|
|||||||
|
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
function makeCircuitFrameByLetter(letter, mask = false, maskToRightHalf = false) {
|
||||||
|
letter = letter.toUpperCase();
|
||||||
|
|
||||||
|
if (letter == 'C') {
|
||||||
|
letter = 'L';
|
||||||
|
}
|
||||||
|
|
||||||
|
var frameNames = {
|
||||||
|
'W': 'White',
|
||||||
|
'U': 'Blue',
|
||||||
|
'B': 'Black',
|
||||||
|
'R': 'Red',
|
||||||
|
'G': 'Green',
|
||||||
|
'M': 'Multicolored',
|
||||||
|
'A': 'Artifact',
|
||||||
|
'L': 'Land',
|
||||||
|
'C': 'Colorless',
|
||||||
|
'V': 'Vehicle',
|
||||||
|
'WL': 'White Land',
|
||||||
|
'UL': 'Blue Land',
|
||||||
|
'BL': 'Black Land',
|
||||||
|
'RL': 'Red Land',
|
||||||
|
'GL': 'Green Land',
|
||||||
|
'ML': 'Multicolored Land'
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((mask.includes('Crown') || mask == 'PT' || mask.includes('Stamp')) && letter.includes('L') && letter.length > 1) {
|
||||||
|
letter = letter[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
var frameName = frameNames[letter];
|
||||||
|
|
||||||
|
if (mask == "Crown Border Cover") {
|
||||||
|
return {
|
||||||
|
'name': 'Legend Crown Border Cover',
|
||||||
|
'src': '/img/black.png',
|
||||||
|
'masks': [],
|
||||||
|
'bounds': {
|
||||||
|
'height': 0.0177,
|
||||||
|
'width': 0.9214,
|
||||||
|
'x': 0.0394,
|
||||||
|
'y': 0.0277
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask == "Crown") {
|
||||||
|
var frame = {
|
||||||
|
'name': frameName + ' Legend Crown',
|
||||||
|
'src': '/img/frames/m15/ub/crowns/m15Crown' + letter + '.png',
|
||||||
|
'masks': [],
|
||||||
|
'bounds': {
|
||||||
|
'height': 0.1667,
|
||||||
|
'width': 0.9454,
|
||||||
|
'x': 0.0274,
|
||||||
|
'y': 0.0191
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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/ub/pt/' + (letter == 'L' ? 'C' : letter).toLowerCase() + '.png',
|
||||||
|
'masks': [],
|
||||||
|
'bounds': {
|
||||||
|
'height': 0.0733,
|
||||||
|
'width': 0.188,
|
||||||
|
'x': 0.7573,
|
||||||
|
'y': 0.8848
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var frame = {
|
||||||
|
'name': frameName + ' Frame',
|
||||||
|
'src': '/img/frames/custom/circuit/' + letter.toLowerCase() + '.png',
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask) {
|
||||||
|
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 {
|
||||||
|
frame.masks = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
function makeEtchedFrameByLetter(letter, mask = false, maskToRightHalf = false) {
|
function makeEtchedFrameByLetter(letter, mask = false, maskToRightHalf = false) {
|
||||||
letter = letter.toUpperCase();
|
letter = letter.toUpperCase();
|
||||||
var frameNames = {
|
var frameNames = {
|
||||||
|
@@ -210,6 +210,7 @@ const frameNames = new Map ([
|
|||||||
['Celid\'s Asap', 'CustomCelidAsap'],
|
['Celid\'s Asap', 'CustomCelidAsap'],
|
||||||
['Magrao\'s Kaldheim', 'CustomMagraoKaldheim'],
|
['Magrao\'s Kaldheim', 'CustomMagraoKaldheim'],
|
||||||
['Pokemon', 'Pokemon'],
|
['Pokemon', 'Pokemon'],
|
||||||
|
['Circuit', 'Circuit'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
frameSearch = (str) => {
|
frameSearch = (str) => {
|
||||||
|
@@ -35,5 +35,6 @@ loadFramePacks([
|
|||||||
{name:'Kaldheim, Fullart - @feuer_ameise', value:'FeuerAmeiseKaldheim'},
|
{name:'Kaldheim, Fullart - @feuer_ameise', value:'FeuerAmeiseKaldheim'},
|
||||||
{name:'Celid\'s Asap', value:'CustomCelidAsap'},
|
{name:'Celid\'s Asap', value:'CustomCelidAsap'},
|
||||||
{name:'Magrao\'s Kaldheim', value:'CustomMagraoKaldheim'},
|
{name:'Magrao\'s Kaldheim', value:'CustomMagraoKaldheim'},
|
||||||
{name:'Pokemon', value:'Pokemon'}
|
{name:'Pokemon', value:'Pokemon'},
|
||||||
|
{name:'Circuit', value:'Circuit'}
|
||||||
])
|
])
|
59
js/frames/packCircuit.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
//Create objects for common properties across available frames
|
||||||
|
var masks = [{src:'/img/frames/m15/regular/m15MaskPinline.png', name:'Pinline'}, {src:'/img/frames/m15/regular/m15MaskTitle.png', name:'Title'}, {src:'/img/frames/m15/regular/m15MaskType.png', name:'Type'}, {src:'/img/frames/m15/regular/m15MaskRules.png', name:'Rules'}, {src:'/img/frames/m15/regular/m15MaskFrame.png', name:'Frame'}, {src:'/img/frames/m15/regular/m15MaskBorder.png', name:'Border'}];
|
||||||
|
var bounds = {x:0.7573, y:0.8848, width:0.188, height:0.0733};
|
||||||
|
var bounds2 = {x:0.4254, y:0.9005, width:0.1494, height:0.0486};
|
||||||
|
//defines available frames
|
||||||
|
availableFrames = [
|
||||||
|
{name:'White Frame', src:'/img/frames/custom/circuit/w.png', masks:masks},
|
||||||
|
{name:'Blue Frame', src:'/img/frames/custom/circuit/u.png', masks:masks},
|
||||||
|
{name:'Black Frame', src:'/img/frames/custom/circuit/b.png', masks:masks},
|
||||||
|
{name:'Red Frame', src:'/img/frames/custom/circuit/r.png', masks:masks},
|
||||||
|
{name:'Green Frame', src:'/img/frames/custom/circuit/g.png', masks:masks},
|
||||||
|
{name:'Multicolored Frame', src:'/img/frames/custom/circuit/m.png', masks:masks},
|
||||||
|
{name:'Artifact Frame', src:'/img/frames/custom/circuit/a.png', masks:masks},
|
||||||
|
{name:'Land Frame', src:'/img/frames/custom/circuit/l.png', masks:masks},
|
||||||
|
{name:'Vehicle Frame', src:'/img/frames/custom/circuit/v.png', masks:masks},
|
||||||
|
{name:'White Land Frame', src:'/img/frames/custom/circuit/wl.png', masks:masks},
|
||||||
|
{name:'Blue Land Frame', src:'/img/frames/custom/circuit/ul.png', masks:masks},
|
||||||
|
{name:'Black Land Frame', src:'/img/frames/custom/circuit/bl.png', masks:masks},
|
||||||
|
{name:'Red Land Frame', src:'/img/frames/custom/circuit/rl.png', masks:masks},
|
||||||
|
{name:'Green Land Frame', src:'/img/frames/custom/circuit/gl.png', masks:masks},
|
||||||
|
{name:'Multicolored Land Frame', src:'/img/frames/custom/circuit/ml.png', masks:masks},
|
||||||
|
{name:'White Power/Toughness', src:'/img/frames/m15/ub/pt/w.png', bounds:bounds},
|
||||||
|
{name:'Blue Power/Toughness', src:'/img/frames/m15/ub/pt/u.png', bounds:bounds},
|
||||||
|
{name:'Black Power/Toughness', src:'/img/frames/m15/ub/pt/b.png', bounds:bounds},
|
||||||
|
{name:'Red Power/Toughness', src:'/img/frames/m15/ub/pt/r.png', bounds:bounds},
|
||||||
|
{name:'Green Power/Toughness', src:'/img/frames/m15/ub/pt/g.png', bounds:bounds},
|
||||||
|
{name:'Multicolored Power/Toughness', src:'/img/frames/m15/ub/pt/m.png', bounds:bounds},
|
||||||
|
{name:'Artifact Power/Toughness', src:'/img/frames/m15/ub/pt/a.png', bounds:bounds},
|
||||||
|
{name:'Colorless Power/Toughness', src:'/img/frames/m15/ub/pt/c.png', bounds:bounds},
|
||||||
|
{name:'Vehicle Power/Toughness', src:'/img/frames/m15/ub/pt/v.png', bounds:bounds}
|
||||||
|
];
|
||||||
|
//disables/enables the "Load Frame Version" button
|
||||||
|
document.querySelector('#loadFrameVersion').disabled = false;
|
||||||
|
//defines process for loading this version, if applicable
|
||||||
|
document.querySelector('#loadFrameVersion').onclick = async function() {
|
||||||
|
//resets things so that every frame doesn't have to
|
||||||
|
await resetCardIrregularities();
|
||||||
|
//sets card version
|
||||||
|
card.version = 'circuit';
|
||||||
|
//art bounds
|
||||||
|
card.artBounds = {x:0.0767, y:0.1129, width:0.8476, height:0.4429};
|
||||||
|
autoFitArt();
|
||||||
|
//set symbol bounds
|
||||||
|
card.setSymbolBounds = {x:0.9213, y:0.5910, width:0.12, height:0.0410, vertical:'center', horizontal: 'right'};
|
||||||
|
resetSetSymbol();
|
||||||
|
//watermark bounds
|
||||||
|
card.watermarkBounds = {x:0.5, y:0.7762, width:0.75, height:0.2305};
|
||||||
|
resetWatermark();
|
||||||
|
//text
|
||||||
|
loadTextOptions({
|
||||||
|
mana: {name:'Mana Cost', text:'', y:0.0613, width:0.9292, height:71/2100, oneLine:true, size:71/1638, align:'right', shadowX:-0.001, shadowY:0.0029, manaCost:true, manaSpacing:0},
|
||||||
|
title: {name:'Title', text:'', x:0.0854, y:0.0522, width:0.8292, height:0.0543, oneLine:true, font:'belerenb', size:0.0381},
|
||||||
|
type: {name:'Type', text:'', x:0.0854, y:0.5664, width:0.8292, height:0.0543, oneLine:true, font:'belerenb', size:0.0324},
|
||||||
|
rules: {name:'Rules Text', text:'', x:0.086, y:0.6303, width:0.828, height:0.2875, size:0.0362},
|
||||||
|
pt: {name:'Power/Toughness', text:'', x:0.7928, y:0.902, width:0.1367, height:0.0372, size:0.0372, font:'belerenbsc', oneLine:true, align:'center'}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//loads available frames
|
||||||
|
loadFramePack();
|