diff --git a/data/images/imageCSV.csv b/data/images/imageCSV.csv new file mode 100644 index 00000000..9a706a75 --- /dev/null +++ b/data/images/imageCSV.csv @@ -0,0 +1,16 @@ +displayName,imagePath,maskOptions +White,m15WFull.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 +Blue,m15UFull.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 +Black,m15BFull.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 +Red,m15RFull.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 +Green,m15GFull.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,m15MFull.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 +Artifact,m15AFull.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,m15CFull.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 Land,m15WLFull.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 +Blue Land,m15ULFull.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 +Black Land,m15BLFull.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 +Red Land,m15RLFull.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 +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 \ No newline at end of file diff --git a/data/images/masks/Border.png b/data/images/masks/Border.png new file mode 100644 index 00000000..bf57bbfd Binary files /dev/null and b/data/images/masks/Border.png differ diff --git a/data/images/masks/Frame.png b/data/images/masks/Frame.png new file mode 100644 index 00000000..afd61b47 Binary files /dev/null and b/data/images/masks/Frame.png differ diff --git a/data/images/masks/Full.png b/data/images/masks/Full.png new file mode 100644 index 00000000..abf14c74 Binary files /dev/null and b/data/images/masks/Full.png differ diff --git a/data/images/masks/Pinline.png b/data/images/masks/Pinline.png new file mode 100644 index 00000000..8a23389d Binary files /dev/null and b/data/images/masks/Pinline.png differ diff --git a/data/images/masks/RightHalf.png b/data/images/masks/RightHalf.png new file mode 100644 index 00000000..d254490d Binary files /dev/null and b/data/images/masks/RightHalf.png differ diff --git a/data/images/masks/RulesText.png b/data/images/masks/RulesText.png new file mode 100644 index 00000000..7dd26950 Binary files /dev/null and b/data/images/masks/RulesText.png differ diff --git a/data/images/masks/Title.png b/data/images/masks/Title.png new file mode 100644 index 00000000..335d0ca5 Binary files /dev/null and b/data/images/masks/Title.png differ diff --git a/data/images/masks/Type.png b/data/images/masks/Type.png new file mode 100644 index 00000000..78ee4eb9 Binary files /dev/null and b/data/images/masks/Type.png differ diff --git a/data/scripts/main.js b/data/scripts/main.js index da9cdc00..c66c3d9b 100644 --- a/data/scripts/main.js +++ b/data/scripts/main.js @@ -1,36 +1,200 @@ //============================================// // Card Conjurer, by Kyle Burton // //============================================// +/* Test things! */ +function testFunction() { + // console.log("test function begin"); + // cardMaster.innerHTML += frameList[0].cardMasterElement("Full"); + // console.log("test function end"); + // cardMasterUpdated(); +} + + /* Initiate! */ -window.onload = initiate +window.onload = initiate; function initiate() { window.cardWidth = 750; window.cardHeight = 1050; + window.frameList = new Array(); + window.maskNameList = ["Right Half", "Full", "Title", "Type", "Rules Text", "Pinline", "Frame"]; + window.maskList = []; + window.selectedFrame = -1; + window.selectedMask = ""; + 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"); - // loadScript("data/scripts/sortable.js"); - import Sortable from './data/scripts/sortable.js'; - // var el = document.getElementById('items'); - // var sortable = Sortable.create(el); - console.log("init done") + newCanvas("frameMask"); + newCanvas("frameFinal"); + newCanvas("cardFinal"); + //Loads up anything that uses Sortable.js + var sortable = Sortable.create(cardMaster, {animation: 150, ghostClass: "cardMasterElementMoving"}); + //initiation is complete, ready to load image data + console.log("init done"); + loadImageCSV(); } +/* Loads all the image info from the CSV! */ +function loadImageCSV() { + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4) { + 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]); + } + console.log("frame list loaded"); + for (var i = 0; i < frameList.length; i++) { + // frameList[i].framePickerElement(document.getElementById("framePicker")); + document.getElementById("framePicker").innerHTML += 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"); + // selectedMask = document.getElementsByClassName("frameOption")[0].id.replace("frameIndex", ""); + setTimeout(testFunction, 500); //deleteme + } + } + xhttp.open("GET", "data/images/imageCSV.csv", true); + xhttp.send(); +} +/* Image Class */ +class frameImage { + constructor(display, path, masks) { + this.displayName = display; + this.image = new Image(); + this.image.src = path; + this.maskOptionList = new Array(); + this.xList = new Array(); + this.yList = new Array(); + this.widthList = new Array(); + this.heightList = new Array(); + var splitMasks = masks.split(";"); + for (var i = 0; i < splitMasks.length; i++) { + var splitIndividualMasks = splitMasks[i].split("-"); + this.maskOptionList[i] = splitIndividualMasks[0]; + this.xList[i] = scale(parseInt(splitIndividualMasks[1])); + this.yList[i] = scale(parseInt(splitIndividualMasks[2])); + this.widthList[i] = scale(parseInt(splitIndividualMasks[3])); + this.heightList[i] = scale(parseInt(splitIndividualMasks[4])); + } + } + cardMasterElement(targetMask, right) { + var extraMask = "" + if (right) { + extraMask = " - Right" + } + return "