mirror of
https://github.com/Investigamer/cardconjurer.git
synced 2025-07-27 05:14:53 -05:00
245 lines
11 KiB
JavaScript
245 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') {
|
|
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
|
|
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')
|
|
} |