fixed roll/PT interaction; added custom MA crowns

This commit is contained in:
Kyle
2021-08-03 09:51:32 -07:00
parent cf765a6867
commit 01b7d2f744
37 changed files with 254 additions and 13 deletions

View File

@@ -138,6 +138,7 @@ sizeCanvas('line');
sizeCanvas('watermark');
sizeCanvas('bottomInfo');
sizeCanvas('guidelines');
sizeCanvas('prePT');
//Scaling
function scaleX(input) {
return Math.round((input + card.marginX) * card.width);
@@ -295,7 +296,7 @@ function drawFrames() {
haveDrawnPrePTCanvas = true;
frameContext.globalCompositeOperation = 'source-over';
frameContext.globalAlpha = 1;
frameContext.drawImage(textCanvas, 0, 0, frameCanvas.width, frameCanvas.height);
frameContext.drawImage(prePTCanvas, 0, 0, frameCanvas.width, frameCanvas.height);
}
frameContext.globalCompositeOperation = item.mode || 'source-over';
frameContext.globalAlpha = item.opacity / 100 || 1;
@@ -333,7 +334,7 @@ function drawFrames() {
haveDrawnPrePTCanvas = true;
frameContext.globalCompositeOperation = 'source-over';
frameContext.globalAlpha = 1;
frameContext.drawImage(textCanvas, 0, 0, frameCanvas.width, frameCanvas.height);
frameContext.drawImage(prePTCanvas, 0, 0, frameCanvas.width, frameCanvas.height);
}
drawCard();
}
@@ -680,6 +681,7 @@ function drawTextBuffer() {
}
async function drawText() {
textContext.clearRect(0, 0, textCanvas.width, textCanvas.height);
prePTContext.clearRect(0, 0, prePTCanvas.width, prePTCanvas.height);
drawTextBetweenFrames = false;
for (var textObject of Object.entries(card.text)) {
await writeText(textObject[1], textContext);
@@ -782,6 +784,7 @@ function writeText(textObject, targetContext) {
var manaPlacementCounter = 0;
var realTextAlign = textAlign;
savedRollYPosition = null;
var drawToPrePTCanvas = false;
//variables that track various... things?
var newLineSpacing = 0;
var textSize = startingTextSize;
@@ -931,6 +934,7 @@ function writeText(textObject, targetContext) {
} else if (possibleCode.includes('roll')) {
drawTextBetweenFrames = true;
redrawFrames = true;
drawToPrePTCanvas = true;
if (savedRollYPosition == null) {
savedRollYPosition = currentY;
} else {
@@ -1086,17 +1090,21 @@ function writeText(textObject, targetContext) {
if (!textObject.noVerticalCenter) {
verticalAdjust = (textHeight - currentY + textSize * 0.15) / 2;
}
var trueTargetContext = targetContext;
if (drawToPrePTCanvas) {
trueTargetContext = prePTContext;
}
if (textRotation) {
targetContext.save();
targetContext
trueTargetContext.save();
trueTargetContext
const shapeX = textX + ptShift[0];
const shapeY = textY + ptShift[1];
targetContext.translate(shapeX, shapeY);
targetContext.rotate(Math.PI * textRotation / 180);
targetContext.drawImage(paragraphCanvas, permaShift[0] - canvasMargin, verticalAdjust - canvasMargin + permaShift[1]);
targetContext.restore();
trueTargetContext.translate(shapeX, shapeY);
trueTargetContext.rotate(Math.PI * textRotation / 180);
trueTargetContext.drawImage(paragraphCanvas, permaShift[0] - canvasMargin, verticalAdjust - canvasMargin + permaShift[1]);
trueTargetContext.restore();
} else {
targetContext.drawImage(paragraphCanvas, textX - canvasMargin + ptShift[0] + permaShift[0], textY - canvasMargin + verticalAdjust + ptShift[1] + permaShift[1]);
trueTargetContext.drawImage(paragraphCanvas, textX - canvasMargin + ptShift[0] + permaShift[0], textY - canvasMargin + verticalAdjust + ptShift[1] + permaShift[1]);
}
drawingText = false;
}
@@ -1472,7 +1480,7 @@ function drawCard() {
} else if (card.version.includes('dungeon') && typeof dungeonCanvas !== "undefined") {
cardContext.drawImage(dungeonCanvas, 0, 0, cardCanvas.width, cardCanvas.height);
}
if (!drawTextBetweenFrames) {cardContext.drawImage(textCanvas, 0, 0, cardCanvas.width, cardCanvas.height);}
cardContext.drawImage(textCanvas, 0, 0, cardCanvas.width, cardCanvas.height);
cardContext.drawImage(setSymbol, scaleX(card.setSymbolX), scaleY(card.setSymbolY), setSymbol.width * card.setSymbolZoom, setSymbol.height * card.setSymbolZoom)
cardContext.drawImage(bottomInfoCanvas, 0, 0, cardCanvas.width, cardCanvas.height);
// guidelines

View File

@@ -1,5 +1,4 @@
loadFramePacks([
{name:'Dungeon (AFR)', value:'Dungeon'},
{name:'Conspiracies (Draft Matters)', value:'Conspiracy'},
{name:'Future Shifted', value:'FutureRegular'},
{name:'Seventh Edition', value:'Seventh'},
@@ -7,6 +6,7 @@ loadFramePacks([
{name:'Legends Multicolored', value:'Legends'},
{name:'Alpha/Beta/Unlimited', value:'ABU'},
{name:'Misc', value:'disabled'},
{name:'Dungeon (AFR)', value:'Dungeon'},
{name:'Planechase', value:'Planechase'},
{name:'Vanguard', value:'Vanguard'}
])

View File

@@ -20,6 +20,7 @@ loadFramePacks([
{name:'Aftermath (Amonkhet)', value:'Aftermath'},
{name:'Flip (Kamigawa)', value:'Flip'},
{name:'Levelers (Zendikar)', value:'Levelers'},
{name:'Conspiracies (Draft Matters)', value:'Conspiracy'},
{name:'Custom Addons', value:'disabled'},
{name:'Brawl Legend Crowns', value:'Brawl'}
])

View File

@@ -10,7 +10,15 @@ availableFrames = [
{name:'Multicolored Frame', src:'/img/frames/mysticalArchive/m.png', masks:masks},
{name:'Artifact Frame', src:'/img/frames/mysticalArchive/a.png', masks:masks},
{name:'Land Frame', src:'/img/frames/mysticalArchive/c.png', masks:masks},
{name:'Power/Toughness', src:'/img/frames/mysticalArchive/pt.png', bounds:{x:0.7014, y:0.8924, width:0.222, height:0.0520}}
{name:'Power/Toughness', src:'/img/frames/mysticalArchive/pt.png', bounds:{x:0.7014, y:0.8924, width:0.222, height:0.0520}},
{name:'White Crown', src:'/img/frames/mysticalArchive/crowns/w.svg'},
{name:'Blue Crown', src:'/img/frames/mysticalArchive/crowns/u.svg'},
{name:'Black Crown', src:'/img/frames/mysticalArchive/crowns/b.svg'},
{name:'Red Crown', src:'/img/frames/mysticalArchive/crowns/r.svg'},
{name:'Green Crown', src:'/img/frames/mysticalArchive/crowns/g.svg'},
{name:'Multicolored Crown', src:'/img/frames/mysticalArchive/crowns/m.svg'},
{name:'Artifact Crown', src:'/img/frames/mysticalArchive/crowns/a.svg'},
{name:'Land Crown', src:'/img/frames/mysticalArchive/crowns/l.svg'}
];
//disables/enables the "Load Frame Version" button
document.querySelector('#loadFrameVersion').disabled = false;

View File

@@ -30,7 +30,15 @@ availableFrames = [
{name:'Multicolored Power/Toughness', src:'/img/frames/mysticalArchive/jp/pt/m.svg', bounds:bounds2, complementary:19},
{name:'Artifact Power/Toughness', src:'/img/frames/mysticalArchive/jp/pt/a.svg', bounds:bounds2, complementary:19},
{name:'Land Power/Toughness', src:'/img/frames/mysticalArchive/jp/pt/l.svg', bounds:bounds2, complementary:19},
{name:'Power/Toughness Cutout', src:'/img/frames/mysticalArchive/jp/pt/cutout.svg', bounds:bounds2, erase:true}
{name:'Power/Toughness Cutout', src:'/img/frames/mysticalArchive/jp/pt/cutout.svg', bounds:bounds2, erase:true},
{name:'White Crown', src:'/img/frames/mysticalArchive/jp/crowns/w.svg'},
{name:'Blue Crown', src:'/img/frames/mysticalArchive/jp/crowns/u.svg'},
{name:'Black Crown', src:'/img/frames/mysticalArchive/jp/crowns/b.svg'},
{name:'Red Crown', src:'/img/frames/mysticalArchive/jp/crowns/r.svg'},
{name:'Green Crown', src:'/img/frames/mysticalArchive/jp/crowns/g.svg'},
{name:'Multicolored Crown', src:'/img/frames/mysticalArchive/jp/crowns/m.svg'},
{name:'Artifact Crown', src:'/img/frames/mysticalArchive/jp/crowns/a.svg'},
{name:'Land Crown', src:'/img/frames/mysticalArchive/jp/crowns/l.svg'}
];
//disables/enables the "Load Frame Version" button
document.querySelector('#loadFrameVersion').disabled = false;