From 5bbe1ead04e4a15554072a8c1c2aa1d4d287907b Mon Sep 17 00:00:00 2001 From: Kyle <41976328+ImKyle4815@users.noreply.github.com> Date: Fri, 29 Nov 2019 17:29:26 -0800 Subject: [PATCH] fix --- data/images/imageCSV.csv | 98 ++++---- data/images/stamp.png | Bin 0 -> 18108 bytes data/scripts/colors.js | 2 +- data/scripts/main.js | 515 ++++++--------------------------------- data/site/newStyles.css | 33 ++- data/versions/m15.js | 8 +- test.html | 1 + 7 files changed, 158 insertions(+), 499 deletions(-) create mode 100644 data/images/stamp.png diff --git a/data/images/imageCSV.csv b/data/images/imageCSV.csv index c4f9b974..ba52ca09 100644 --- a/data/images/imageCSV.csv +++ b/data/images/imageCSV.csv @@ -15,51 +15,53 @@ Red Land,m15RLFull.png,Full-0-0-750-1050;Title-0-0-750-1050;Type-0-0-750-1050;Ru Green Land,m15GLFull.png,Full-0-0-750-1050;Title-0-0-750-1050;Type-0-0-750-1050;Rules Text-0-0-750-1050;Pinline-0-0-750-1050;Frame-0-0-750-1050 Multicolored Land,m15MLFull.png,Full-0-0-750-1050;Title-0-0-750-1050;Type-0-0-750-1050;Rules Text-0-0-750-1050;Pinline-0-0-750-1050;Frame-0-0-750-1050 Colorless Land,m15CLFull.png,Full-0-0-750-1050;Title-0-0-750-1050;Type-0-0-750-1050;Rules Text-0-0-750-1050;Pinline-0-0-750-1050;Frame-0-0-750-1050 -White,m15WPT.png,Full-570-934-137-77 -Blue,m15UPT.png,Full-570-934-137-77 -Black,m15BPT.png,Full-570-934-137-77 -Red,m15RPT.png,Full-570-934-137-77 -Green,m15GPT.png,Full-570-934-137-77 -Multicolored,m15MPT.png,Full-570-934-137-77 -Artifact,m15APT.png,Full-570-934-137-77 -Colorless,m15CPT.png,Full-570-934-137-77 -Vehicle,m15VPT.png,Full-570-934-137-77 -White,m15WLegendary.png,Full-20-20-714-186 -Blue,m15ULegendary.png,Full-20-20-714-186 -Black,m15BLegendary.png,Full-20-20-714-186 -Red,m15RLegendary.png,Full-20-20-714-186 -Green,m15GLegendary.png,Full-20-20-714-186 -Multicolored,m15MLegendary.png,Full-20-20-714-186 -Artifact,m15ALegendary.png,Full-20-20-714-186 -Colorless,m15CLegendary.png,Full-20-20-714-186 -White,m15WRareStamp.png,Full-329-949-90-50 -Blue,m15URareStamp.png,Full-329-949-90-50 -Black,m15BRareStamp.png,Full-329-949-90-50 -Red,m15RRareStamp.png,Full-329-949-90-50 -Green,m15GRareStamp.png,Full-329-949-90-50 -Multicolored,m15MRareStamp.png,Full-329-949-90-50 -Artifact,m15ARareStamp.png,Full-329-949-90-50 -Colorless,m15CRareStamp.png,Full-329-949-90-50 -White,m15WMiracle.png,Full-30-30-690-511 -Blue,m15UMiracle.png,Full-30-30-690-511 -Black,m15BMiracle.png,Full-30-30-690-511 -Red,m15RMiracle.png,Full-30-30-690-511 -Green,m15GMiracle.png,Full-30-30-690-511 -Multicolored,m15MMiracle.png,Full-30-30-690-511 -Artifact,m15AMiracle.png,Full-30-30-690-511 -Colorless,m15CMiracle.png,Full-30-30-690-511 -White,m15WNyx.png,Full-30-30-690-586 -Blue,m15UNyx.png,Full-30-30-690-586 -Black,m15BNyx.png,Full-30-30-690-586 -Red,m15RNyx.png,Full-30-30-690-586 -Green,m15GNyx.png,Full-30-30-690-586 -Multicolored,m15MNyx.png,Full-30-30-690-586 -Artifact,m15ANyx.png,Full-30-30-690-586 -Colorless,m15CNyx.png,Full-30-30-690-586 -White Land,m15WLNyx.png,Full-30-30-690-586 -Blue Land,m15ULNyx.png,Full-30-30-690-586 -Black Land,m15BLNyx.png,Full-30-30-690-586 -Red Land,m15RLNyx.png,Full-30-30-690-586 -Green Land,m15GLNyx.png,Full-30-30-690-586 -Multicolored Land,m15MLNyx.png,Full-30-30-690-586 -Colorless Land,m15CLNyx.png,Full-30-30-690-586 \ No newline at end of file +White PT,m15WPT.png,Full-570-934-137-77 +Blue PT,m15UPT.png,Full-570-934-137-77 +Black PT,m15BPT.png,Full-570-934-137-77 +Red PT,m15RPT.png,Full-570-934-137-77 +Green PT,m15GPT.png,Full-570-934-137-77 +Multicolored PT,m15MPT.png,Full-570-934-137-77 +Artifact PT,m15APT.png,Full-570-934-137-77 +Colorless PT,m15CPT.png,Full-570-934-137-77 +Vehicle PT,m15VPT.png,Full-570-934-137-77 +White Legendary,m15WLegendary.png,Full-20-20-714-186 +Blue Legendary,m15ULegendary.png,Full-20-20-714-186 +Black Legendary,m15BLegendary.png,Full-20-20-714-186 +Red Legendary,m15RLegendary.png,Full-20-20-714-186 +Green Legendary,m15GLegendary.png,Full-20-20-714-186 +Multicolored Legendary,m15MLegendary.png,Full-20-20-714-186 +Artifact Legendary,m15ALegendary.png,Full-20-20-714-186 +Colorless Legendary,m15CLegendary.png,Full-20-20-714-186 +White Rare Stamp,m15WRareStamp.png,Full-329-949-90-50 +Blue Rare Stamp,m15URareStamp.png,Full-329-949-90-50 +Black Rare Stamp,m15BRareStamp.png,Full-329-949-90-50 +Red Rare Stamp,m15RRareStamp.png,Full-329-949-90-50 +Green Rare Stamp,m15GRareStamp.png,Full-329-949-90-50 +Multicolored Rare Stamp,m15MRareStamp.png,Full-329-949-90-50 +Artifact Rare Stamp,m15ARareStamp.png,Full-329-949-90-50 +Colorless Rare Stamp,m15CRareStamp.png,Full-329-949-90-50 +Holo Stamp,stamp.png,Full-340-965-70-38 +Black Border,masks/Border.png,Full-0-0-750-1050 +White Miracle,m15WMiracle.png,Full-30-30-690-511 +Blue Miracle,m15UMiracle.png,Full-30-30-690-511 +Black Miracle,m15BMiracle.png,Full-30-30-690-511 +Red Miracle,m15RMiracle.png,Full-30-30-690-511 +Green Miracle,m15GMiracle.png,Full-30-30-690-511 +Multicolored Miracle,m15MMiracle.png,Full-30-30-690-511 +Artifact Miracle,m15AMiracle.png,Full-30-30-690-511 +Colorless Miracle,m15CMiracle.png,Full-30-30-690-511 +White Nyx,m15WNyx.png,Full-30-30-690-586 +Blue Nyx,m15UNyx.png,Full-30-30-690-586 +Black Nyx,m15BNyx.png,Full-30-30-690-586 +Red Nyx,m15RNyx.png,Full-30-30-690-586 +Green Nyx,m15GNyx.png,Full-30-30-690-586 +Multicolored Nyx,m15MNyx.png,Full-30-30-690-586 +Artifact Nyx,m15ANyx.png,Full-30-30-690-586 +Colorless Nyx,m15CNyx.png,Full-30-30-690-586 +White Land Nyx,m15WLNyx.png,Full-30-30-690-586 +Blue Land Nyx,m15ULNyx.png,Full-30-30-690-586 +Black Land Nyx,m15BLNyx.png,Full-30-30-690-586 +Red Land Nyx,m15RLNyx.png,Full-30-30-690-586 +Green Land Nyx,m15GLNyx.png,Full-30-30-690-586 +Multicolored Land Nyx,m15MLNyx.png,Full-30-30-690-586 +Colorless Land Nyx,m15CLNyx.png,Full-30-30-690-586 \ No newline at end of file diff --git a/data/images/stamp.png b/data/images/stamp.png new file mode 100644 index 0000000000000000000000000000000000000000..e0561ee3fce2b6f72bc7e4122a4ee9d91e9bf117 GIT binary patch literal 18108 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 b|D*jEA5e`7&>0Mr00000NkvXXu0mjfDIi4s literal 0 HcmV?d00001 diff --git a/data/scripts/colors.js b/data/scripts/colors.js index 98b29b0f..c74ddb61 100644 --- a/data/scripts/colors.js +++ b/data/scripts/colors.js @@ -9,7 +9,7 @@ function changeColor() { document.documentElement.style.setProperty("--shifting-color-1", "rgb(" + parseInt(colors[0] + regularAdjust) + "," + parseInt(colors[1] + regularAdjust) + "," + parseInt(colors[2] + regularAdjust) + ")") var lightColors = indexToColor(currentColorIndex + lightLead) document.documentElement.style.setProperty("--shifting-color-1-light", "rgb(" + parseInt(lightColors[0] + lightAdjust) + "," + parseInt(lightColors[1] + lightAdjust) + "," + parseInt(lightColors[2] + lightAdjust) + ")") - currentColorIndex += colorJumpSize = 153 / 120 //The second number is how many seconds it takes to do a full loop + currentColorIndex += 153 / 360 //The second number is how many seconds it takes to do a full loop } function indexToColor(colorIndex) { var red = 0, green = 0, blue = 0 diff --git a/data/scripts/main.js b/data/scripts/main.js index f73a87a0..d087211d 100644 --- a/data/scripts/main.js +++ b/data/scripts/main.js @@ -3,10 +3,9 @@ //============================================// /* Test things! */ function testFunction() { - // console.log("test function begin"); - // cardMaster.innerHTML += frameList[0].cardMasterElement("Full"); - // console.log("test function end"); - // cardMasterUpdated(); + cardMaster.appendChild(frameList[0].cardMasterElement("Full")); + cardMasterUpdated(); + console.log("First frame manually loaded") } @@ -21,6 +20,7 @@ function initiate() { window.maskList = []; window.selectedFrame = -1; window.selectedMask = ""; + window.updateTextDelay = setTimeout(rewriteText, 500); for (var i = 0; i < maskNameList.length; i++) { var imageSource = "data/images/masks/" + maskNameList[i].replace(" ", "") + ".png"; maskList[i] = new Image(); @@ -87,7 +87,7 @@ function loadImageCSV() { frameList[frameList.length] = new frameImage(splitIndividualImageCSV[0], "data/images/" + splitIndividualImageCSV[1], splitIndividualImageCSV[2]); } for (var i = 0; i < frameList.length; i++) { - document.getElementById("framePicker").innerHTML += frameList[i].framePickerElement(); + document.getElementById("framePicker").appendChild(frameList[i].framePickerElement()); } //I don't like these here, because even though they run, it doesn't populate the mask options // document.getElementsByClassName("frameOption")[0].classList.add("frameOptionSelected"); @@ -123,10 +123,19 @@ class frameImage { } } cardMasterElement(targetMask) { - return "
" + this.displayName + " (" + targetMask + ")x
"; + var tempElement = document.createElement("div"); + tempElement.id = "frameIndex" + frameList.indexOf(this); + tempElement.classList.add("cardMasterElement"); + tempElement.innerHTML = this.displayName + " (" + targetMask + ") x"; + return tempElement } framePickerElement(targetElement) { - return "
"; + var tempElement = document.createElement("div"); + tempElement.id = "frameIndex" + frameList.indexOf(this); + tempElement.classList.add("frameOption"); + tempElement.onclick = frameOptionClicked; + tempElement.innerHTML = "" + return tempElement; } } @@ -153,6 +162,7 @@ function frameOptionClicked(event) { } document.getElementsByClassName("maskOption")[0].classList.add("maskOptionSelected"); selectedMask = document.getElementsByClassName("maskOption")[0].id.replace("maskName", ""); + document.getElementById("selectedFramePreview").innerHTML = "Selected: " + frameList[selectedFrame].displayName + " frame with a " + selectedMask + " mask"; } } function maskOptionClicked(event) { @@ -167,11 +177,13 @@ function maskOptionClicked(event) { } clickedElement.classList.add("maskOptionSelected"); selectedMask = clickedElement.id.replace("maskName", ""); + document.getElementById("selectedFramePreview").innerHTML = "Selected: " + frameList[selectedFrame].displayName + " frame with a " + selectedMask + " mask"; } function addFrameToCardMaster(right = "") { //Takes the stored selectedFrame and selectedMask to add the frame w/ mask to the card master! if (selectedFrame > -1 && selectedMask != "") { - cardMaster.innerHTML = frameList[selectedFrame].cardMasterElement(selectedMask + right) + cardMaster.innerHTML; + //In order to both keep input values and insert new frames before old ones, they must be added like so: + cardMaster.insertBefore(frameList[selectedFrame].cardMasterElement(selectedMask + right), cardMaster.children[0]); cardMasterUpdated(); } } @@ -183,10 +195,11 @@ function deleteCardMasterElement(event) { /* Card Master Cool Stuff! */ function cardMasterUpdated() { - console.log("The card master is updating!"); + // console.log("The card master is updating!"); frameFinalContext.clearRect(0, 0, cardWidth, cardHeight); for (var i = cardMaster.children.length - 1; i >= 0; i--) { var targetChild = cardMaster.children[i]; + var opacityToDraw = targetChild.children[0].value / 100; var frameToDraw = frameList[parseInt(targetChild.id.replace("frameIndex", ""))]; var maskName = targetChild.innerHTML.slice(targetChild.innerHTML.indexOf("(") + 1, targetChild.innerHTML.indexOf(")")); var rightHalf = false; @@ -200,13 +213,18 @@ function cardMasterUpdated() { frameMaskContext.globalCompositeOperation = "source-over"; frameMaskContext.clearRect(0, 0, cardWidth, cardHeight); frameMaskContext.drawImage(maskList[maskImageIndex], 0, 0, cardWidth, cardHeight); + frameMaskContext.globalCompositeOperation = "source-in"; if (rightHalf) { - frameMaskContext.globalCompositeOperation = "source-in" frameMaskContext.drawImage(maskList[0], 0, 0, cardWidth, cardHeight) } - frameMaskContext.globalCompositeOperation = "source-in"; frameMaskContext.drawImage(frameToDraw.image, frameToDraw.xList[maskIndex], frameToDraw.yList[maskIndex], frameToDraw.widthList[maskIndex], frameToDraw.heightList[maskIndex]); + if (targetChild.children[1].checked == true) { + frameFinalContext.globalCompositeOperation = "destination-out"; + } + frameFinalContext.globalAlpha = opacityToDraw; frameFinalContext.drawImage(frameMaskCanvas, 0, 0, cardWidth, cardHeight); + frameFinalContext.globalAlpha = 1; + frameFinalContext.globalCompositeOperation = "source-over"; } updateBottomInfoCanvas(); } @@ -214,15 +232,9 @@ function cardMasterUpdated() { /* Overall card stuff */ function cardImageUpdated() { - // //clear it -// cardContext.fillStyle = "black" -// cardContext.fillRect(0, 0, cardWidth, cardHeight) -// //draw the art, frame, text, mana symbols, set symbol, watermark... - - -// //clear the corners - //Clear the canvas - cardFinalContext.clearRect(0, 0, cardWidth, cardHeight); + //Clear the canvases + cardFinalContext.fillStyle = "black"; + cardFinalContext.fillRect(0, 0, cardWidth, cardHeight); displayContext.clearRect(0, 0, cardWidth, cardHeight); //Draw the art, frame, text, bottom info, mana cost, watermark, and set symbol cardFinalContext.drawImage(cardArt, version.artX + getValue("inputCardArtX"), version.artY + getValue("inputCardArtY"), cardArt.width * getValue("inputCardArtZoom") / 100, cardArt.height * getValue("inputCardArtZoom") / 100) @@ -284,7 +296,11 @@ function changeWhichText() { } function updateText() { version.textList[whichTextIndex][1] = document.getElementById("inputText").value - textContext.clearRect(0, 0, cardWidth, cardHeight) + clearTimeout(updateTextDelay) + updateTextDelay = setTimeout(rewriteText, 250); +} +function rewriteText() { + textContext.clearRect(0, 0, cardWidth, cardHeight) for (var i = 0; i < version.textList.length; i ++) { textContext.writeText(version.textList[i][1], version.textList[i][2], version.textList[i][3], version.textList[i][4], version.textList[i][5], version.textList[i][6], version.textList[i][7], version.textList[i][8], version.textList[i][9]) } @@ -338,208 +354,15 @@ function loadScript(scriptPath){ +/* + Directly taken (with small edits) from previous version. + sort these!!! +*/ - -// //Define some variables -// var cardWidth = 750, cardHeight = 1050 -// var version = {} - -// var initiated = false -// var suggestedColor = "White" - -// //Make all the canvases and their contexts -// var mainCanvas = document.getElementById("mainCanvas") -// mainCanvas.width = cardWidth -// mainCanvas.height = cardHeight -// var mainContext = mainCanvas.getContext("2d") -// var canvasList = ["card", "mask", "image", "text", "paragraph", "line", "transparent", "crop", "bottomInfo", "setSymbol", "watermark", "temp"] -// for (var i = 0; i < canvasList.length; i++) { -// window[canvasList[i] + "Canvas"] = document.createElement("canvas") -// window[canvasList[i] + "Canvas"].width = cardWidth -// window[canvasList[i] + "Canvas"].height = cardHeight -// window[canvasList[i] + "Context"] = window[canvasList[i] + "Canvas"].getContext("2d") -// } -// //Create the arrays that keeps track of what parts of the card are what -// var cardMasterTypes = [] -// var cardMasterImages = [] -// //var cardMasterOpacity = [] -// var cardMasterOpacityValue = [] -// //Mana symbol Array setup -// var manaSymbolCodeList = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "w", "u", "b", "r", "g", "2w", "2u", "2b", "2r", "2g", "pw", "pu", "pb", "pr", "pg", "wu", "wb", "ub", "ur", "br", "bg", "rg", "rw", "gw", "gu", "x", "s", "c", "t","untap", "e", "y", "z", "1/2", "inf", "chaos", "plane", "l+", "l-", "l0", "oldtap", "artistbrush", "bar"] -// var manaSymbolImageList = [] -// //Manually create a few important images -// var cardArt = new Image(), setSymbol = new Image(), watermark = new Image() -// cardArt.crossOrigin = "anonymous" -// setSymbol.crossOrigin = "anonymous" -// watermark.crossOrigin = "anonymous" -// cardArt.onload = function() { -// updateCardCanvas() -// } -// setSymbol.onload = function() { -// updateSetSymbolCanvas() -// } -// watermark.onload = function() { -// updateWatermarkCanvas() -// } -// //Load the mana symbol images -// loadManaSymbolImages() -// //Load the CSV full of image data -// loadImageSpreadsheet() - - -// //============================================// -// // Functions // -// //============================================// -// var nameArray = [] -// //Load the CSV full of image data -// function loadImageSpreadsheet() { -// var xhttp = new XMLHttpRequest() -// xhttp.onreadystatechange = function() { -// if (this.readyState == 4) { -// var rawText = xhttp.responseText.split("\n") -// for (var i = 0; i < rawText.length; i ++) { -// for (var n = 0; n < rawText[0].split(",").length; n++) { -// if (i == 0) { -// window[rawText[0].split(",")[n].trim() + "Array"] = [] -// } else { -// window[rawText[0].split(",")[n].trim() + "Array"][i - 1] = rawText[i].split(",")[n].trim() -// } -// } -// if (i != 0) { -// nameArray[i - 1] = versionArray[i - 1] + colorArray[i - 1] + typeArray[i - 1] -// } -// if (i == rawText.length - 1) { -// init() -// } -// } -// } -// } -// xhttp.open("GET", "data/images/imageSpreadsheet.csv", true) -// xhttp.send() -// } -// //After the csv has been loaded, the init function runs. -// function init() { -// //Loads the base version (m15) -// changeVersionTo("m15") -// //Loads all the masks -// for (var i = 0; i < colorArray.length; i ++) { -// if (colorArray[i] == "Mask") { -// loadImage(i) -// } -// } -// //Runs any tests. This should not do anything when published. -// setTimeout(testFunction, 100) -// initiated = true -// textCodeTutorial() -// //Checks cookies! -// setTimeout(checkCookies, 100) -// } -// //Loads an image. Only actually loads images the first time each image is loaded, otherwise assigns it. -// function loadImage(index, target = "none") { -// if (window[nameArray[index]] == undefined) { -// window[nameArray[index]] = new customImage(index, target) -// } else { -// addToCardMaster(index, target) -// } -// } -// //Special image object -// function customImage(index, target) { -// this.loaded = false -// this.index = index -// this.image = new Image() -// this.image.src = "data/images/" + nameArray[index] + ".png" -// this.image.onload = function() { -// window[nameArray[index]].loaded = true -// addToCardMaster(index, target) -// } -// } -// //Adds an image to the card master. Replaces the previous one if it already existed -// function addToCardMaster(index, target) { -// if (target == "preview") { -// document.getElementById("imgPreview").src = window[nameArray[index]].image.src -// return -// } -// if (document.getElementById("checkboxSecondary").checked) { -// target += "Secondary" -// } -// if ((target == typeArray[index]) || (secondaryArray[index] && target.replace("Secondary", "")) == typeArray[index] || (typeArray[index] == "Full")) { -// if (cardMasterTypes.includes(target)) { -// cardMasterImages[cardMasterTypes.indexOf(target)] = window[nameArray[index]] -// } else { -// cardMasterImages[cardMasterTypes.length] = window[nameArray[index]] -// cardMasterTypes[cardMasterTypes.length] = target -// } -// cardMasterUpdated() -// } -// } -// //Runs through all the assigned card images and draws them in -// function cardMasterUpdated() { -// imageContext.clearRect(0, 0, cardWidth, cardHeight) -// for (var i = 0; i < version.typeOrder.length; i ++) { -// if (cardMasterTypes.includes(version.typeOrder[i])) { -// imageContext.mask(cardMasterTypes.indexOf(version.typeOrder[i])) -// } -// } -// } -// //Custom function that draws onto a canvas using masks -// CanvasRenderingContext2D.prototype.mask = function(cardMasterIndex) { -// maskContext.clearRect(0, 0, cardWidth, cardHeight) -// maskContext.globalCompositeOperation = "source-over" -// if (cardMasterTypes[cardMasterIndex].includes("Secondary")) { -// maskContext.drawImage(window[nameArray[nameArray.indexOf("noneMaskSecondary")]].image, 0, 0, cardWidth, cardHeight) -// maskContext.globalCompositeOperation = "source-in" -// } -// var maskToUse = window[versionArray[cardMasterImages[cardMasterIndex].index] + "Mask" + cardMasterTypes[cardMasterIndex].replace("Secondary", "")] -// if (maskToUse != undefined) { -// maskContext.drawImage(maskToUse.image, xArray[maskToUse.index] * cardWidth, yArray[maskToUse.index] * cardHeight, widthArray[maskToUse.index] * cardWidth, heightArray[maskToUse.index] * cardHeight) -// maskContext.globalCompositeOperation = "source-in" -// } -// var mainImageIndex = cardMasterImages[cardMasterIndex].index -// maskContext.drawImage(cardMasterImages[cardMasterIndex].image, xArray[mainImageIndex] * cardWidth, yArray[mainImageIndex] * cardHeight, widthArray[mainImageIndex] * cardWidth, heightArray[mainImageIndex] * cardHeight) -// this.globalAlpha = cardMasterOpacityValue[version.typeOrder.indexOf(cardMasterTypes[cardMasterIndex].replace("Secondary", ""))] / 100 -// this.drawImage(maskCanvas, 0, 0, cardWidth, cardHeight) -// this.globalAlpha = 1 -// if (cardMasterTypes[cardMasterIndex].includes("RareStamp")) { -// this.drawImage(window[nameArray[nameArray.indexOf("noneMaskStamp")]].image, version.rareStampX, version.rareStampY, version.rareStampWidth, version.rareStampHeight) -// } -// updateImageCanvas() -// } -// //All the canvas functions -// function updateImageCanvas() { -// // imageContext.globalCompositeOperation = "destination-out" -// // for (var i = 0; i < cardMasterOpacity.length; i ++) { -// // imageContext.globalAlpha = 1 - cardMasterOpacityValue[i] / 100 -// // opacityImage = window[version.currentVersion + "Mask" + cardMasterOpacity[i]].image -// // imageContext.drawImage(opacityImage, 0, 0, cardWidth, cardHeight) -// // } -// // imageContext.globalAlpha = 1 -// // imageContext.globalCompositeOperation = "source-over" -// updateBottomInfoCanvas() -// } -// function updateTextCanvas() { -// //post processing? -// updateCardCanvas() -// } -// var currentlyWritingText = false -// //Rewrites all the text! -// function updateText() { -// if (!currentlyWritingText) { -// currentlyWritingText = true -// setTimeout(updateTextInnerShell, 100) -// } -// } -// function updateTextInnerShell() { -// version.textList[whichTextIndex][1] = document.getElementById("inputText").value -// textContext.clearRect(0, 0, cardWidth, cardHeight) -// for (var i = 0; i < version.textList.length; i ++) { -// var waitUntilIAmDone = textContext.writeText(version.textList[i][1], version.textList[i][2], version.textList[i][3], version.textList[i][4], version.textList[i][5], version.textList[i][6], version.textList[i][7], version.textList[i][8], version.textList[i][9]) -// updateTextCanvas() -// } -// } //figures out the placing of the set symbol function updateSetSymbol() { setSymbolContext.clearRect(0, 0, cardWidth, cardHeight) @@ -603,131 +426,6 @@ function updateWatermark() { } cardImageUpdated() } -// //Does the bottom info function! This can be different depending on the version. - -// function updateCardCanvas() { -// if (!initiated) { -// return -// } -// //clear it -// cardContext.fillStyle = "black" -// cardContext.fillRect(0, 0, cardWidth, cardHeight) -// //draw the art, frame, text, mana symbols, set symbol, watermark... -// cardContext.drawImage(cardArt, version.artX + getValue("inputCardArtX"), version.artY + getValue("inputCardArtY"), cardArt.width * getValue("inputCardArtZoom") / 100, cardArt.height * getValue("inputCardArtZoom") / 100) -// cardContext.drawImage(imageCanvas, 0, 0, cardWidth, cardHeight) -// cardContext.drawImage(watermarkCanvas, 0, 0, cardWidth, cardHeight) -// cardContext.drawImage(textCanvas, 0, 0, cardWidth, cardHeight) -// cardContext.drawImage(bottomInfoCanvas, 0, 0, cardWidth, cardHeight) -// cardContext.drawManaCost(document.getElementById("inputManaCost").value, version.manaCostX, version.manaCostY, version.manaCostDiameter, version.manaCostDistance, version.manaCostDirection) -// cardContext.drawImage(setSymbolCanvas, 0, 0, cardWidth, cardHeight) -// //clear the corners -// cardContext.globalCompositeOperation = "destination-out" -// cardContext.drawImage(window[nameArray[nameArray.indexOf("noneMaskCorners")]].image, 0, 0, cardWidth, cardHeight) -// cardContext.globalCompositeOperation = "source-over" -// //paste it to the visible canvas -// mainContext.clearRect(0, 0, cardWidth, cardHeight) -// mainContext.drawImage(cardCanvas, 0, 0, cardWidth, cardHeight) -// currentlyWritingText = false -// } -// //Loads an image in from user input -// function userLoadImage() { -// loadImage(getSelectedTab("tabSelectColor"), "preview") -// } -// //Enters an image from user input -// function userEnterImage() { -// loadImage(getSelectedTab("tabSelectColor"), getSelectedTab("frameType")) -// } -// //Removes an image from user input -// function userRemoveImage() { -// var targetToRemove = getSelectedTab("frameType") -// if (document.getElementById("checkboxSecondary").checked) { -// targetToRemove += "Secondary" -// } -// if (cardMasterTypes.includes(targetToRemove) && targetToRemove != "Full") { -// cardMasterImages.splice(cardMasterTypes.indexOf(targetToRemove), 1) -// cardMasterTypes.splice(cardMasterTypes.indexOf(targetToRemove), 1) -// cardMasterUpdated() -// } -// } -// //Loads a script -// function loadScript(scriptPath){ -// var script = document.createElement("script") -// script.setAttribute("type","text/javascript") -// script.setAttribute("src", scriptPath) -// if (typeof script != "undefined") { -// document.getElementsByTagName("head")[0].appendChild(script) -// } -// } -// //Adjusts values to the card size -// function cwidth(inputWidth) { -// return inputWidth / 750 * cardWidth -// } -// function cheight(inputHeight) { -// return inputHeight / 1050 * cardHeight -// } -// //shortcut for parseInt(document.getElementById("").value) - -// //Changes the version -// function changeVersionTo(versionToChangeTo) { -// loadScript("data/versions/" + versionToChangeTo + "Version.js") -// } -// function finishChangingVersion() { -// hideShowFrameTypes() -// for (var i = 0; i < version.textList.length; i ++) { -// document.getElementById("inputWhichTextTabs").innerHTML += "
" + version.textList[i][0] + "
" -// if (i == 0) { -// document.getElementsByClassName("tabButton text")[0].classList.add("activeTab") -// } -// } -// updateText() -// updateBottomInfoCanvas() -// updateSetSymbolCanvas() -// } -// function hideShowFrameTypes() { -// document.getElementById("frameType").innerHTML = "" -// document.getElementById("inputImageTypeOpacity").innerHTML = "" -// for (var i = 0; i < version.typeOrder.length; i ++) { -// if (!version.typeOrder[i].includes("Secondary") && (!version.typesAdvanced.includes(version.typeOrder[i]) || document.getElementById("checkboxAdvanced").checked)) { -// tabSelectAddOption("frameType", version.typeOrder[i], version.typeOrder[i]) -// document.getElementById("inputImageTypeOpacity").innerHTML += "" -// // cardMasterOpacity[cardMasterOpacity.length] = version.typeOrder[i] -// cardMasterOpacityValue[cardMasterOpacityValue.length] = 100 -// } -// } -// document.getElementsByClassName("frameType")[0].className += " activeTab" -// hideShowColors(true) -// loadOpacityValue() -// } -// //Hides and shows the options in inputImageColor to match the selected type -// function hideShowColors(enter = false) { -// document.getElementById("tabSelectColor").innerHTML = "" -// var activeTab = false -// for (var i = 0; i < versionArray.length; i ++) { -// if (versionArray[i] == version.currentVersion && (typeArray[i] == getSelectedTab("frameType").replace("Secondary", "") || (typeArray[i] == "Full" && version.typeNotFull.includes(getSelectedTab("frameType")) == false)) && colorArray[i] != "Mask" && (document.getElementById("checkboxAdvanced").checked || advancedArray[i] == "FALSE")) { -// tabSelectAddOption("tabSelectColor", displayNameArray[i], i) -// if (displayNameArray[i] == suggestedColor) { -// document.getElementsByClassName("tabSelectColor")[document.getElementsByClassName("tabSelectColor").length - 1].className += " activeTab" -// activeTab = true -// } -// } -// } -// if (!activeTab && document.getElementsByClassName("tabSelectColor").length > 0) { -// document.getElementsByClassName("tabSelectColor")[0].className += " activeTab" -// } -// if (enter) { -// userEnterImage() -// } -// userLoadImage() -// } -// //Loads the opacity value -// function loadOpacityValue() { -// document.getElementById("inputOpacityValue").value = cardMasterOpacityValue[version.typeOrder.indexOf(document.getElementById("inputImageTypeOpacity").value)] || 100 -// } -// function opacityValueUpdated() { -// cardMasterOpacityValue[version.typeOrder.indexOf(document.getElementById("inputImageTypeOpacity").value)] = document.getElementById("inputOpacityValue").value -// cardMasterUpdated() -// } - //Custom text function! This acts on any codes and makes things look nice :) CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, textY = 0, textWidth = cardWidth, textHeight = cardHeight, textFont = "belerenbsc", inputTextSize = 38, textColor="black", other="") { @@ -896,17 +594,8 @@ CanvasRenderingContext2D.prototype.drawManaCost = function(text, symbolsX, symbo } } } -// //Changes the textarea content to whichever text is currently selected for editing -// var whichTextIndex = 0 -// function changeWhichText() { -// for (var i = 0; i < version.textList.length; i ++) { -// if (version.textList[i][0] == document.getElementById("inputWhichText").value) { -// whichTextIndex = i -// } -// } -// document.getElementById("inputText").value = version.textList[whichTextIndex][1] -// } -// //Removes all the white pixels in an image + +//Removes all the white pixels in an image var whiteThreshold = 250 function whiteToTransparent(targetImage, source = targetImage.src) { //Create image, size canvas, draw image @@ -1010,7 +699,8 @@ function inputCardArtName(cardArtNameInput) { cardArtUrlList[i] = savedArtList[i].split('","border_crop":')[0] } for (i = 0; i < savedArtList.length; i ++) { - cardArtArtistList[i] = savedArtList[i].slice(savedArtList[i].indexOf('"artist":"') + 10, savedArtList[i].indexOf('","artist_ids":')) + cardArtArtistList[i] = savedArtList[i].slice(savedArtList[i].indexOf('"artist":"') + 10, savedArtList[i].indexOf('","artist_id')); + // cardArtArtistList[i] = cardArtArtistList[i].slice(0, cardArtArtistList[i].indexOf('","artist_id')) } inputCardArtNameNumber(1) } else if (this.readyState == 4 && this.status == 404) { @@ -1022,8 +712,8 @@ function inputCardArtName(cardArtNameInput) { } function inputCardArtNameNumber(cardArtNameNumberInput) { cardArt.src = cardArtUrlList[cardArtNameNumberInput - 1] - // document.getElementById("inputInfoArtist").value = cardArtArtistList[cardArtNameNumberInput - 1] - // updateBottomInfoCanvas() + document.getElementById("inputInfoArtist").value = cardArtArtistList[cardArtNameNumberInput - 1] + updateBottomInfoCanvas() } //Downloads the image! function downloadCardImage(linkElement) { @@ -1036,36 +726,16 @@ function downloadCardImage(linkElement) { event.preventDefault() alert("You must properly credit an artist before downloading") } - var cardImageData = cardCanvas.toDataURL() + var cardImageData = cardFinalCanvas.toDataURL() if (cardImageData == undefined) { alert("Sorry, it seems that you cannot download your card. Please try using a different browser/device.") } linkElement.href = cardImageData } -// //Toggles the visibility of tooltips -// function toggleTooltips(revealed = true) { -// var tooltipList = document.getElementsByClassName("tooltiptext") -// for (var i = 0; i < tooltipList.length; i ++) { -// if (revealed) { -// tooltipList[i].classList.remove("hidden") -// } else { -// tooltipList[i].classList.add("hidden") -// } -// } -// setCookie("tooltipsToggled", revealed + "") -// } - -// //DELETE: (for testing purposes only) -// function testFunction() { -// loadScript("data/scripts/setCodeList.js") -// } - - - // function setCookie(cookieName, cookieValue, cookieTime = (5 * 365 * 24 * 60 * 60 * 1000)) { //years*days*hours*minutes*seconds*milliseconds // var tempDate = new Date(); // tempDate.setTime(tempDate.getTime() + cookieTime); @@ -1110,74 +780,31 @@ function downloadCardImage(linkElement) { -// function tabSelect(event, selectSection) { -// var tabSelectButtons = document.getElementsByClassName(selectSection) -// for (var i = 0; i < tabSelectButtons.length; i++) { -// tabSelectButtons[i].className = tabSelectButtons[i].className.replace(" activeTab", "") -// } -// event.target.className += " activeTab" -// if (selectSection == "frameType") { -// hideShowColors() -// } else if (selectSection == "tabSelectColor") { -// userLoadImage() -// suggestedColor = displayNameArray[getSelectedTab("tabSelectColor")] -// } -// } -// function getSelectedTab(selectSection) { -// var tabSelectButtons = document.getElementsByClassName(selectSection) -// for (var i = 0; i < tabSelectButtons.length; i++) { -// if (tabSelectButtons[i].className.includes("activeTab")) { -// return tabSelectButtons[i].id -// } -// } -// } -// function tabSelectAddOption(tabSection, displayName, tabValue) { -// document.getElementById(tabSection).innerHTML += "
" + displayName + "
" -// } - - -// function textCodeTutorial() { -// var textCodeTutorialString = `line-skips to the next line -// _linenospace-skips to the next line, but doesn't add spacing -// _bar-skips to the next line, and adds the flavor text bar -// _flavor-skips to the next line, adds the flavor text bar, and italicizes the following text -// _i-italicizes the following text -// _/i-removes italics from the following text -// _fontsize#-changes the font size to # pixels -// _fontcolor#-changes the color to #. Can use color names, or hex codes -// _left-justifies text to the left -// _center-justifies text to the center -// _right-justifies text to the right -// _up#-moves the following text # pixels up -// _down#-moves the following text # pixels down -// _left#-moves the following text # pixels left -// _right#-moves the following text # pixels right -// _SYMBOL-creates a mana symbol, where SYMBOL can be: w, u, b, r, g, 1, 2, 3, etc...` -// var textCodeTutorialArray = textCodeTutorialString.split("_") -// for (var i = 0; i < textCodeTutorialArray.length; i ++) { -// document.getElementById("textCodeTutorial").innerHTML += "
{" + textCodeTutorialArray[i].split("-")[0] + "}
" + textCodeTutorialArray[i].split("-")[1] + "
" -// } -// } - -// function advancedBordersClicked() { -// hideShowFrameTypes() -// setCookie("advancedBorders", document.getElementById("checkboxAdvanced").checked + "") -// } - - +function textCodeTutorial() { + var textCodeTutorialString = `line-skips to the next line + _linenospace-skips to the next line, but doesn't add spacing + _bar-skips to the next line, and adds the flavor text bar + _flavor-skips to the next line, adds the flavor text bar, and italicizes the following text + _i-italicizes the following text + _/i-removes italics from the following text + _fontsize#-changes the font size to # pixels + _fontcolor#-changes the color to #. Can use color names, or hex codes + _left-justifies text to the left + _center-justifies text to the center + _right-justifies text to the right + _up#-moves the following text # pixels up + _down#-moves the following text # pixels down + _left#-moves the following text # pixels left + _right#-moves the following text # pixels right + _SYMBOL-creates a mana symbol, where SYMBOL can be: w, u, b, r, g, 1, 2, 3, etc...` + var textCodeTutorialArray = textCodeTutorialString.split("_") + for (var i = 0; i < textCodeTutorialArray.length; i ++) { + document.getElementById("textCodeTutorial").innerHTML += "
{" + textCodeTutorialArray[i].split("-")[0] + "}
" + textCodeTutorialArray[i].split("-")[1] + "
" + } +} // //textCodeTutorial() - - -// /*To do list: -// watermarks - - - - - -// possibly border color? -// */ +textCodeTutorial() \ No newline at end of file diff --git a/data/site/newStyles.css b/data/site/newStyles.css index 777dcad3..5afc4738 100644 --- a/data/site/newStyles.css +++ b/data/site/newStyles.css @@ -328,8 +328,8 @@ footer a:hover { .textarea { width: 100%; - min-height: 12em; - max-height: 36em; + min-height: 8em; + max-height: 24em; resize: vertical; } .textTabButton { @@ -349,4 +349,33 @@ footer a:hover { padding: 0px 0.2em; outline: none; width: 100%; +} +.inputOpacity { + font: 1em mplantin; + background-color: var(--light-color); + border: 1px solid #aaa; + border-radius: 0.2em; + padding: 0px 0.2em; + outline: none; + width: 2.9em; +} + + + +#textCodeTutorial { + display: grid; + grid-template-columns: 6.5em auto; + /*padding: 0.5em;*/ +} +#textCodeTutorial > div { + padding: 0.25em 0; + background-color: var(--clear-mid); +} +#textCodeTutorial > div:nth-child(4n), #textCodeTutorial > div:nth-child(4n - 1) { + background-color: var(--clear-light); +} + + +input[type="checkbox"], .frameOption, .maskOption, .button { + cursor: pointer; } \ No newline at end of file diff --git a/data/versions/m15.js b/data/versions/m15.js index f5514ef4..cf99e7fe 100644 --- a/data/versions/m15.js +++ b/data/versions/m15.js @@ -14,10 +14,10 @@ version.manaCostY = scale(62) version.manaCostDiameter = scale(36) version.manaCostDistance = scale(-38) version.manaCostDirection = "horizontal" -version.rareStampX = scale(340) -version.rareStampY = scale(965) -version.rareStampWidth = scale(70) -version.rareStampHeight = scale(38) +// version.rareStampX = scale(340) +// version.rareStampY = scale(965) +// version.rareStampWidth = scale(70) +// version.rareStampHeight = scale(38) version.watermarkWidth = scale(520) version.watermarkHeight = scale(250) version.watermarkY = scale(815) diff --git a/test.html b/test.html index 20dd4380..87a78ff2 100644 --- a/test.html +++ b/test.html @@ -35,6 +35,7 @@ +
No frame selected