forked from GithubMirrors/cardconjurer
		
	
		
			
				
	
	
		
			246 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var localStorageCardKeyList = new Array()
 | |
| var selectedCardKey = ''
 | |
| 
 | |
| if (localStorage.getItem('cardKeyList') == null) {
 | |
|   localStorage.setItem('cardKeyList', '[]')
 | |
| } else {
 | |
|   loadSavedCards()
 | |
| }
 | |
| 
 | |
| function loadSavedCards() {
 | |
|   localStorageCardKeyList = JSON.parse(localStorage.getItem('cardKeyList'))
 | |
|   document.getElementById('inputCardToImport').innerHTML = '<option disabled selected="selected">None selected</option>'
 | |
|   for (var i = 0; i < localStorageCardKeyList.length; i ++) {
 | |
|     document.getElementById('inputCardToImport').innerHTML += '<option>' + localStorageCardKeyList[i] + '</option>'
 | |
|   }
 | |
| }
 | |
| 
 | |
| function saveCard() {
 | |
|   var savedCardKey = cardTextList[0].text
 | |
|   if (!savedCardKey) {
 | |
|     savedCardKey = 'unnamed'
 | |
|   }
 | |
|   savedCardKey = prompt('Please enter the name you\'d like to save your card as', savedCardKey)
 | |
|   if (localStorageCardKeyList.includes(savedCardKey)) {
 | |
|     if (!confirm('Would you like to overwrite the card you previously saved as ' + savedCardKey + "? (Pressing 'Cancel' will still save the card, but will affix a version number at the end)")) {
 | |
|       var originalCardKey = savedCardKey
 | |
|       var duplicateCount = 1
 | |
|       while (localStorageCardKeyList.includes(savedCardKey)) {
 | |
|         savedCardKey = originalCardKey + ' (' + duplicateCount + ')'
 | |
|         duplicateCount ++
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   if (!localStorageCardKeyList.includes(savedCardKey)) {
 | |
|     //If the card is new, add it, updated the select element, and update the localstorage
 | |
|     localStorageCardKeyList.push(savedCardKey)
 | |
|     localStorageCardKeyList.sort()
 | |
|     document.getElementById('inputCardToImport').innerHTML = '<option disabled selected="selected">None selected</option>'
 | |
|     for (var i = 0; i < localStorageCardKeyList.length; i ++) {
 | |
|       document.getElementById('inputCardToImport').innerHTML += '<option>' + localStorageCardKeyList[i] + '</option>'
 | |
|     }
 | |
|     localStorage.setItem('cardKeyList', JSON.stringify(localStorageCardKeyList))
 | |
|   }
 | |
|   var cardToBeSaved = new savedCard(savedCardKey)
 | |
|   cardToBeSaved.save()
 | |
| }
 | |
| 
 | |
| function deleteCard() {
 | |
|   if (confirm('Are you sure you want to delete ' + selectedCardKey + '?')) {
 | |
|     localStorageCardKeyList.splice(localStorageCardKeyList.indexOf(selectedCardKey), 1)
 | |
|     document.getElementById('inputCardToImport').innerHTML = '<option disabled selected="selected">None selected</option>'
 | |
|     for (var i = 0; i < localStorageCardKeyList.length; i ++) {
 | |
|       document.getElementById('inputCardToImport').innerHTML += '<option>' + localStorageCardKeyList[i] + '</option>'
 | |
|     }
 | |
|     localStorage.setItem('cardKeyList', JSON.stringify(localStorageCardKeyList))
 | |
|     localStorage.removeItem(selectedCardKey)
 | |
|   }
 | |
| }
 | |
| 
 | |
| function importSavedCard(localStorageKey = document.getElementById('inputCardToImport').value) {
 | |
|   if (localStorageKey) {
 | |
|     selectedCardKey = localStorageKey
 | |
|     importedCard = JSON.parse(localStorage.getItem(localStorageKey))
 | |
|     //Skip trackers
 | |
|     skipLoadTextList = 0
 | |
|     skipResizeCardArt = 1
 | |
|     if (importedCard.version != currentVersion) {
 | |
|       skipLoadTextList += 1
 | |
|       skipResizeCardArt += 1
 | |
|       if (importedCard.version.split('/')[1] != 'version' && (currentVersion.split('/')[0] != importedCard.version.split('/')[0] || currentVersion.split('/')[1] != 'version')) {
 | |
|         skipLoadTextList += 1
 | |
|         skipResizeCardArt += 1
 | |
|       }
 | |
|     }
 | |
|     //Masks
 | |
|     loadMaskImages(importedCard.maskList)
 | |
|     //Version
 | |
|     document.getElementById('inputFrameVersion').value = importedCard.version.split('/')[0]
 | |
|     loadVersion(importedCard.version.split('/')[0])
 | |
|     if (!importedCard.version.includes('version')) {
 | |
|       loadScript('/data/scripts/versions/' + importedCard.version + '.js')
 | |
|     }
 | |
|     //Frame
 | |
|     document.getElementById('cardMaster').innerHTML = importedCard.cardMaster
 | |
|     cardMasterList = cardMasterList.slice(0, 2)
 | |
|     cardMasterList = cardMasterList.concat(importedCard.cardMasterList)
 | |
|     var tempObject = new cardImage()
 | |
|     var tempElement = tempObject.cardMasterElement()
 | |
|     for (var i = 2; i < cardMasterList.length; i ++) {
 | |
|       cardMasterList[i].image = new Image()
 | |
|       cardMasterList[i].image.src = cardMasterList[i].imageSource
 | |
|       cardMasterList[i].draw = tempObject.draw
 | |
|     }
 | |
|     for (var i = 0; i < document.getElementById('cardMaster').children.length; i ++) {
 | |
|       if (parseInt(document.getElementById('cardMaster').children[i].id.replace('uniqueNumber', '')) > 1) {
 | |
|         document.getElementById('cardMaster').children[i].onclick = tempElement.onclick
 | |
|       }
 | |
|     }
 | |
|     uniqueNumberTracker = importedCard.numberTracker
 | |
|     //Art
 | |
|     document.getElementById('inputCardArtX').value = importedCard.artX
 | |
|     document.getElementById('inputCardArtY').value = importedCard.artY
 | |
|     document.getElementById('inputCardArtZoom').value = importedCard.artZoom
 | |
|     cardArt.src = importedCard.cardArt
 | |
|     //Set Symbol
 | |
|     setSymbol.src = importedCard.setSymbol
 | |
|     document.getElementById('inputSetSymbolX').value = importedCard.setSymbolX
 | |
|     document.getElementById('inputSetSymbolY').value = importedCard.setSymbolY
 | |
|     document.getElementById('inputSetSymbolZoom').value = importedCard.setSymbolZoom
 | |
|     //Watermark
 | |
|     watermark.src = importedCard.watermark
 | |
|     document.getElementById('inputWatermarkPrimary').value = importedCard.watermarkPrimary
 | |
|     document.getElementById('inputWatermarkSecondary').value = importedCard.watermarkSecondary
 | |
|     document.getElementById('inputWatermarkOpacity').value = importedCard.watermarkOpacity
 | |
|     //Collector
 | |
|     document.getElementById('inputInfoNumber').value = importedCard.number
 | |
|     document.getElementById('inputInfoRarity').value = importedCard.rarity
 | |
|     document.getElementById('inputInfoSet').value = importedCard.set
 | |
|     document.getElementById('inputInfoLanguage').value = importedCard.language
 | |
|     document.getElementById('inputInfoArtist').value = importedCard.artist
 | |
|     document.getElementById('inputInfoArtist2').value = importedCard.artist
 | |
|     bottomInfoUpdated()
 | |
|     //Mana Cost
 | |
|     if (importedCard.manaCostList) {
 | |
|       for (var i = 0; i < importedCard.manaCostList.length; i ++) {
 | |
|         if (!manaSymbolCodeList.includes(importedCard.manaCostList[i][0])) {
 | |
|           manaSymbolCodeList.push(importedCard.manaCostList[i][0])
 | |
|           manaSymbolImageList.push(new Image())
 | |
|           manaSymbolImageList[manaSymbolImageList.length - 1].onload = manaCostUpdated
 | |
|           manaSymbolImageList[manaSymbolImageList.length - 1].src = importedCard.manaCostList[i][1]
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     document.getElementById('inputManaCost').value = importedCard.manaCost
 | |
|     manaCostUpdated()
 | |
|     //Text
 | |
|     cardTextList = importedCard.text
 | |
|     document.getElementById('textPicker').children[0].click()
 | |
|     drawCardText()
 | |
|   }
 | |
| }
 | |
| 
 | |
| class savedCard {
 | |
|   constructor(keyToUse = 'unnamed') {
 | |
|     //Masks
 | |
|     this.maskList = []
 | |
|     for (var i = 0; i < cardMasterList.length; i ++) {
 | |
|       if (cardMasterList[i].masks != undefined) {
 | |
|         this.maskList.push([cardMasterList[i].masks[0], maskImageList[maskNameList.indexOf(cardMasterList[i].masks[0])].src])
 | |
|       }
 | |
|     }
 | |
|     //Frame Version
 | |
|     this.version = currentVersion
 | |
|     //Frame
 | |
|     this.cardMaster = document.getElementById('cardMaster').innerHTML.replace(' selected', '')
 | |
|     this.cardMasterList = cardMasterList.slice(2)
 | |
|     this.numberTracker = uniqueNumberTracker
 | |
|     //Art
 | |
|     this.cardArt = cardArt.src
 | |
|     this.artX = document.getElementById('inputCardArtX').value
 | |
|     this.artY = document.getElementById('inputCardArtY').value
 | |
|     this.artZoom = document.getElementById('inputCardArtZoom').value
 | |
|     //Set Symbol
 | |
|     this.setSymbol = setSymbol.src
 | |
|     this.setSymbolX = document.getElementById('inputSetSymbolX').value
 | |
|     this.setSymbolY = document.getElementById('inputSetSymbolY').value
 | |
|     this.setSymbolZoom = document.getElementById('inputSetSymbolZoom').value
 | |
|     //Watermark
 | |
|     this.watermark = watermark.src
 | |
|     this.watermarkPrimary = document.getElementById('inputWatermarkPrimary').value
 | |
|     this.watermarkSecondary = document.getElementById('inputWatermarkSecondary').value
 | |
|     this.watermarkOpacity = document.getElementById('inputWatermarkOpacity').value
 | |
|     //Collector
 | |
|     this.number = document.getElementById('inputInfoNumber').value
 | |
|     this.rarity = document.getElementById('inputInfoRarity').value
 | |
|     this.set = document.getElementById('inputInfoSet').value
 | |
|     this.language = document.getElementById('inputInfoLanguage').value
 | |
|     this.artist = document.getElementById('inputInfoArtist').value
 | |
|     //Mana Cost
 | |
|     this.manaCostList = []
 | |
|     for (var i = 0; i < usedManaSymbols.length; i ++) {
 | |
|       this.manaCostList.push([usedManaSymbols[i], manaSymbolImageList[manaSymbolCodeList.indexOf(usedManaSymbols[i])].src])
 | |
|     }
 | |
|     this.manaCost = document.getElementById('inputManaCost').value
 | |
|     //Text
 | |
|     this.text = cardTextList
 | |
|     //Key
 | |
|     this.key = keyToUse
 | |
|     //Version Control
 | |
|     this.ccVersion = 1
 | |
|   }
 | |
|   save() {
 | |
|     localStorage.setItem(this.key, JSON.stringify(this))
 | |
|   }
 | |
| }
 | |
| 
 | |
| function downloadSavedCards() {
 | |
|   var savedCardsText = ''
 | |
|   for (var i = 0; i < localStorageCardKeyList.length; i ++) {
 | |
|     savedCardsText += localStorageCardKeyList[i] + '<<cardData>>' + localStorage.getItem(localStorageCardKeyList[i]) + '<<newCard>>'
 | |
|   }
 | |
|   savedCardsText = savedCardsText.slice(0, -11)
 | |
|   var blob = new Blob([savedCardsText], {type: 'text'})
 | |
|   var a = document.createElement('a')
 | |
|   a.download = 'Card_Conjurer_Saved_Cards'
 | |
|   a.href = URL.createObjectURL(blob)
 | |
|   a.dataset.downloadurl = ['text', a.download, a.href].join(':')
 | |
|   a.style.display = 'none'
 | |
|   document.body.appendChild(a)
 | |
|   a.click()
 | |
|   document.body.removeChild(a)
 | |
|   setTimeout(function() { URL.revokeObjectURL(a.href); }, 1500)
 | |
| }
 | |
| 
 | |
| function uploadSavedCards(event) {
 | |
|   var reader = new FileReader()
 | |
|   reader.onload = function() {
 | |
|     var uploadedCardList = reader.result.split('<<newCard>>')
 | |
|     for (var j = 0; j < uploadedCardList.length; j ++) {
 | |
|       var uploadedCard = uploadedCardList[j].split('<<cardData>>')
 | |
|       var savedCardKey = uploadedCard[0]
 | |
|       if (localStorageCardKeyList.includes(savedCardKey)) {
 | |
|         if (!confirm('Would you like to overwrite the card you previously saved as ' + savedCardKey + "? (Pressing 'Cancel' will still save the card, but will affix a version number at the end)")) {
 | |
|           var originalCardKey = savedCardKey
 | |
|           var duplicateCount = 1
 | |
|           while (localStorageCardKeyList.includes(savedCardKey)) {
 | |
|             savedCardKey = originalCardKey + ' (' + duplicateCount + ')'
 | |
|             duplicateCount ++
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|       if (!localStorageCardKeyList.includes(savedCardKey)) {
 | |
|         //If the card is new, add it, updated the select element, and update the localstorage
 | |
|         localStorageCardKeyList.push(savedCardKey)
 | |
|       }
 | |
|       localStorage.setItem(savedCardKey, uploadedCard[1])
 | |
|     }
 | |
|     localStorageCardKeyList.sort()
 | |
|     document.getElementById('inputCardToImport').innerHTML = '<option disabled selected="selected">None selected</option>'
 | |
|     for (var i = 0; i < localStorageCardKeyList.length; i ++) {
 | |
|       document.getElementById('inputCardToImport').innerHTML += '<option>' + localStorageCardKeyList[i] + '</option>'
 | |
|     }
 | |
|     localStorage.setItem('cardKeyList', JSON.stringify(localStorageCardKeyList))
 | |
|   }
 | |
|   reader.readAsText(event.target.files[0], 'UTF-8')
 | |
| } | 
