From 2f3f5d05fba505c21c6156357bd6b844ee1bf25c Mon Sep 17 00:00:00 2001 From: Azgaar Date: Sat, 13 Feb 2021 21:52:50 +0300 Subject: [PATCH] v1.5.24 - smarter generation --- modules/coa-generator.js | 23 ++++++++++------------- modules/coa-renderer.js | 8 +++----- modules/ui/emblems-editor.js | 8 +++----- modules/ui/style.js | 2 +- 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/modules/coa-generator.js b/modules/coa-generator.js index 5dbdc6dc..8a0562ca 100644 --- a/modules/coa-generator.js +++ b/modules/coa-generator.js @@ -16,8 +16,8 @@ const charges = { // categories selection - types: { conventional: 30, crosses: 8, animals: 2, animalHeads: 1, birds: 2, aquatic: 1, seafaring: 1, fantastic: 3, plants: 1, agriculture: 1, arms: 3, bodyparts: 1, people: 1, architecture: 1, miscellaneous: 3, inescutcheon: 3 }, - single: { conventional: 12, crosses: 8, plants: 2, animals: 10, animalHeads: 2, birds: 4, aquatic: 2, seafaring: 2, fantastic: 7, agriculture: 1, arms: 6, bodyparts: 1, people: 1, architecture: 1, miscellaneous: 9, inescutcheon: 5 }, + types: { conventional: 30, crosses: 8, animals: 2, animalHeads: 1, birds: 2, fantastic: 3, plants: 1, agriculture: 1, arms: 3, bodyparts: 1, people: 1, architecture: 1, miscellaneous: 3, inescutcheon: 3 }, + single: { conventional: 12, crosses: 8, plants: 2, animals: 10, animalHeads: 2, birds: 4, fantastic: 7, agriculture: 1, arms: 6, bodyparts: 1, people: 1, architecture: 1, miscellaneous: 9, inescutcheon: 5 }, semy: { conventional: 12, crosses: 3, plants: 1 }, // generic categories conventional: { @@ -35,19 +35,17 @@ lionRampant: 5, lionPassant: 2, wolfRampant: 1, wolfPassant: 1, wolfStatant: 1, greyhoundCourant: 1, boarRampant: 1, horseRampant: 2, horseSalient: 1, bearRampant: 2, bearPassant: 1, bullPassant: 1, goat: 1, lamb: 1, elephant: 1 }, - animalHeads: { wolfHeadErased: 2, bullHeadCaboshed: 1, deerHeadCaboshed: 1 }, + animalHeads: { wolfHeadErased: 1, bullHeadCaboshed: 1, deerHeadCaboshed: 1 }, fantastic: { dragonPassant: 2, dragonRampant: 2, wyvern: 1, wyvernWithWingsDisplayed: 1, griffinPassant: 1, griffinRampant: 1, eagleTwoHeards: 2, unicornRampant: 1, pegasus: 1, serpent: 1 }, - birds: { eagle: 9, raven: 2, cock: 3, parrot: 1, swan: 2, swanErased: 1, heron: 1 }, + birds: { eagle: 9, raven: 1, cock: 3, parrot: 1, swan: 2, swanErased: 1, heron: 1 }, plants: { tree: 1, cinquefoil: 1, rose: 1 }, - aquatic: { escallop: 5, pike: 1, cancer: 1, dolphin: 1 }, - seafaring: { anchor: 6, boat: 2, lymphad: 2, armillarySphere: 1 }, - agriculture: { garb: 2, rake: 1 }, + agriculture: { garb: 1, rake: 1 }, arms: { sword: 5, sabre: 1, sabresCrossed: 1, hatchet: 2, lochaberAxe: 1, mallet: 1, bowWithArrow: 2, bow: 1, arrow: 1, arrowsSheaf: 1 }, bodyparts: { hand: 4, head: 1, headWreathed: 1 }, people: { cavalier: 1 }, architecture: { tower: 1, castle: 1 }, miscellaneous: { - crown: 3, orb: 1, chalice: 1, key: 1, buckle: 1, bugleHorn: 1, bell: 2, pot: 1, horseshoe: 3, stagsAttires: 1, cowHorns: 2, wing: 1, wingSword: 1, + crown: 3, orb: 1, chalice: 1, key: 1, buckle: 1, bugleHorn: 1, bell: 1, pot: 1, horseshoe: 3, stagsAttires: 1, cowHorns: 2, wing: 1, wingSword: 1, lute: 1, harp: 1, wheel: 2, crosier: 1, log: 1}, // selection based on culture type: Naval: { anchor: 3, boat: 1, lymphad: 2, armillarySphere: 1, escallop: 1, dolphin: 1 }, @@ -195,10 +193,6 @@ if (parent === "custom") parent = null; let usedPattern = null, usedTinctures = []; - // TO-DO - // test in FF - // stringify COA on save? - const t1 = P(kinship) ? parent.t1 : getTincture("field"); if (t1.includes("-")) usedPattern = t1; const coa = {t1}; @@ -209,7 +203,10 @@ const rareDivided = ["chief", "terrace", "chevron", "quarter", "flaunches"].includes(ordinary); const divisioned = rareDivided ? P(.03) : charge && ordinary ? P(.03) : charge ? P(.3) : ordinary ? P(.7) : P(.995); // 33% for division const division = divisioned ? parent?.division && P(kinship - .1) ? parent.division.division : rw(divisions.variants) : null; - if (charge) charge = parent?.charges && P(kinship - .1) ? parent.charges[0].charge : type && P(.3) ? rw(charges[type]) : selectCharge(); + if (charge) charge = + parent?.charges && P(kinship - .1) ? parent.charges[0].charge : + type && type !== "Generic" && P(.3) ? rw(charges[type]) : + selectCharge(); if (division) { const t = getTincture("division", usedTinctures, P(.98) ? coa.t1 : null); diff --git a/modules/coa-renderer.js b/modules/coa-renderer.js index 274eca25..8fcbd524 100644 --- a/modules/coa-renderer.js +++ b/modules/coa-renderer.js @@ -968,18 +968,16 @@ } async function fetchCharge(charge, id) { - const fetched = fetch("https://azgaar.github.io/Armoria/charges/" + charge + ".svg") - .then(res => { + const fetched = fetch("https://azgaar.github.io/Armoria/charges/" + charge + ".svg").then(res => { if (res.ok) return res.text(); else throw new Error("Cannot fetch charge"); - }) - .then(text => { + }).then(text => { const html = document.createElement("html"); html.innerHTML = text; const g = html.querySelector("g"); g.setAttribute("id", charge + "_" + id); return g.outerHTML; - }); + }).catch(err => console.error(err)); return fetched; } diff --git a/modules/ui/emblems-editor.js b/modules/ui/emblems-editor.js index 938c40c7..8bab6d8a 100644 --- a/modules/ui/emblems-editor.js +++ b/modules/ui/emblems-editor.js @@ -257,13 +257,13 @@ function editEmblem(type, id, el) { const img = new Image(); img.src = url; - img.onload = async function() { + img.onload = function() { if (format === "jpeg") { ctx.fillStyle = "#fff"; ctx.fillRect(0, 0, canvas.width, canvas.height); } ctx.drawImage(img, 0, 0, canvas.width, canvas.height); - const URL = await canvas.toDataURL("image/" + format, .92); + const URL = canvas.toDataURL("image/" + format, .92); link.href = URL; link.click(); window.setTimeout(() => window.URL.revokeObjectURL(URL), 5000); @@ -277,12 +277,10 @@ function editEmblem(type, id, el) { return url; } - function getSVG(svg, coa, size) { + function getSVG(svg, size) { const clone = svg.cloneNode(true); // clone svg - clone.setAttribute("width", size); clone.setAttribute("height", size); - return (new XMLSerializer()).serializeToString(clone); } diff --git a/modules/ui/style.js b/modules/ui/style.js index 35aaa29d..b7196d66 100644 --- a/modules/ui/style.js +++ b/modules/ui/style.js @@ -709,7 +709,7 @@ function applyStyleOnLoad() { stylePreset.value = preset; stylePreset.dataset.old = preset; } else { - if (preset !== "styleDefault" && ERROR) console.error(`Style preset ${preset} is not available in localStorage, applying default style`); + if (preset && preset !== "styleDefault" && ERROR) console.error(`Style preset ${preset} is not available in localStorage, applying default style`); stylePreset.value = "styleDefault"; stylePreset.dataset.old = preset; applyDefaultStyle();