diff --git a/data/images/imageCSV.csv b/data/images/imageCSV.csv index 08dd6ff4..efd9d5b5 100644 --- a/data/images/imageCSV.csv +++ b/data/images/imageCSV.csv @@ -1,13 +1,13 @@ displayName,imagePath,maskOptions,framePickerOptions -White,m15WFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Blue,m15UFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Black,m15BFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Red,m15RFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Green,m15GFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Multicolored,m15MFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Artifact,m15AFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Land,m15LFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular -Vehicle,m15VFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Regular +White,m15WFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Blue,m15UFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Black,m15BFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Red,m15RFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Green,m15GFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Multicolored,m15MFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Artifact,m15AFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Land,m15LFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular +Vehicle,m15VFull.png,Full-0-0-744-1039;Title-0-0-744-1039;Type-0-0-744-1039;Rules Text-0-0-744-1039;Pinline-0-0-744-1039;Frame-0-0-744-1039;Box Topper-0-0-744-1039,Regular White PT,m15WPT.png,Full-567-921-140-81,Regular Blue PT,m15UPT.png,Full-567-921-140-81,Regular Black PT,m15BPT.png,Full-567-921-140-81,Regular @@ -16,14 +16,14 @@ Green PT,m15GPT.png,Full-567-921-140-81,Regular Multicolored PT,m15MPT.png,Full-567-921-140-81,Regular Artifact PT,m15APT.png,Full-567-921-140-81,Regular Vehicle PT,m15VPT.png,Full-567-921-140-81,Regular -White Legendary,m15WLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Blue Legendary,m15ULegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Black Legendary,m15BLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Red Legendary,m15RLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Green Legendary,m15GLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Multicolored Legendary,m15MLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Artifact Legendary,m15ALegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular -Colorless Legendary,m15CLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;LegendWithBorder-0-0-744-177,Regular +White Legendary,m15WLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Blue Legendary,m15ULegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Black Legendary,m15BLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Red Legendary,m15RLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Green Legendary,m15GLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Multicolored Legendary,m15MLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Artifact Legendary,m15ALegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular +Colorless Legendary,m15CLegendary.png,Full-0-0-744-177;Legend-0-0-744-177;Legend With Border-0-0-744-177,Regular White Rare Stamp,m15WRareStamp.png,Full-327-943-91-22,Regular Blue Rare Stamp,m15URareStamp.png,Full-327-943-91-22,Regular Black Rare Stamp,m15BRareStamp.png,Full-327-943-91-22,Regular @@ -32,5 +32,5 @@ Green Rare Stamp,m15GRareStamp.png,Full-327-943-91-22,Regular Multicolored Rare Stamp,m15MRareStamp.png,Full-327-943-91-22,Regular Artifact Rare Stamp,m15ARareStamp.png,Full-327-943-91-22,Regular Colorless Rare Stamp,m15CRareStamp.png,Full-327-943-91-22,Regular -Holo Stamp,stamp.png,Full-340-953-70-38,Regular -Black Border,masks/Border.png,Full-0-0-744-1039;BoxTopper-0-0-744-1039,Regular \ No newline at end of file +Holo Stamp,stamp.png,Full-340-953-70-38,Regular;Eternal +Black Border,masks/Border.png,Full-0-0-744-1039;Box Topper-0-0-744-1039,Regular \ No newline at end of file diff --git a/data/images/masks/BorderPlaneswalker.png b/data/images/masks/BorderPlaneswalker.png new file mode 100644 index 00000000..79a49598 Binary files /dev/null and b/data/images/masks/BorderPlaneswalker.png differ diff --git a/data/images/masks/FramePlaneswalker.png b/data/images/masks/FramePlaneswalker.png new file mode 100644 index 00000000..59e786dd Binary files /dev/null and b/data/images/masks/FramePlaneswalker.png differ diff --git a/data/images/masks/deleteLater/RulesText.png b/data/images/masks/LoyaltyPlaneswalker.png similarity index 65% rename from data/images/masks/deleteLater/RulesText.png rename to data/images/masks/LoyaltyPlaneswalker.png index 7dd26950..d1113d2c 100644 Binary files a/data/images/masks/deleteLater/RulesText.png and b/data/images/masks/LoyaltyPlaneswalker.png differ diff --git a/data/images/masks/PinlinePlaneswalker.png b/data/images/masks/PinlinePlaneswalker.png new file mode 100644 index 00000000..b27cbba5 Binary files /dev/null and b/data/images/masks/PinlinePlaneswalker.png differ diff --git a/data/images/masks/RulesTextPlaneswalker.png b/data/images/masks/RulesTextPlaneswalker.png new file mode 100644 index 00000000..84893340 Binary files /dev/null and b/data/images/masks/RulesTextPlaneswalker.png differ diff --git a/data/images/masks/deleteLater/Title.png b/data/images/masks/TitlePlaneswalker.png similarity index 76% rename from data/images/masks/deleteLater/Title.png rename to data/images/masks/TitlePlaneswalker.png index 335d0ca5..88713515 100644 Binary files a/data/images/masks/deleteLater/Title.png and b/data/images/masks/TitlePlaneswalker.png differ diff --git a/data/images/masks/deleteLater/Type.png b/data/images/masks/TypePlaneswalker.png similarity index 76% rename from data/images/masks/deleteLater/Type.png rename to data/images/masks/TypePlaneswalker.png index 78ee4eb9..459417da 100644 Binary files a/data/images/masks/deleteLater/Type.png and b/data/images/masks/TypePlaneswalker.png differ diff --git a/data/images/masks/deleteLater/Border.png b/data/images/masks/deleteLater/Border.png deleted file mode 100644 index bf57bbfd..00000000 Binary files a/data/images/masks/deleteLater/Border.png and /dev/null differ diff --git a/data/images/masks/deleteLater/Corners.png b/data/images/masks/deleteLater/Corners.png deleted file mode 100644 index 49c14785..00000000 Binary files a/data/images/masks/deleteLater/Corners.png and /dev/null differ diff --git a/data/images/masks/deleteLater/Frame.png b/data/images/masks/deleteLater/Frame.png deleted file mode 100644 index afd61b47..00000000 Binary files a/data/images/masks/deleteLater/Frame.png and /dev/null differ diff --git a/data/images/masks/deleteLater/Full.png b/data/images/masks/deleteLater/Full.png deleted file mode 100644 index abf14c74..00000000 Binary files a/data/images/masks/deleteLater/Full.png and /dev/null differ diff --git a/data/images/masks/deleteLater/Pinline.png b/data/images/masks/deleteLater/Pinline.png deleted file mode 100644 index 8a23389d..00000000 Binary files a/data/images/masks/deleteLater/Pinline.png and /dev/null differ diff --git a/data/images/masks/deleteLater/RightHalf.png b/data/images/masks/deleteLater/RightHalf.png deleted file mode 100644 index d254490d..00000000 Binary files a/data/images/masks/deleteLater/RightHalf.png and /dev/null differ diff --git a/data/images/nyxCSV.csv b/data/images/nyxCSV.csv new file mode 100644 index 00000000..be06e8c9 --- /dev/null +++ b/data/images/nyxCSV.csv @@ -0,0 +1,6 @@ +displayName,imagePath,maskOptions,framePickerOptions +White Nyx,m15WNyx.png,Full-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Nyx +Blue Nyx,m15UNyx.png,Full-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Nyx +Black Nyx,m15BNyx.png,Full-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Nyx +Red Nyx,m15RNyx.png,Full-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Nyx +Green Nyx,m15GNyx.png,Full-0-0-744-1039;Frame-0-0-744-1039;BoxTopper-0-0-744-1039,Nyx \ No newline at end of file diff --git a/data/images/planeswalker/abilityLineEven.png b/data/images/planeswalker/abilityLineEven.png new file mode 100644 index 00000000..1f5cd84c Binary files /dev/null and b/data/images/planeswalker/abilityLineEven.png differ diff --git a/data/images/planeswalker/abilityLineOdd.png b/data/images/planeswalker/abilityLineOdd.png new file mode 100644 index 00000000..24bd60b9 Binary files /dev/null and b/data/images/planeswalker/abilityLineOdd.png differ diff --git a/data/images/planeswalker/m15APlaneswalker.png b/data/images/planeswalker/m15APlaneswalker.png new file mode 100644 index 00000000..65860598 Binary files /dev/null and b/data/images/planeswalker/m15APlaneswalker.png differ diff --git a/data/images/planeswalker/m15BPlaneswalker.png b/data/images/planeswalker/m15BPlaneswalker.png new file mode 100644 index 00000000..d80aba89 Binary files /dev/null and b/data/images/planeswalker/m15BPlaneswalker.png differ diff --git a/data/images/planeswalker/m15CPlaneswalker.png b/data/images/planeswalker/m15CPlaneswalker.png new file mode 100644 index 00000000..08df8676 Binary files /dev/null and b/data/images/planeswalker/m15CPlaneswalker.png differ diff --git a/data/images/planeswalker/m15GPlaneswalker.png b/data/images/planeswalker/m15GPlaneswalker.png new file mode 100644 index 00000000..3c1ee313 Binary files /dev/null and b/data/images/planeswalker/m15GPlaneswalker.png differ diff --git a/data/images/planeswalker/m15MPlaneswalker.png b/data/images/planeswalker/m15MPlaneswalker.png new file mode 100644 index 00000000..6affd7a5 Binary files /dev/null and b/data/images/planeswalker/m15MPlaneswalker.png differ diff --git a/data/images/planeswalker/m15PlaneswalkerPT.png b/data/images/planeswalker/m15PlaneswalkerPT.png new file mode 100644 index 00000000..3ca7595c Binary files /dev/null and b/data/images/planeswalker/m15PlaneswalkerPT.png differ diff --git a/data/images/planeswalker/m15RPlaneswalker.png b/data/images/planeswalker/m15RPlaneswalker.png new file mode 100644 index 00000000..71c2364f Binary files /dev/null and b/data/images/planeswalker/m15RPlaneswalker.png differ diff --git a/data/images/planeswalker/m15UPlaneswalker.png b/data/images/planeswalker/m15UPlaneswalker.png new file mode 100644 index 00000000..cd914947 Binary files /dev/null and b/data/images/planeswalker/m15UPlaneswalker.png differ diff --git a/data/images/planeswalker/m15WPlaneswalker.png b/data/images/planeswalker/m15WPlaneswalker.png new file mode 100644 index 00000000..be44c001 Binary files /dev/null and b/data/images/planeswalker/m15WPlaneswalker.png differ diff --git a/data/images/planeswalker/planeswalkerCSV.csv b/data/images/planeswalker/planeswalkerCSV.csv new file mode 100644 index 00000000..b9df07fb --- /dev/null +++ b/data/images/planeswalker/planeswalkerCSV.csv @@ -0,0 +1,9 @@ +displayName,imagePath,maskOptions,framePickerOptions +White,planeswalker/m15WPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Blue,planeswalker/m15UPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Black,planeswalker/m15BPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Red,planeswalker/m15RPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Green,planeswalker/m15GPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Multicolored,planeswalker/m15MPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Artifact,planeswalker/m15APlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker +Colorless,planeswalker/m15CPlaneswalker.png,Full-0-0-744-1039;Title Planeswalker-0-0-744-1039;Type Planeswalker-0-0-744-1039;Pinline Planeswalker-0-0-744-1039;Frame Planeswalker-0-0-744-1039;Loyalty Planeswalker-0-0-744-1039,Planeswalker \ No newline at end of file diff --git a/data/images/planeswalker/planeswalkerMinus.png b/data/images/planeswalker/planeswalkerMinus.png new file mode 100644 index 00000000..e09d3120 Binary files /dev/null and b/data/images/planeswalker/planeswalkerMinus.png differ diff --git a/data/images/planeswalker/planeswalkerNeutral.png b/data/images/planeswalker/planeswalkerNeutral.png new file mode 100644 index 00000000..57bb42b7 Binary files /dev/null and b/data/images/planeswalker/planeswalkerNeutral.png differ diff --git a/data/images/planeswalker/planeswalkerPlus.png b/data/images/planeswalker/planeswalkerPlus.png new file mode 100644 index 00000000..4ba17eee Binary files /dev/null and b/data/images/planeswalker/planeswalkerPlus.png differ diff --git a/data/scripts/main.js b/data/scripts/main.js index 901b629f..1de6d84c 100644 --- a/data/scripts/main.js +++ b/data/scripts/main.js @@ -17,25 +17,21 @@ function initiate() { window.cardWidth = 744; window.cardHeight = 1039; window.frameList = new Array(); - window.maskNameList = ["Right Half", "Corners", "Full", "Title", "Type", "Rules Text", "Pinline", "Frame", "Border", "Legend", "LegendWithBorder", "BoxTopper"]; + window.maskNameList = []; 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(); - maskList[i].src = imageSource; - } window.cardMaster = document.getElementById("cardMaster"); window.displayCanvas = document.getElementById("displayCanvas"); document.getElementById("displayCanvas").width = cardWidth; document.getElementById("displayCanvas").height = cardHeight; window.displayContext = displayCanvas.getContext("2d"); + window.textCanvasesPadding = 100 newCanvas("frameMask"); newCanvas("frameFinal"); newCanvas("text"); - newCanvas("line"); + newCanvas("line", textCanvasesPadding); newCanvas("paragraph"); newCanvas("bottomInfo"); newCanvas("setSymbol"); @@ -86,7 +82,7 @@ function loadImageCSV(targetCSV) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4) { - var splitImageCSV = xhttp.responseText.split("\n"); + var splitImageCSV = (xhttp.responseText + " ").split("\n"); for (var i = 1; i < splitImageCSV.length; i++) { var splitIndividualImageCSV = splitImageCSV[i].split(","); frameList[frameList.length] = new frameImage(splitIndividualImageCSV[0], "data/images/" + splitIndividualImageCSV[1], splitIndividualImageCSV[2], splitIndividualImageCSV[3].toString()); @@ -95,7 +91,7 @@ function loadImageCSV(targetCSV) { } } for (var i = 0; i < frameList.length; i++) { - document.getElementById("framePicker").appendChild(frameList[i].framePickerElement()); + frameList[i].framePickerElement(); } console.log("image csv loaded, happy card conjuring!"); // setTimeout(testFunction, 0); //deleteme @@ -127,10 +123,11 @@ class frameImage { this.widthList[i] = scale(parseInt(splitIndividualMasks[3])); this.heightList[i] = scale(parseInt(splitIndividualMasks[4])); } - this.framePickerClasses =["frameOption"] - if (classes[0] == "f") { + this.framePickerClasses = ["frameOption"] + if (classes.length > 0) { this.framePickerClasses = ("frameOption;" + classes.slice(0,classes.length - 1)).replace(/;/g, ";frameClass").split(";"); } + this.addedToFramePicker = false; } cardMasterElement(targetMask) { var tempElement = document.createElement("div"); @@ -140,14 +137,21 @@ class frameImage { return tempElement } framePickerElement(targetElement) { - var tempElement = document.createElement("div"); - tempElement.id = "frameIndex" + frameList.indexOf(this); - for (var i = 0; i < this.framePickerClasses.length; i++) { - tempElement.classList.add(this.framePickerClasses[i]); + if (!this.addedToFramePicker) { + this.addedToFramePicker = true; + var tempElement = document.createElement("div"); + tempElement.id = "frameIndex" + frameList.indexOf(this); + for (var i = 0; i < this.framePickerClasses.length; i++) { + tempElement.classList.add(this.framePickerClasses[i]); +// console.log(this.framePickerClasses) + } + tempElement.onclick = frameOptionClicked; + tempElement.innerHTML = ""; + document.getElementById("framePicker").appendChild(tempElement); +// return tempElement; + } else { + return } - tempElement.onclick = frameOptionClicked; - tempElement.innerHTML = "" - return tempElement; } } @@ -170,7 +174,7 @@ function frameOptionClicked(event) { selectedFrame = parseInt(clickedElementIndex); document.getElementById("maskPicker").innerHTML = ""; for (var i = 0; i < frameList[selectedFrame].maskOptionList.length; i++) { - document.getElementById("maskPicker").innerHTML += "
" + frameList[selectedFrame].maskOptionList[i] + "
"; + document.getElementById("maskPicker").innerHTML += "
" + frameList[selectedFrame].maskOptionList[i] + "
"; } document.getElementsByClassName("maskOption")[0].classList.add("maskOptionSelected"); selectedMask = document.getElementsByClassName("maskOption")[0].id.replace("maskName", ""); @@ -204,17 +208,17 @@ function deleteCardMasterElement(event) { cardMasterUpdated(); } function addNewFrameOption(imageSource) { - frameList[frameList.length] = new frameImage("Custom", imageSource, "Full-0-0-" + cardWidth + "-" + cardHeight + ";Title-0-0-" + cardWidth + "-" + cardHeight + ";Type-0-0-" + cardWidth + "-" + cardHeight + ";Rules Text-0-0-" + cardWidth + "-" + cardHeight + ";Pinline-0-0-" + cardWidth + "-" + cardHeight + ";Frame-0-0-" + cardWidth + "-" + cardHeight + ";Border-0-0-" + cardWidth + "-" + cardHeight); + frameList[frameList.length] = new frameImage("Custom", imageSource, "Full-0-0-" + cardWidth + "-" + cardHeight + ";Title-0-0-" + cardWidth + "-" + cardHeight + ";Type-0-0-" + cardWidth + "-" + cardHeight + ";Rules Text-0-0-" + cardWidth + "-" + cardHeight + ";Pinline-0-0-" + cardWidth + "-" + cardHeight + ";Frame-0-0-" + cardWidth + "-" + cardHeight + ";Border-0-0-" + cardWidth + "-" + cardHeight + ";Box Topper-0-0-" + cardWidth + "-" + cardHeight, "Eternal;Custom "); frameList[frameList.length - 1].image.customVar = frameList.length - 1 frameList[frameList.length - 1].image.onload = function() { - document.getElementById("framePicker").appendChild(frameList[this.customVar].framePickerElement()); + frameList[this.customVar].framePickerElement(); } } /* 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]; @@ -268,6 +272,9 @@ function cardImageUpdated() { //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) cardFinalContext.drawImage(frameFinalCanvas, 0, 0, cardWidth, cardHeight); + if (version.currentVersion == "planeswalker") { + cardFinalContext.drawImage(planeswalkerCanvas, 0, 0, cardWidth, cardHeight); + } cardFinalContext.drawImage(textCanvas, 0, 0, cardWidth, cardHeight); cardFinalContext.drawImage(bottomInfoCanvas, 0, 0, cardWidth, cardHeight); cardFinalContext.drawManaCost(document.getElementById("inputManaCost").value, version.manaCostX, version.manaCostY, version.manaCostDiameter, version.manaCostDistance, version.manaCostDirection) @@ -284,9 +291,17 @@ function cardImageUpdated() { /* Loading/manipulating card versions */ function changeVersionTo(versionToChangeTo) { - loadScript("data/versions/" + versionToChangeTo + ".js") + loadScript("data/versions/" + versionToChangeTo + ".js"); } function finishChangingVersion(targetCSV = false) { + for (var i = 0; i < version.masksToAdd.length; i++) { + if (!maskNameList.includes(version.masksToAdd[i])) { + maskNameList[maskNameList.length] = version.masksToAdd[i]; + maskList[maskList.length] = new Image(); + maskList[maskList.length - 1].src = "data/images/masks/" + version.masksToAdd[i].replace(/ /g, "") + ".png"; + } + } + document.getElementById("inputWhichTextTabs").innerHTML = "" for (var i = 0; i < version.textList.length; i ++) { document.getElementById("inputWhichTextTabs").innerHTML += "
" + version.textList[i][0] + "
" if (i == 0) { @@ -333,7 +348,13 @@ function updateText() { 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]) + if (version.textList[i][10]) { + if (version.textList[i][10] != "ignore") { + window[version.textList[i][10]](); + } + } else { + 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]); + } } cardImageUpdated() } @@ -355,10 +376,10 @@ function getValue(elementId) { /* Functions that make stuff */ -function newCanvas(newCanvasName) { +function newCanvas(newCanvasName, padding = 0) { window[newCanvasName + "Canvas"] = document.createElement("canvas"); - window[newCanvasName + "Canvas"].width = cardWidth; - window[newCanvasName + "Canvas"].height = cardHeight; + window[newCanvasName + "Canvas"].width = cardWidth + padding * 2; + window[newCanvasName + "Canvas"].height = cardHeight + padding * 2; window[newCanvasName + "Context"] = window[newCanvasName + "Canvas"].getContext("2d"); } @@ -459,8 +480,8 @@ function updateWatermark() { } //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="") { - paragraphContext.clearRect(0, 0, cardWidth, cardHeight) +CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, textY = 0, textWidth = cardWidth, textHeight = cardHeight, textFont = "belerenbsc", inputTextSize = 38, textColor="black", other="", completionFunction) { + paragraphContext.clearRect(0, 0, cardWidth, cardHeight) var textSize = inputTextSize lineContext.font = textSize + "px " + textFont lineContext.fillStyle = textColor @@ -471,8 +492,8 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te } lineContext.strokeStyle = outline lineContext.lineWidth = outlineWidth - var currentLineX = 0 - var currentLineY = textY + textSize * 0.45 + var currentLineX = textCanvasesPadding + var currentLineY = textY + (textSize * 0.45) //+ textCanvasesPadding var uniqueSplitter = "9dn57gwbt4sh" var splitString = text.replace(/ /g, uniqueSplitter + " " + uniqueSplitter).replace(/{/g, uniqueSplitter + "{").replace(/}/g, "}" + uniqueSplitter).split(uniqueSplitter) splitString[splitString.length] = " " @@ -494,7 +515,7 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te finishLine = true var barWidth = manaSymbolImageList[63].width var barHeight = manaSymbolImageList[63].height - paragraphContext.drawImage(manaSymbolImageList[63], textX + textWidth / 2 - barWidth / 2, currentLineY + textSize * 0.6, barWidth, barHeight) + lineContext.drawImage(manaSymbolImageList[63], textX + textWidth / 2 - barWidth / 2, currentLineY + textSize * 0.6, barWidth, barHeight) currentLineY += textSize * 0.8 if (possibleCodeLower == "flavor") { lineContext.font = "italic " + (textSize - 3) + "px " + textFont @@ -526,10 +547,14 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te currentLineX += artistBrushWidth * 1.1 } else if (possibleCodeLower.includes("fontcolor")) { lineContext.fillStyle = possibleCodeLower.slice(9, possibleCodeLower.length) - }else if (possibleCodeLower.includes("font")) { + } else if (possibleCodeLower.includes("font")) { textFont = possibleCodeLower.slice(5, possibleCodeLower.length) lineContext.font = textSize + "px " + textFont - } else if (manaSymbolCodeList.includes(possibleCodeLower)) { + } else if (possibleCodeLower.includes("outline:")) { + outline = true; + lineContext.strokeStyle = possibleCodeLower.replace("outline:", "").split(",")[0]; + lineContext.lineWidth = parseInt(possibleCodeLower.replace("outline:", "").split(",")[1]); + } else if (manaSymbolCodeList.includes(possibleCodeLower)) { //THIS HAS TO BE THE LAST ONE var manaSymbolDiameter = textSize * 0.77 lineContext.drawImage(manaSymbolImageList[manaSymbolCodeList.indexOf(possibleCodeLower)], currentLineX, currentLineY - manaSymbolDiameter * 0.95, manaSymbolDiameter, manaSymbolDiameter) @@ -545,10 +570,10 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te //forces the last artificially added space to be too wide, making sure the last line is drawn in. currentWordWidth = textWidth + 1 } - if (currentLineX + currentWordWidth > textWidth || finishLine) { + if (currentLineX - textCanvasesPadding + currentWordWidth > textWidth || finishLine) { //Finish the line if (oneLine && i != splitString.length - 1 && inputTextSize > 1) { - lineContext.clearRect(0, 0, cardWidth, cardHeight) + lineContext.clearRect(0, 0, cardWidth + 2 * textCanvasesPadding, cardHeight + 2 * textCanvasesPadding) this.writeText(text, textX, textY, textWidth, textHeight, textFont, inputTextSize - 1, textColor, other) return } @@ -558,17 +583,17 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te currentLineX -= textContext.measureText(" ").width } if (textAlign == "center") { - alignAdjust = textWidth / 2 - currentLineX / 2 + textX + alignAdjust = textWidth / 2 - (currentLineX - textCanvasesPadding) / 2 + textX } else if (textAlign == "right") { - alignAdjust = textWidth + textX - currentLineX + alignAdjust = textWidth + textX - currentLineX + textCanvasesPadding } } else { alignAdjust += textX } - paragraphContext.drawImage(lineCanvas, 0 + alignAdjust, 0, cardWidth, cardHeight) - lineContext.clearRect(0, 0, cardWidth, cardHeight) + paragraphContext.drawImage(lineCanvas, 0 + alignAdjust - textCanvasesPadding, 0, cardWidth + 2 * textCanvasesPadding, cardHeight + 2 * textCanvasesPadding) + lineContext.clearRect(0, 0, cardWidth + 2 * textCanvasesPadding, cardHeight + 2 * textCanvasesPadding) currentLineY += textSize * lineSpace - currentLineX = 0 + currentLineX = textCanvasesPadding if (wordToWrite == " ") { currentWordWidth = 0 } @@ -591,7 +616,13 @@ CanvasRenderingContext2D.prototype.writeText = function(text = "", textX = 0, te verticalAdjust = (textHeight + textY - currentLineY + textSize) / 2 } this.drawImage(paragraphCanvas, 0, 0 + verticalAdjust, cardWidth, cardHeight) - return "done" + if (text != "") { +// console.log(text) + } + if (completionFunction) { + window[completionFunction](); + } + return "done" } //Loads up all the mana symbol images function loadManaSymbolImages() { @@ -602,7 +633,7 @@ function loadManaSymbolImages() { } //Draws a mana cost CanvasRenderingContext2D.prototype.drawManaCost = function(text, symbolsX, symbolsY, diameter = 50, distance = -50, direction = "horizontal") { - var splitManaCost = text.replace(/{/g, " ").replace(/}/g, " ").split(" ") + var splitManaCost = text.toLowerCase().replace(/{/g, " ").replace(/}/g, " ").split(" ") var currentSymbolIndex = 0 var currentX = symbolsX var currentY = symbolsY @@ -839,7 +870,8 @@ function textCodeTutorial() { _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...` + _SYMBOL-creates a mana symbol, where SYMBOL can be: w, u, b, r, g, 1, 2, 3, etc... + _outline:*,#-outlines the following text with # thickness and * color` var textCodeTutorialArray = textCodeTutorialString.split("_") for (var i = 0; i < textCodeTutorialArray.length; i ++) { document.getElementById("textCodeTutorial").innerHTML += "
{" + textCodeTutorialArray[i].split("-")[0] + "}
" + textCodeTutorialArray[i].split("-")[1] + "
" @@ -848,3 +880,20 @@ function textCodeTutorial() { // //textCodeTutorial() textCodeTutorial() + + + +function loadPlaneswalkerFrames() { + changeVersionTo("planeswalker"); +} + +function filterFramePicker(classToShow) { + var framePickerList = document.getElementsByClassName("frameOption") + for (var i = 0; i < framePickerList.length; i++) { + if (!framePickerList[i].classList.contains("hidden") && !framePickerList[i].classList.contains(classToShow) && !framePickerList[i].classList.contains("frameClassEternal")) { + framePickerList[i].classList.add("hidden") + } else if (framePickerList[i].classList.contains(classToShow) && framePickerList[i].classList.contains("hidden")) { + framePickerList[i].classList.remove("hidden") + } + } +} diff --git a/data/site/icons/discord.png b/data/site/icons/discord.png new file mode 100644 index 00000000..f25fab6f Binary files /dev/null and b/data/site/icons/discord.png differ diff --git a/data/site/icons/reddit.png b/data/site/icons/reddit.png new file mode 100644 index 00000000..f7d1d79a Binary files /dev/null and b/data/site/icons/reddit.png differ diff --git a/data/site/styles.css b/data/site/styles.css index 2ae160af..658e1b5d 100644 --- a/data/site/styles.css +++ b/data/site/styles.css @@ -40,12 +40,14 @@ --shifting-color-1-light: #c8ff64; --light-color: #eee; --dark-color: #333; - --clear-light: #fff2; - --clear-mid: #fff4; - --clear-dark: #fff6; + --clear-light: #fff3; + --clear-mid: #fff6; + --clear-dark: #fff9; + --clear-darker: #aaa3; + --clear-darkerer: #aaa6; + --background-gradient: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light)); } - /*Background & Footer*/ html { background-image: linear-gradient(to bottom right, var(--shifting-color-1), var(--shifting-color-1-light)); @@ -58,8 +60,12 @@ html { font-size: 8pt; } body { - margin: 0px; + margin: 0; + border: 0; + padding: 0; background-image: url(images/lowpoly.png); + background-position: left; + background-repeat: no-repeat; background-attachment: fixed; background-size: cover; } @@ -370,11 +376,10 @@ footer a:hover { } - +/* Text code tutorial */ #textCodeTutorial { display: grid; grid-template-columns: 6.5em auto; - /*padding: 0.5em;*/ } #textCodeTutorial > div { padding: 0.25em 0; @@ -388,3 +393,43 @@ footer a:hover { input[type="checkbox"], .frameOption, .maskOption, .button { cursor: pointer; } + + +/* image links */ +.proxyFactoryLimitedGrid { + margin: 0 auto; + max-width: 32em; +} +.imageLinkGrid { + margin-top: 1em; + display: grid; + justify-items: center; + grid-template-columns: repeat(auto-fit, minmax(13em, 1fr)); + +} +.showBackgroundThrough { + display: inline-block; + background: url(images/lowpoly.png) left top no-repeat; + background-size: cover; + background-attachment: fixed; +} +.imageLink { + width: 12em; + padding: 0.5em; + border-radius: 1em; + display: grid; + grid-template-columns: 4em auto; + align-items: center; + justify-items: left; + border: 1px solid var(--dark-color); +} +.imageLink:hover { + background-color: var(--clear-darkerer); +} +.imageLink > img { + max-height: 3em; + max-width: 4em; +} +.imageLink > div { + font: 1.5em belerenbsc; +} diff --git a/data/versions/m15.js b/data/versions/m15.js index ccd7fc78..cb8e0c06 100644 --- a/data/versions/m15.js +++ b/data/versions/m15.js @@ -21,6 +21,7 @@ version.manaCostDirection = "horizontal" version.watermarkWidth = scale(520) version.watermarkHeight = scale(250) version.watermarkY = scale(800) +version.masksToAdd = ["Right Half", "Corners", "Full", "Title", "Type", "Rules Text", "Pinline", "Frame", "Border", "Legend", "Legend With Border", "Box Topper"] //Name, text, x, y, width, height, font, size, color, other version.textList = [ ["Title", "", scale(64), scale(83), scale(630), 0, "belerenb", 37, "black", "oneLine=true"], diff --git a/data/versions/planeswalker.js b/data/versions/planeswalker.js new file mode 100644 index 00000000..75ecc57e --- /dev/null +++ b/data/versions/planeswalker.js @@ -0,0 +1,164 @@ +//============================================// +// Card Conjurer, by Kyle Burton // +//============================================// +version.currentVersion = "planeswalker" +version.artX = scale(58) +version.artY = scale(118) +version.setSymbolRight = scale(687) +version.setSymbolVertical = scale(612) +version.setSymbolWidth = scale(90) +version.setSymbolHeight = scale(42) +version.bottomInfoFunction = "m15PlaneswalkerBottomInfo" +version.manaCostX = scale(653) +version.manaCostY = scale(60) +version.manaCostDiameter = scale(34) +version.manaCostDistance = scale(-38) +version.manaCostDirection = "horizontal" +version.watermarkWidth = scale(520) +version.watermarkHeight = scale(250) +version.watermarkY = scale(800) +version.masksToAdd = ["Title Planeswalker", "Type Planeswalker", "Pinline Planeswalker", "Frame Planeswalker", "Border Planeswalker", "Loyalty Planeswalker", "Rules Text Planeswalker"] +filterFramePicker("frameClassPlaneswalker") +//Name, text, x, y, width, height, font, size, color, other, alternative-function +version.textList = [ + ["Title", "", scale(65), scale(65), scale(630), 0, "belerenb", scale(39), "black", "oneLine=true"], + ["Type", "", scale(65), scale(615), scale(630), 0, "belerenb", scale(33), "black", "oneLine=true"], + ["First Ability","",,,,,,,,,"planeswalkerAbilities"], + ["Second Ability", "",,,,,,,,,"ignore"], + ["Third Ability", "",,,,,,,,,"ignore"], + ["Fourth Ability", "",,,,,,,,,"ignore"], + ["Loyalty", "", scale(615), scale(958), scale(79), 0, "belerenb", scale(38), "white", "oneLine=true,textAlign='center'"] +] +function m15PlaneswalkerBottomInfo() { //remember to ctrl+f for 'artistBrushWidth' and adjust that when fixing these values! + bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight) + bottomInfoContext.writeText(document.getElementById("inputInfoNumber").value + " " + document.getElementById("inputInfoRarity").value + " *Not For Sale*", scale(46), scale(982), scale(329), 0, "gothammedium", scale(17), "white", "oneLine=true") + bottomInfoContext.writeText(document.getElementById("inputInfoSet").value + " \u2022 " + document.getElementById("inputInfoLanguage").value + " {font:belerenbsc}{artistBrush}{fontsize1}" + document.getElementById("inputInfoArtist").value, scale(46), scale(1002), scale(375), 0, "gothammedium", 17, "white", "oneLine=true") + bottomInfoContext.writeText("\u2122 & \u00a9 " + date.getFullYear() + " Wizards of the Coast", cardWidth / 2, scale(1001), scale(322), 0, "mplantin", scale(17), "white", "oneLine=true,textAlign='right'") + cardImageUpdated() +} +if (!version.addedPlaneswalker) { + version.addedPlaneswalker = true + document.getElementById("mainTabMenu").innerHTML += "
Planeswalker
" + var planeswalkerTab = document.createElement("div") + planeswalkerTab.classList.add("tabContent") + planeswalkerTab.classList.add("mainEditor") + planeswalkerTab.id = "planeswalker" + planeswalkerTab.innerHTML = ` + One: + Two: + Three: + Four:
+ For two-ability Planeswalkers only:
+ Use War of the Spark ability spacing
+ Reverse War of the Spark ability spacing` + document.getElementById("cardMenu").appendChild(planeswalkerTab) + newCanvas("planeswalker"); + var planeswalkerPlus = new Image() + planeswalkerPlus.src = "data/images/planeswalker/planeswalkerPlus.png" + var planeswalkerNeutral = new Image() + planeswalkerNeutral.src = "data/images/planeswalker/planeswalkerNeutral.png" + var planeswalkerMinus = new Image() + planeswalkerMinus.src = "data/images/planeswalker/planeswalkerMinus.png" + var lightToDarkPlaneswalker = new Image() + lightToDarkPlaneswalker.src = "data/images/planeswalker/abilityLineOdd.png" + var darkToLightPlaneswalker = new Image() + darkToLightPlaneswalker.onload = function() {planeswalkerAbilities()} + darkToLightPlaneswalker.src = "data/images/planeswalker/abilityLineEven.png" +} + +m15PlaneswalkerBottomInfo() +finishChangingVersion("data/images/planeswalker/planeswalkerCSV.csv") + +var planeswalkerAbilityLayout = [[0], [0, scale(784)], [0, scale(730), scale(863)], [0, scale(697), scale(784), scale(878)], [0, scale(100), scale(200), scale(300), scale(400)]] +var planeswalkerAbilityCount = 3; +var ability1Y = 0, ability2Y = 0, ability3Y = 0, ability4Y = 0, ability5Y = cardHeight; +//planeswalkerContext.writeText(version.textList[2][1], 64, ability1Y, 616, 0, "mplantin", 38, "black", "lineSpace=0.97"); +function planeswalkerAbilities() { + planeswalkerContext.clearRect(0, 0, cardWidth, cardHeight) + planeswalkerAbilityCount = 0 + for (var i = 1; i < 5; i++) { + if (getValue("inputPlaneswalker" + i) != 0) { + planeswalkerAbilityCount += 1; + } else { + break + } + } + if (planeswalkerAbilityCount > 0) { + ability1Y = scale(648) + if (planeswalkerAbilityCount > 1) { + window.ability2Y = getValue("inputPlaneswalker1") + ability1Y + if (planeswalkerAbilityCount > 2) { + ability3Y = getValue("inputPlaneswalker2") + ability2Y + if (planeswalkerAbilityCount > 3) { + ability4Y = getValue("inputPlaneswalker3") + ability3Y + planeswalkerContext.writeText(version.textList[5][1], scale(133), ability4Y + (scale(950) - ability4Y) / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97"); + } + planeswalkerContext.writeText(version.textList[4][1], scale(133), ability3Y + getValue("inputPlaneswalker3") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97"); + } + planeswalkerContext.writeText(version.textList[3][1], scale(133), ability2Y + getValue("inputPlaneswalker2") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97"); + } + planeswalkerContext.writeText(version.textList[2][1], scale(133), ability1Y + getValue("inputPlaneswalker1") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97", "planeswalkerTextFunction"); + } +} +function planeswalkerTextFunction() { + planeswalkerContext.globalCompositeOperation = "destination-over" + var lastAdjust = 0 + for (var i = 1; i < planeswalkerAbilityCount + 1; i++) { + if (i == planeswalkerAbilityCount) { + lastAdjust = 2 * cardHeight + } + if (i % 2 == 1) { + planeswalkerContext.fillStyle = "white" + planeswalkerContext.globalAlpha = 0.608 + planeswalkerContext.fillRect(scale(91), window["ability" + i + "Y"] + scale(10), scale(599), window["ability" + (i + 1) + "Y"] - window["ability" + i + "Y"] - scale(20) + lastAdjust) + if (i == 1 && planeswalkerAbilityCount != 1) { + planeswalkerContext.fillRect(scale(91), window["ability" + i + "Y"], scale(599), scale(10)) + } + planeswalkerContext.globalAlpha = 1 + planeswalkerContext.drawImage(lightToDarkPlaneswalker, scale(91), window["ability" + (i + 1) + "Y"] - scale(10) + lastAdjust, scale(599), scale(20)) + } else { + planeswalkerContext.fillStyle = "#a4a4a4" + planeswalkerContext.globalAlpha = 0.706 + planeswalkerContext.fillRect(scale(91), window["ability" + i + "Y"] + scale(10), scale(599), window["ability" + (i + 1) + "Y"] - window["ability" + i + "Y"] - scale(20) + lastAdjust) + planeswalkerContext.globalAlpha = 1 + planeswalkerContext.drawImage(darkToLightPlaneswalker, scale(91), window["ability" + (i + 1)+ "Y"] - scale(10) + lastAdjust, scale(599), scale(20)) + } + } + planeswalkerContext.globalCompositeOperation = "destination-in" + planeswalkerContext.drawImage(maskList[maskNameList.indexOf("Rules Text Planeswalker")], 0, 0, cardWidth, cardHeight) + planeswalkerContext.globalCompositeOperation = "source-over" + planeswalkerContext.fillStyle = "white" + planeswalkerContext.font = "30px belerenbsc" + planeswalkerContext.textAlign = "center" + for (var i = 1; i < planeswalkerAbilityCount + 1; i++) { + var planeswalkerIconValue = document.getElementById("inputPlaneswalker" + i + "Icon").value + var planeswalkerMidpoint = getValue("inputPlaneswalker" + i + "") / 2 + window["ability" + i + "Y"] + if (planeswalkerIconValue.includes("+")) { + planeswalkerContext.drawImage(planeswalkerPlus, scale(22), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scale(35), scale(105), scale(76)) + planeswalkerContext.fillText(planeswalkerIconValue, scale(77), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scale(10)) + } else if (planeswalkerIconValue.includes("-")) { + planeswalkerContext.drawImage(planeswalkerMinus, scale(21), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scale(24), scale(106), scale(74)) + planeswalkerContext.fillText(planeswalkerIconValue, scale(77), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scale(11)) + } else if (planeswalkerIconValue != "") { + planeswalkerContext.drawImage(planeswalkerNeutral, scale(21), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scale(24), scale(106), scale(64)) + planeswalkerContext.fillText(planeswalkerIconValue, scale(77), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scale(12)) + } + } + cardImageUpdated() +} +function changePlaneswalkerAbilityLayout() { + if (document.getElementById("inputWARSpacing").checked) { + if (document.getElementById("inputWARReverse").checked) { + planeswalkerAbilityLayout[2] = [0, scale(784), scale(878)] + } else { + planeswalkerAbilityLayout[2] = [0, scale(697), scale(784)] + } + } else { + planeswalkerAbilityLayout[2] = [0, scale(730), scale(863)] + } + planeswalkerAbilities() +} + + + + diff --git a/disclaimer.html b/disclaimer.html index d48c859f..7c524d87 100644 --- a/disclaimer.html +++ b/disclaimer.html @@ -16,9 +16,15 @@
- Card Conjurer is in no way affiliated with, sponsored by, or endorsed by Wizards of the Coast. Mana symbols and other related images are trademarks and copyrights of Wizards of the Coast, LLC, a subsidiary of Hasbro, Inc. + Card Conjurer is in no way affiliated with, sponsored by, or endorsed by Wizards of the Coast. Fonts, Mana symbols, and other related images are trademarks and copyrights of Wizards of the Coast, LLC, a subsidiary of Hasbro, Inc.
+
+
+ Most of the card frames were created by the following:
+ Kentu, Narb777, CXA26843, FPM, Xander, Chrome Kaldra, CBG, Trancebam, Larme, RoblinTheGoblin, and White Dragon. +
+
Some fonts and/or images used in this program have been gathered from the following sources under the Creative Commons BY-NC-SA 2.5 License:
diff --git a/index.html b/index.html index 6b189d9e..cd0dbd33 100644 --- a/index.html +++ b/index.html @@ -17,108 +17,117 @@
- -
-
Frame
-
Text
-
Art
-
Collector
-
Set Symbol
-
Watermark
-
-
-
-
-
-
-
- - -
-
No frame selected
-
-
|||
Card Art Placeholder
-
-
-
Upload your own frame images:
-
- - -
-
-
-
- - -
-
How To Use Text Codes
-
- Remember to surround each code with curly brackets ("{" and "}"). The codes are not caps sensitive. The following is a list of available text codes and what they do: -
-
-
-
-
-
- - - - -
-
-
X, Y, & Zoom:
- - - -
-
-
-
-
- - - - - -
-
-
-
- - - - - -
-
-
-
- - - - - -
+
+ +
+
Frame
+
Text
+
Art
+
Collector
+
Set Symbol
+
Watermark
+
Advanced
+
+
+
+
+
+
+
+ + +
+
No frame selected
+
+
|||
Card Art Placeholder
+
+
+
Upload your own frame images:
+
+ + +
+
+
+
+ + +
+
How To Use Text Codes
+
+ Remember to surround each code with curly brackets ("{" and "}"). The codes are not caps sensitive. The following is a list of available text codes and what they do: +
+
+
+
+
+
+ + + + +
+
+
X, Y, & Zoom:
+ + + +
+
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ Click on one of the following buttons to load the described image frame set: +
+ +
@@ -141,14 +150,21 @@
-
Want More Customization?
- +
Looking for the Original?
- This version of the website is currently a work in progress, so it doesn't have all the features the original Card Conjurer had. If you'd like to go back to the old version, click here. + This version of the website is currently a work in progress, so it doesn't have the same features that the original Card Conjurer had. If you want to go back to the old version, click here.
+
+
The Proxy Factory
+
If you'd like to delve deeper into making custom Magic: The Gathering cards, check out The Proxy Factory! They're a community full of individuals interested in creating custom cards, and are very welcoming to new members.
+
+
+
Reddit
+
Discord
+
+
+
Have Any Questions?