diff --git a/index.html b/index.html
index b56bff5c..06032157 100644
--- a/index.html
+++ b/index.html
@@ -2863,8 +2863,8 @@
-
+
diff --git a/libs/jquery-ui.css b/libs/jquery-ui.css
index 927bfc9b..8d1b6fcc 100644
--- a/libs/jquery-ui.css
+++ b/libs/jquery-ui.css
@@ -434,6 +434,9 @@ body .ui-dialog {
font-family: Arial,Helvetica,sans-serif;
font-size: 1em;
}
+.ui-widget button[class^="icon-"] {
+ padding: 1px 6px;
+}
.ui-widget.ui-widget-content {
border: 1px solid #5e4fa2;
color: #333333;
diff --git a/modules/coa-generator.js b/modules/coa-generator.js
index e2cf6493..1afc64c0 100644
--- a/modules/coa-generator.js
+++ b/modules/coa-generator.js
@@ -467,7 +467,7 @@
const emblemShape = document.getElementById("emblemShape").value;
if (emblemShape === "state" && state && pack.states[state].coa) return pack.states[state].coa.shield;
if (pack.cultures[culture].shield) return pack.cultures[culture].shield;
- console.error("Emblem shape is not defined on culture level", pack.cultures[culture]);
+ console.error("Shield shape is not defined on culture level", pack.cultures[culture]);
return "heater";
}
diff --git a/modules/save-and-load.js b/modules/save-and-load.js
index 3a42be49..f51b4786 100644
--- a/modules/save-and-load.js
+++ b/modules/save-and-load.js
@@ -1060,27 +1060,31 @@ function parseLoadedData(data) {
}
if (version < 1.5) {
- // v 1.5 added emblems
- emblems = viewbox.append("g").attr("id", "emblems").style("display", "none");
- emblems.append("g").attr("id", "burgEmblems");
- emblems.append("g").attr("id", "provinceEmblems");
- emblems.append("g").attr("id", "stateEmblems");
- regenerateEmblems();
- toggleEmblems();
-
// not need to store default styles from v 1.5
localStorage.removeItem("styleClean");
localStorage.removeItem("styleGloom");
localStorage.removeItem("styleAncient");
localStorage.removeItem("styleMonochrome");
+ // v 1.5 cultures has shield attribute
+ pack.cultures.forEach(culture => {
+ if (culture.removed) return;
+ culture.shield = Cultures.getRandomShield();
+ });
+
// v 1.5 added burg type value
pack.burgs.forEach(burg => {
if (!burg.i || burg.removed) return;
burg.type = BurgsAndStates.getType(burg.cell, burg.port);
});
- BurgsAndStates.getType(cell, false);
+ // v 1.5 added emblems
+ emblems = viewbox.insert("g", "#population").attr("id", "emblems").style("display", "none");
+ emblems.append("g").attr("id", "burgEmblems");
+ emblems.append("g").attr("id", "provinceEmblems");
+ emblems.append("g").attr("id", "stateEmblems");
+ regenerateEmblems();
+ toggleEmblems();
}
}()
diff --git a/modules/ui/emblems-editor.js b/modules/ui/emblems-editor.js
index d39c74a1..0d9b4b58 100644
--- a/modules/ui/emblems-editor.js
+++ b/modules/ui/emblems-editor.js
@@ -13,7 +13,7 @@ function editEmblem(type, id, el) {
updateElementSelectors(type, id, el);
$("#emblemEditor").dialog({
- title: "Edit Emblem", resizable: true, width: "18em", height: "auto",
+ title: "Edit Emblem", resizable: true, width: "18.2em", height: "auto",
position: {my: "left top", at: "left+10 top+10", of: "svg", collision: "fit"},
close: closeEmblemEditor
});
@@ -181,7 +181,7 @@ function editEmblem(type, id, el) {
function openInArmoria() {
const coa = el.coa && el.coa !== "custom" ? el.coa : {t1: "sable"};
const json = JSON.stringify(coa).replaceAll("#", "%23");
- const url = `http://azgaar.github.io/Armoria/?coa=${json}&from=FMG`;
+ const url = `https://azgaar.github.io/Armoria/?coa=${json}&from=FMG`;
openURL(url);
}
@@ -233,10 +233,10 @@ function editEmblem(type, id, el) {
buttons.classList.toggle("hidden");
}
- function download(format) {
+ async function download(format) {
const coa = document.getElementById(id);
const size = +emblemsDownloadSize.value;
- const url = getURL(coa, el.coa, size);
+ const url = await getURL(coa, size);
const link = document.createElement("a");
link.download = getFileName(`Emblem ${el.fullName || el.name}`) + "." + format;
@@ -247,7 +247,6 @@ function editEmblem(type, id, el) {
function downloadSVG(url, link) {
link.href = url;
link.click();
- window.setTimeout(() => window.URL.revokeObjectURL(URL), 5000);
}
function downloadRaster(format, url, link, size) {
@@ -264,25 +263,22 @@ function editEmblem(type, id, el) {
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
- const URL = canvas.toDataURL("image/" + format, .92);
- link.href = URL;
+ const dataURL = canvas.toDataURL("image/" + format, .92);
+ link.href = dataURL;
link.click();
- window.setTimeout(() => window.URL.revokeObjectURL(URL), 5000);
+ window.setTimeout(() => window.URL.revokeObjectURL(dataURL), 6000);
}
}
- function getURL(svg, coa, size) {
- const serialized = getSVG(svg, coa, size);
- const blob = new Blob([serialized], { type: 'image/svg+xml;charset=utf-8' });
- const url = window.URL.createObjectURL(blob);
- return url;
- }
-
- function getSVG(svg, size) {
+ async function getURL(svg, size) {
const clone = svg.cloneNode(true); // clone svg
clone.setAttribute("width", size);
clone.setAttribute("height", size);
- return (new XMLSerializer()).serializeToString(clone);
+ const serialized = (new XMLSerializer()).serializeToString(clone);
+ const blob = new Blob([serialized], {type: 'image/svg+xml;charset=utf-8'});
+ const url = window.URL.createObjectURL(blob);
+ window.setTimeout(() => window.URL.revokeObjectURL(url), 6000);
+ return url;
}
function downloadGallery() {