feat: burg groups - image icons

This commit is contained in:
Azgaar 2025-01-02 14:14:00 +01:00
parent c29f3b73e8
commit 2f53a635c8
27 changed files with 225 additions and 211 deletions

View file

@ -1,24 +0,0 @@
<svg viewBox="0 0 100 100">
<g fill="#EBE8DF" stroke="#4D3F36" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4" transform="translate(50 70) scale(1 1)">
<path d="M 4.439,0 L -18.531,0 L -18.994,-61.849 L 4.902,-61.849 L 4.439,0"/>
<path d="M 19.103,0 L 1.283,0 L 0.924,-45.875 L 19.462,-45.875 L 19.103,0"/>
<path fill="#4D3F36" d="M 10.193,-49.907 L 10.193,-54.973 L 11.638,-55.519 L 12.545,-55.52 L 13.396,-55.159 L 14.352,-54.496 L 15.413,-53.531 L 16.454,-52.885 L 17.476,-52.559 L 18.478,-52.553 L 19.462,-52.865 L 20.367,-53.044 L 21.194,-53.089 L 22.112,-52.943 L 23.623,-52.44 L 22.112,-52.373 L 21.194,-52.173 L 20.367,-51.816 L 19.462,-51.296 L 18.478,-50.612 L 17.476,-50.241 L 16.454,-50.181 L 15.413,-50.434 L 14.352,-50.999 L 13.396,-51.301 L 12.545,-51.342 L 11.638,-50.998 L 10.193,-49.907"/>
<path d="M 10.193,-45.875 L 10.193,-54.973"/>
<g stroke-width="0.6" stroke-linecap="mitter" fill="#4D3F36">
<path d="M -16.365,-58.727 L -16.365,-61.849 L -14.796,-61.849 L -14.796,-58.727 L -16.365,-58.727"/>
<path d="M -12.951,-58.727 L -12.951,-61.849 L -11.382,-61.849 L -11.382,-58.727 L -12.951,-58.727"/>
<path d="M -9.538,-58.727 L -9.538,-61.849 L -7.968,-61.849 L -7.968,-58.727 L -9.538,-58.727"/>
<path d="M -6.124,-58.727 L -6.124,-61.849 L -4.554,-61.849 L -4.554,-58.727 L -6.124,-58.727"/>
<path d="M -2.71,-58.727 L -2.71,-61.849 L -1.141,-61.849 L -1.141,-58.727 L -2.71,-58.727"/>
<path d="M 0.704,-58.727 L 0.704,-61.849 L 2.273,-61.849 L 2.273,-58.727 L 0.704,-58.727"/>
<path d="M 3.847,-42.752 L 3.847,-45.875 L 5.416,-45.875 L 5.416,-42.752 L 3.847,-42.752"/>
<path d="M 7.555,-42.752 L 7.555,-45.875 L 9.124,-45.875 L 9.124,-42.752 L 7.555,-42.752"/>
<path d="M 11.263,-42.752 L 11.263,-45.875 L 12.832,-45.875 L 12.832,-42.752 L 11.263,-42.752"/>
<path d="M 14.97,-42.752 L 14.97,-45.875 L 16.539,-45.875 L 16.539,-42.752 L 14.97,-42.752"/>
<path d="M -8.475,-52.589 L -6.906,-52.589 L -6.906,-55.16 L -7.181,-55.711 L -8.199,-55.711 L -8.475,-55.16 L -8.475,-52.589"/>
<path d="M 9.463,-36.614 L 11.032,-36.614 L 11.032,-39.185 L 10.756,-39.737 L 9.739,-39.737 L 9.463,-39.185 L 9.463,-36.614"/>
<path d="M -5,0 V -5 H -8 V 0"/>
</g>
</g>
<circle cx="50" cy="50" r="2" fill="red" />
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -648,14 +648,6 @@
> >
Emblems Emblems
</li> </li>
<li
id="toggleLabels"
data-tip="Labels: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style"
data-shortcut="L"
onclick="toggleLabels(event)"
>
<u>L</u>abels
</li>
<li <li
id="toggleBurgIcons" id="toggleBurgIcons"
data-tip="Burg icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style" data-tip="Burg icons: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style"
@ -664,6 +656,14 @@
> >
<u>I</u>cons <u>I</u>cons
</li> </li>
<li
id="toggleLabels"
data-tip="Labels: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style"
data-shortcut="L"
onclick="toggleLabels(event)"
>
<u>L</u>abels
</li>
<li <li
id="toggleMilitary" id="toggleMilitary"
data-tip="Military forces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style" data-tip="Military forces: click to toggle, drag to raise or lower the layer. Ctrl + click to edit layer style"
@ -1743,11 +1743,11 @@
</td> </td>
</tr> </tr>
<tr data-tip="Define a number of towns to be placed (if enough suitable land exists)"> <tr data-tip="Define a number of non-capital settlements to be placed (if enough suitable land exists)">
<td> <td>
<i data-locked="0" id="lock_manors" class="icon-lock-open"></i> <i data-locked="0" id="lock_manors" class="icon-lock-open"></i>
</td> </td>
<td>Towns number</td> <td>Burgs number</td>
<td> <td>
<input id="manorsInput" data-stored="manors" type="range" min="0" max="1000" step="1" value="1000" /> <input id="manorsInput" data-stored="manors" type="range" min="0" max="1000" step="1" value="1000" />
</td> </td>
@ -7961,6 +7961,45 @@
<circle fill="#EBE8DF" stroke-width="3" cx="0" cy="0" r="10" /> <circle fill="#EBE8DF" stroke-width="3" cx="0" cy="0" r="10" />
</symbol> </symbol>
<symbol id="icon-watabou-caravanserai" viewBox="0 0 100 100" width="1em" height="1em" overflow="visible">
<g fill="#E59189" stroke="#4D3F36" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4" transform="translate(21 -2) scale(2 2)">
<path d="M -7.316,1.248 L -24.272,1.248 L -22.919,-10.943 L -15.456,-10.943 L -7.993,-10.943 L -7.316,1.248 M 3.531,1.248 L -7.316,1.248 L -7.993,-10.943 L -15.456,-10.943 L -12.913,-10.943 L -10.371,-10.943 L -7.828,-10.943 L -5.286,-10.943 L 2.177,-10.943 L 3.531,1.248 M -7.993,-10.943 L 2.177,-10.943" fill="#EBE8DF"/>
<path d="M -14.585,1.248 L -16.326,1.248 L -16.326,-2.59 L -16.15,-2.943 L -14.761,-2.943 L -14.585,-2.59 L -14.585,1.248" fill="#4D3F36"/>
<path d="M -10.371,-14.623 L -10.371,-14.623 L -7.542,-14.187 L -4.975,-12.922 L -2.908,-10.943 L -17.833,-10.943 L -15.766,-12.922 L -13.199,-14.187 L -10.371,-14.623"/>
</g>
<circle fill="#EBE8DF" stroke-width="3" cx="0" cy="0" r="10" />
</symbol>
<symbol id="icon-watabou-monastery" viewBox="0 0 100 100" width="1em" height="1em" overflow="visible">
<g fill="#E59189" stroke="#4D3F36" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4" transform="translate(20 -10) scale(2 2)">
<g transform="translate(0 6)">
<path d="M -9.764,-0.93 L -29.859,-0.93 L -29.954,-10.141 L -25.873,-31.202 L -20.814,-31.292 L -15.755,-31.322 L -10.695,-31.292 L -5.636,-31.202 L -9.716,-10.141 L -9.764,-0.93 M -29.954,-10.141 L -9.716,-10.141 M -1.651,-0.93 L -9.764,-0.93 L -9.716,-10.141 L -5.636,-31.202 L -1.556,-10.141 L -1.651,-0.93" fill="#EBE8DF" stroke="#4D3F36"/>
<path d="M -9.716,-10.141 L -29.954,-10.141 L -25.873,-31.202 L -20.814,-31.292 L -15.755,-31.322 L -10.695,-31.292 L -5.636,-31.202 L -9.716,-10.141"/>
<path stroke="none" d="M -23.484,-0.93 L -26.304,-0.93 L -26.304,-8.18 L -26.046,-8.696 L -23.742,-8.696 L -23.484,-8.18 L -23.484,-0.93" fill="#4D3F36"/>
<path stroke="none" d="M -18.425,-0.93 L -21.245,-0.93 L -21.245,-8.18 L -20.987,-8.696 L -18.683,-8.696 L -18.425,-8.18 L -18.425,-0.93" fill="#4D3F36"/>
<path stroke="none" d="M -13.366,-0.93 L -16.185,-0.93 L -16.185,-8.18 L -15.928,-8.696 L -13.623,-8.696 L -13.366,-8.18 L -13.366,-0.93" fill="#4D3F36"/>
</g>
<path d="M 0.927,5.327 L -10.543,5.327 L -10.815,-20.976 L -4.876,-33.337 L 1.063,-20.976 L 0.927,5.327 M 8.952,5.327 L 0.927,5.327 L 1.063,-20.976 L -4.876,-33.337 L -2.836,-33.39 L -0.795,-33.408 L 1.245,-33.39 L 3.285,-33.337 L 9.224,-20.976 L 8.952,5.327" fill="#EBE8DF" stroke="#4D3F36"/>
<path d="M 9.224,-20.976 L 1.063,-20.976 L -4.876,-33.337 L -2.836,-33.39 L -0.795,-33.408 L 1.245,-33.39 L 3.285,-33.337 L 9.224,-20.976"/>
<path stroke="none" d="M -5.445,5.327 L -8.265,5.327 L -8.265,-1.923 L -8.007,-2.439 L -5.703,-2.439 L -5.445,-1.923 L -5.445,5.327" fill="#4D3F36"/>
<path stroke="none" d="M -1.486,5.327 L -4.306,5.327 L -4.306,-1.923 L -4.048,-2.439 L -1.744,-2.439 L -1.486,-1.923 L -1.486,5.327" fill="#4D3F36"/>
<circle cx="-5" cy="-20" r="1.6" fill="#4D3F36"/>
</g>
<circle fill="#EBE8DF" stroke-width="3" cx="0" cy="0" r="10" />
</symbol>
<symbol id="icon-watabou-post" viewBox="0 0 100 100" width="1em" height="1em" overflow="visible">
<g fill="#E59189" stroke="#4D3F36" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.4" transform="translate(-10 -10) scale(2 2)">
<path d="M 12.321,4.738 L -8.119,4.738 L -8.522,-8.706 L 2,-23.172 L 12.522,-8.706 L 12.321,4.738 M 22.814,4.738 L 12.321,4.738 L 12.522,-8.706 L 2,-23.172 L 4.674,-22.56 L 7.347,-22.356 L 10.021,-22.56 L 12.695,-23.172 L 23.217,-8.706 L 22.814,4.738" fill="#EBE8DF"/>
<path d="M 23.217,-8.706 L 12.522,-8.706 L 2,-23.172 L 4.674,-22.56 L 7.347,-22.356 L 10.021,-22.56 L 12.695,-23.172 L 23.217,-8.706" />
<path d="M -4,-8 v12 M 9,-8 v12"/>
<path d="M -10,-4.6 h24 l-2,-4 h-20 z"/>
<path d="M 4.5,4.5 V -1 H 0 V 4" fill="#4D3F36"/>
<circle cx="2.2" cy="-13" r="1" fill="#4D3F36"/>
</g>
<circle fill="#EBE8DF" stroke-width="3" cx="0" cy="0" r="10" />
</symbol>
<symbol id="icon-anchor" viewBox="0 0 30 28"> <symbol id="icon-anchor" viewBox="0 0 30 28">
<path <path
d="M15 4c0-0.547-0.453-1-1-1s-1 0.453-1 1 0.453 1 1 1 1-0.453 1-1zM28 18.5v5.5c0 0.203-0.125 0.391-0.313 0.469-0.063 0.016-0.125 0.031-0.187 0.031-0.125 0-0.25-0.047-0.359-0.141l-1.453-1.453c-2.453 2.953-6.859 4.844-11.688 4.844s-9.234-1.891-11.688-4.844l-1.453 1.453c-0.094 0.094-0.234 0.141-0.359 0.141-0.063 0-0.125-0.016-0.187-0.031-0.187-0.078-0.313-0.266-0.313-0.469v-5.5c0-0.281 0.219-0.5 0.5-0.5h5.5c0.203 0 0.391 0.125 0.469 0.313s0.031 0.391-0.109 0.547l-1.563 1.563c1.406 1.891 4.109 3.266 7.203 3.687v-10.109h-3c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h3v-2.547c-1.188-0.688-2-1.969-2-3.453 0-2.203 1.797-4 4-4s4 1.797 4 4c0 1.484-0.812 2.766-2 3.453v2.547h3c0.547 0 1 0.453 1 1v2c0 0.547-0.453 1-1 1h-3v10.109c3.094-0.422 5.797-1.797 7.203-3.687l-1.563-1.563c-0.141-0.156-0.187-0.359-0.109-0.547s0.266-0.313 0.469-0.313h5.5c0.281 0 0.5 0.219 0.5 0.5z" d="M15 4c0-0.547-0.453-1-1-1s-1 0.453-1 1 0.453 1 1 1 1-0.453 1-1zM28 18.5v5.5c0 0.203-0.125 0.391-0.313 0.469-0.063 0.016-0.125 0.031-0.187 0.031-0.125 0-0.25-0.047-0.359-0.141l-1.453-1.453c-2.453 2.953-6.859 4.844-11.688 4.844s-9.234-1.891-11.688-4.844l-1.453 1.453c-0.094 0.094-0.234 0.141-0.359 0.141-0.063 0-0.125-0.016-0.187-0.031-0.187-0.078-0.313-0.266-0.313-0.469v-5.5c0-0.281 0.219-0.5 0.5-0.5h5.5c0.203 0 0.391 0.125 0.469 0.313s0.031 0.391-0.109 0.547l-1.563 1.563c1.406 1.891 4.109 3.266 7.203 3.687v-10.109h-3c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h3v-2.547c-1.188-0.688-2-1.969-2-3.453 0-2.203 1.797-4 4-4s4 1.797 4 4c0 1.484-0.812 2.766-2 3.453v2.547h3c0.547 0 1 0.453 1 1v2c0 0.547-0.453 1-1 1h-3v10.109c3.094-0.422 5.797-1.797 7.203-3.687l-1.563-1.563c-0.141-0.156-0.187-0.359-0.109-0.547s0.266-0.313 0.469-0.313h5.5c0.281 0 0.5 0.219 0.5 0.5z"

View file

@ -86,7 +86,7 @@ window.Burgs = (() => {
const sorted = populatedCells.sort((a, b) => score[b] - score[a]); const sorted = populatedCells.sort((a, b) => score[b] - score[a]);
const burgsNumber = getTownsNumber(); const burgsNumber = getTownsNumber();
let spacing = (graphWidth + graphHeight) / 150 / (burgsNumber ** 0.7 / 66); // min distance between towns let spacing = (graphWidth + graphHeight) / 150 / (burgsNumber ** 0.7 / 66); // min distance between town
for (let added = 0; added < burgsNumber && spacing > 1; ) { for (let added = 0; added < burgsNumber && spacing > 1; ) {
for (let i = 0; added < burgsNumber && i < sorted.length; i++) { for (let i = 0; added < burgsNumber && i < sorted.length; i++) {
@ -261,24 +261,24 @@ window.Burgs = (() => {
} }
const getDefaultGroups = () => [ const getDefaultGroups = () => [
{name: "capitals", active: true, order: 9, features: {capital: true}, preview: "watabou-city"}, {name: "capital", active: true, order: 9, features: {capital: true}, preview: "watabou-city"},
{name: "cities", active: true, order: 8, percentile: 90, min: 5, preview: "watabou-city"}, {name: "city", active: true, order: 8, percentile: 90, min: 5, preview: "watabou-city"},
{ {
name: "forts", name: "fort",
active: true, active: true,
features: {citadel: true, walls: false, plaza: false, port: false}, features: {citadel: true, walls: false, plaza: false, port: false},
order: 6, order: 6,
max: 1 max: 1
}, },
{ {
name: "monasteries", name: "monastery",
active: true, active: true,
features: {temple: true, walls: false, plaza: false, port: false}, features: {temple: true, walls: false, plaza: false, port: false},
order: 5, order: 5,
max: 0.8 max: 0.8
}, },
{ {
name: "caravanserais", name: "caravanserai",
active: true, active: true,
features: {port: false, plaza: true}, features: {port: false, plaza: true},
order: 4, order: 4,
@ -286,16 +286,15 @@ window.Burgs = (() => {
biomes: [1, 2, 3] biomes: [1, 2, 3]
}, },
{ {
name: "trading_posts", name: "trading_post",
active: true, active: true,
order: 3, order: 3,
features: {plaza: true}, features: {plaza: true},
max: 0.8, max: 0.8,
biomes: [5, 6, 7, 8, 9, 10, 11, 12], biomes: [5, 6, 7, 8, 9, 10, 11, 12]
preview: "watabou-dwelling"
}, },
{ {
name: "villages", name: "village",
active: true, active: true,
order: 2, order: 2,
min: 0.1, min: 0.1,
@ -304,14 +303,14 @@ window.Burgs = (() => {
preview: "watabou-village" preview: "watabou-village"
}, },
{ {
name: "hamlets", name: "hamlet",
active: true, active: true,
order: 1, order: 1,
features: {walls: false, plaza: false}, features: {walls: false, plaza: false},
max: 0.1, max: 0.1,
preview: "watabou-village" preview: "watabou-village"
}, },
{name: "towns", active: true, order: 7, isDefault: true, preview: "watabou-city"} {name: "town", active: true, order: 7, isDefault: true, preview: "watabou-city"}
]; ];
function defineGroup(burg, populations) { function defineGroup(burg, populations) {

View file

@ -603,7 +603,7 @@ function stateRemove(stateId) {
burg.state = 0; burg.state = 0;
if (burg.capital) { if (burg.capital) {
burg.capital = 0; burg.capital = 0;
moveBurgToGroup(burg.i, "towns"); moveBurgToGroup(burg.i, "town");
} }
} }
}); });
@ -1192,7 +1192,7 @@ function addState() {
// turn burg into a capital // turn burg into a capital
burgs[burg].capital = 1; burgs[burg].capital = 1;
burgs[burg].state = newState; burgs[burg].state = newState;
moveBurgToGroup(burg, "cities"); moveBurgToGroup(burg, "city");
if (d3.event.shiftKey === false) exitAddStateMode(); if (d3.event.shiftKey === false) exitAddStateMode();
@ -1382,7 +1382,7 @@ function openStateMergeDialog() {
pack.burgs.forEach(b => { pack.burgs.forEach(b => {
if (statesToMerge.includes(b.state)) { if (statesToMerge.includes(b.state)) {
if (b.capital) { if (b.capital) {
moveBurgToGroup(b.i, "towns"); moveBurgToGroup(b.i, "town");
b.capital = 0; b.capital = 0;
} }
b.state = rulingStateId; b.state = rulingStateId;

View file

@ -615,12 +615,12 @@ async function parseLoadedData(data, mapVersion) {
console.error( console.error(
`[Data integrity] Neutral burgs (${capitalBurgs `[Data integrity] Neutral burgs (${capitalBurgs
.map(b => b.i) .map(b => b.i)
.join(", ")}) marked as capitals. Moving them to towns` .join(", ")}) marked as capitals. Moving them to town`
); );
capitalBurgs.forEach(burg => { capitalBurgs.forEach(burg => {
burg.capital = 0; burg.capital = 0;
moveBurgToGroup(burg.i, "towns"); moveBurgToGroup(burg.i, "town");
}); });
return; return;
@ -629,13 +629,13 @@ async function parseLoadedData(data, mapVersion) {
if (capitalBurgs.length > 1) { if (capitalBurgs.length > 1) {
const message = `[Data integrity] State ${state.i} has multiple capitals (${capitalBurgs const message = `[Data integrity] State ${state.i} has multiple capitals (${capitalBurgs
.map(b => b.i) .map(b => b.i)
.join(", ")}) assigned. Keeping the first as capital and moving others to towns`; .join(", ")}) assigned. Keeping the first as capital and moving others to town`;
ERROR && console.error(message); ERROR && console.error(message);
capitalBurgs.forEach((burg, i) => { capitalBurgs.forEach((burg, i) => {
if (!i) return; if (!i) return;
burg.capital = 0; burg.capital = 0;
moveBurgToGroup(burg.i, "towns"); moveBurgToGroup(burg.i, "town");
}); });
return; return;
@ -645,7 +645,7 @@ async function parseLoadedData(data, mapVersion) {
ERROR && ERROR &&
console.error(`[Data integrity] State ${state.i} has no capital. Assigning the first burg as capital`); console.error(`[Data integrity] State ${state.i} has no capital. Assigning the first burg as capital`);
stateBurgs[0].capital = 1; stateBurgs[0].capital = 1;
moveBurgToGroup(stateBurgs[0].i, "cities"); moveBurgToGroup(stateBurgs[0].i, "city");
} }
}); });

View file

@ -1203,7 +1203,7 @@ window.Markers = (function () {
const burgName = burgs[cells.burg[cell]].name; const burgName = burgs[cells.burg[cell]].name;
const name = `${burgName} Portal`; const name = `${burgName} Portal`;
const legend = `An element of the magic portal system connecting major cities. The portals were installed centuries ago, but still work fine.`; const legend = `An element of the magic portal system connecting major city. The portals were installed centuries ago, but still work fine.`;
notes.push({id, name, legend}); notes.push({id, name, legend});
} }

View file

@ -36,7 +36,7 @@ function drawBurgIcons() {
// capitalAnchors // capitalAnchors
// .selectAll("use") // .selectAll("use")
// .data(capitals.filter(c => c.port)) // .data(capital.filter(c => c.port))
// .enter() // .enter()
// .append("use") // .append("use")
// .attr("xlink:href", "#icon-anchor") // .attr("xlink:href", "#icon-anchor")
@ -62,7 +62,7 @@ function drawBurgIcon(burg) {
} }
function createIconGroups() { function createIconGroups() {
const defaultStyle = style.burgIcons.towns || Object.values(style.burgIcons)[0]; const defaultStyle = style.burgIcons.town || Object.values(style.burgIcons)[0];
// save existing styles and remove all groups // save existing styles and remove all groups
document.querySelectorAll("g#burgIcons > g").forEach(group => { document.querySelectorAll("g#burgIcons > g").forEach(group => {

View file

@ -11,8 +11,8 @@ function drawBurgLabels() {
const labelGroup = burgLabels.select("#" + name); const labelGroup = burgLabels.select("#" + name);
if (labelGroup.empty()) continue; if (labelGroup.empty()) continue;
const dx = labelGroup.attr("data-dx"); const dx = labelGroup.attr("data-dx") || 0;
const dy = labelGroup.attr("data-dy"); const dy = labelGroup.attr("data-dy") || 0;
labelGroup labelGroup
.selectAll("text") .selectAll("text")
@ -33,8 +33,8 @@ function drawBurgLabels() {
function drawBurgLabel(burg) { function drawBurgLabel(burg) {
const group = burgLabels.select("#" + burg.group); const group = burgLabels.select("#" + burg.group);
const dx = labelGroup.attr("data-dx"); const dx = labelGroup.attr("data-dx") || 0;
const dy = labelGroup.attr("data-dy"); const dy = labelGroup.attr("data-dy") || 0;
group group
.append("text") .append("text")
@ -48,7 +48,7 @@ function drawBurgLabel(burg) {
} }
function createLabelGroups() { function createLabelGroups() {
const defaultStyle = style.burgLabels.towns || Object.values(style.burgLabels)[0]; const defaultStyle = style.burgLabels.town || Object.values(style.burgLabels)[0];
// save existing styles and remove all groups // save existing styles and remove all groups
document.querySelectorAll("g#burgLabels > g").forEach(group => { document.querySelectorAll("g#burgLabels > g").forEach(group => {

View file

@ -298,10 +298,10 @@ window.ThreeD = (function () {
raycaster.set(new THREE.Vector3(0, 1000, 0), new THREE.Vector3(0, -1, 0)); raycaster.set(new THREE.Vector3(0, 1000, 0), new THREE.Vector3(0, -1, 0));
const states = viewbox.select("#labels #states"); const states = viewbox.select("#labels #states");
const cities = burgLabels.select("#cities"); const city = burgLabels.select("#city");
const towns = burgLabels.select("#towns"); const town = burgLabels.select("#town");
const city_icons = burgIcons.select("#cities"); const city_icons = burgIcons.select("#city");
const town_icons = burgIcons.select("#towns"); const town_icons = burgIcons.select("#town");
const stateOptions = { const stateOptions = {
font: states.attr("font-family"), font: states.attr("font-family"),
@ -312,25 +312,25 @@ window.ThreeD = (function () {
}; };
const cityOptions = { const cityOptions = {
font: cities.attr("font-family"), font: city.attr("font-family"),
size: +cities.attr("data-size"), size: +city.attr("data-size"),
color: cities.attr("fill"), color: city.attr("fill"),
elevation: 10, elevation: 10,
quality: 20, quality: 20,
iconSize: 1, iconSize: 1,
iconColor: "#666", iconColor: "#666",
line: 10 - cities.attr("data-size") / 2 line: 10 - city.attr("data-size") / 2
}; };
const townOptions = { const townOptions = {
font: towns.attr("font-family"), font: townttr("font-family"),
size: +towns.attr("data-size"), size: +town.attr("data-size"),
color: towns.attr("fill"), color: town.attr("fill"),
elevation: 5, elevation: 5,
quality: 30, quality: 30,
iconSize: 0.5, iconSize: 0.5,
iconColor: "#666", iconColor: "#666",
line: 5 - towns.attr("data-size") / 2 line: 5 - town.attr("data-size") / 2
}; };
const city_icon_material = new THREE.MeshPhongMaterial({color: cityOptions.iconColor}); const city_icon_material = new THREE.MeshPhongMaterial({color: cityOptions.iconColor});

View file

@ -387,7 +387,7 @@ function editBurg(id) {
} }
} }
// in °C, array from -1 °C; source: https://en.wikipedia.org/wiki/List_of_cities_by_average_temperature // in °C, array from -1 °C; source: https://en.wikipedia.org/wiki/List_of_city_by_average_temperature
const meanTempCityMap = { const meanTempCityMap = {
"-5": "Snag (Yukon)", "-5": "Snag (Yukon)",
"-4": "Yellowknife (Canada)", "-4": "Yellowknife (Canada)",

View file

@ -163,9 +163,9 @@ function moveAllBurgsToGroup(fromGroup, toGroup) {
function addBurgsGroup(group) { function addBurgsGroup(group) {
if (document.querySelector(`#burgLabels > #${group}`)) return; if (document.querySelector(`#burgLabels > #${group}`)) return;
const labelCopy = document.querySelector("#burgLabels > #towns").cloneNode(false); const labelCopy = document.querySelector("#burgLabels > #town").cloneNode(false);
const iconCopy = document.querySelector("#burgIcons > #towns").cloneNode(false); const iconCopy = document.querySelector("#burgIcons > #town").cloneNode(false);
const anchorCopy = document.querySelector("#anchors > #towns").cloneNode(false); const anchorCopy = document.querySelector("#anchors > #town").cloneNode(false);
// FIXME: using the same id is against the spec! // FIXME: using the same id is against the spec!
document.querySelector("#burgLabels").appendChild(labelCopy).id = group; document.querySelector("#burgLabels").appendChild(labelCopy).id = group;
@ -209,8 +209,8 @@ function toggleCapital(burgId) {
burgs[burgId].capital = 1; burgs[burgId].capital = 1;
burgs[prevCapitalId].capital = 0; burgs[prevCapitalId].capital = 0;
moveBurgToGroup(burgId, "cities"); moveBurgToGroup(burgId, "city");
moveBurgToGroup(prevCapitalId, "towns"); moveBurgToGroup(prevCapitalId, "town");
} }
function togglePort(burg) { function togglePort(burg) {
@ -227,7 +227,7 @@ function togglePort(burg) {
if (!haven) tip("Port haven is not found, system won't be able to make a searoute", false, "warn"); if (!haven) tip("Port haven is not found, system won't be able to make a searoute", false, "warn");
b.port = port; b.port = port;
const g = b.capital ? "cities" : "towns"; const g = b.capital ? "city" : "town";
const group = anchors.select("g#" + g); const group = anchors.select("g#" + g);
const size = +group.attr("size"); const size = +group.attr("size");
group group

View file

@ -167,7 +167,7 @@ function showMapTooltip(point, e, i, g) {
if (burgId) { if (burgId) {
const burg = pack.burgs[burgId]; const burg = pack.burgs[burgId];
const population = si(burg.population * populationRate * urbanization); const population = si(burg.population * populationRate * urbanization);
tip(`${burg.name}. Population: ${population}. Group: ${burg.group}. Click to edit`); tip(`${burg.name} ${burg.group}. Population: ${population}. Click to edit`);
if (burgsOverview?.offsetParent) highlightEditorLine(burgsOverview, burgId, 5000); if (burgsOverview?.offsetParent) highlightEditorLine(burgsOverview, burgId, 5000);
return; return;
} }

View file

@ -392,7 +392,7 @@ function changeEmblemShape(emblemShape) {
function changeStatesNumber(value) { function changeStatesNumber(value) {
byId("statesNumber").style.color = +value ? null : "#b12117"; byId("statesNumber").style.color = +value ? null : "#b12117";
burgLabels.select("#capitals").attr("data-size", Math.max(rn(6 - value / 20), 3)); burgLabels.select("#capital").attr("data-size", Math.max(rn(6 - value / 20), 3));
labels.select("#countries").attr("data-size", Math.max(rn(18 - value / 6), 4)); labels.select("#countries").attr("data-size", Math.max(rn(18 - value / 6), 4));
} }

View file

@ -297,7 +297,7 @@ function editProvinces() {
// turn province burg into a capital // turn province burg into a capital
burgs[burgId].capital = 1; burgs[burgId].capital = 1;
moveBurgToGroup(burgId, "cities"); moveBurgToGroup(burgId, "city");
// move all burgs to a new state // move all burgs to a new state
province.burgs.forEach(b => (burgs[b].state = newStateId)); province.burgs.forEach(b => (burgs[b].state = newStateId));

View file

@ -211,12 +211,12 @@ function recreateStates() {
return null; return null;
} }
// turn all old capitals into towns, except for the capitals of locked states // turn all old capitals into town, except for the capitals of locked states
for (const burg of validBurgs) { for (const burg of validBurgs) {
if (!burg.capital) continue; if (!burg.capital) continue;
if (lockedStatesCapitals.includes(burg.i)) continue; if (lockedStatesCapitals.includes(burg.i)) continue;
moveBurgToGroup(burg.i, "towns"); moveBurgToGroup(burg.i, "town");
burg.capital = 0; burg.capital = 0;
} }
@ -304,7 +304,7 @@ function recreateStates() {
burg.capital = 1; burg.capital = 1;
capital = burg; capital = burg;
capitalsTree.add([x, y]); capitalsTree.add([x, y]);
moveBurgToGroup(burg.i, "cities"); moveBurgToGroup(burg.i, "city");
break; break;
} }
@ -402,7 +402,7 @@ function regenerateBurgs() {
const burgsCount = const burgsCount =
(manorsInput.value === "1000" ? rn(sorted.length / 5 / (grid.points.length / 10000) ** 0.8) : +manorsInput.value) + (manorsInput.value === "1000" ? rn(sorted.length / 5 / (grid.points.length / 10000) ** 0.8) : +manorsInput.value) +
existingStatesCount; existingStatesCount;
const spacing = (graphWidth + graphHeight) / 150 / (burgsCount ** 0.7 / 66); // base min distance between towns const spacing = (graphWidth + graphHeight) / 150 / (burgsCount ** 0.7 / 66); // base min distance between town
for (let i = 0; i < sorted.length && newBurgs.length < burgsCount; i++) { for (let i = 0; i < sorted.length && newBurgs.length < burgsCount; i++) {
const id = newBurgs.length; const id = newBurgs.length;
@ -438,7 +438,7 @@ function regenerateBurgs() {
s.center = pack.burgs[burgId].cell; s.center = pack.burgs[burgId].cell;
pack.burgs[burgId].capital = 1; pack.burgs[burgId].capital = 1;
pack.burgs[burgId].state = s.i; pack.burgs[burgId].state = s.i;
moveBurgToGroup(burgId, "cities"); moveBurgToGroup(burgId, "city");
}); });
features.forEach(f => { features.forEach(f => {

View file

@ -328,17 +328,17 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > g#capitals": { "#burgLabels > g#capital": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 7, "data-size": 6,
"font-size": 7, "font-size": 6,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.6 "data-dy": 0.8
}, },
"#burgIcons > g#capitals": { "#burgIcons > g#capital": {
"data-icon": "#icon-watabou-capital", "data-icon": "#icon-watabou-capital",
"opacity": 1, "opacity": 1,
"fill": "#E59189", "fill": "#E59189",
@ -350,17 +350,17 @@
"stroke-linecap": "round", "stroke-linecap": "round",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#cities": { "#burgLabels > g#city": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 5, "data-size": 5,
"font-size": 5, "font-size": 5,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.6 "data-dy": 0.8
}, },
"#burgIcons > g#cities": { "#burgIcons > g#city": {
"data-icon": "#icon-watabou-city", "data-icon": "#icon-watabou-city",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -372,17 +372,17 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#forts": { "#burgLabels > g#fort": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 3, "data-size": 3,
"font-size": 3, "font-size": 3,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#forts": { "#burgIcons > g#fort": {
"data-icon": "#icon-watabou-fort", "data-icon": "#icon-watabou-fort",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -394,18 +394,18 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#monasteries": { "#burgLabels > g#monastery": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 2, "data-size": 2,
"font-size": 2, "font-size": 2,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#monasteries": { "#burgIcons > g#monastery": {
"data-icon": "#icon-triangle", "data-icon": "#icon-watabou-monastery",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 1, "fill-opacity": 1,
@ -416,18 +416,18 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#caravanserais": { "#burgLabels > g#caravanserai": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 2, "data-size": 2,
"font-size": 2, "font-size": 2,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#caravanserais": { "#burgIcons > g#caravanserai": {
"data-icon": "#icon-triangle", "data-icon": "#icon-watabou-caravanserai",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 1, "fill-opacity": 1,
@ -438,18 +438,18 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#trading_posts": { "#burgLabels > g#trading_post": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 2, "data-size": 2,
"font-size": 2, "font-size": 2,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#trading_posts": { "#burgIcons > g#trading_post": {
"data-icon": "#icon-triangle", "data-icon": "#icon-watabou-post",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 1, "fill-opacity": 1,
@ -460,17 +460,17 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#villages": { "#burgLabels > g#village": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 3, "data-size": 3,
"font-size": 3, "font-size": 3,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#villages": { "#burgIcons > g#village": {
"data-icon": "#icon-watabou-village", "data-icon": "#icon-watabou-village",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -482,19 +482,19 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#hamlets": { "#burgLabels > g#hamlet": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 2, "data-size": 2,
"font-size": 2, "font-size": 2,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#hamlets": { "#burgIcons > g#hamlet": {
"data-icon": "#icon-watabou-hamlet", "data-icon": "#icon-watabou-hamlet",
"opacity": 1, "opacity": 0.9,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 1, "fill-opacity": 1,
"font-size": 2, "font-size": 2,
@ -504,17 +504,17 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#towns": { "#burgLabels > g#town": {
"opacity": 1, "opacity": 0.9,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
"letter-spacing": 0, "letter-spacing": 0,
"data-size": 3, "data-size": 3,
"font-size": 3, "font-size": 3,
"font-family": "Great Vibes", "font-family": "UnifrakturMaguntia",
"data-dy": 0.8 "data-dy": 0.8
}, },
"#burgIcons > g#towns": { "#burgIcons > g#town": {
"data-icon": "#icon-watabou-town", "data-icon": "#icon-watabou-town",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",

View file

@ -328,7 +328,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -337,7 +337,7 @@
"font-size": 5, "font-size": 5,
"font-family": "Amarante" "font-family": "Amarante"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "round" "stroke-linecap": "round"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2, "size": 2,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 4, "font-size": 4,
"font-family": "Amarante" "font-family": "Amarante"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "round" "stroke-linecap": "round"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1, "size": 1,

View file

@ -330,7 +330,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#414141", "fill": "#414141",
"style": "text-shadow: white 0 0 4px", "style": "text-shadow: white 0 0 4px",
@ -339,7 +339,7 @@
"font-size": 7, "font-size": 7,
"font-family": "Arial" "font-family": "Arial"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -349,14 +349,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2, "size": 2,
"stroke": "#303030", "stroke": "#303030",
"stroke-width": 1.7 "stroke-width": 1.7
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#414141", "fill": "#414141",
"style": "text-shadow: none", "style": "text-shadow: none",
@ -365,7 +365,7 @@
"font-size": 3, "font-size": 3,
"font-family": "Arial" "font-family": "Arial"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -375,7 +375,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1, "size": 1,

View file

@ -328,7 +328,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -337,7 +337,7 @@
"font-size": 8, "font-size": 8,
"font-family": "Orbitron" "font-family": "Orbitron"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 4, "size": 4,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1 "stroke-width": 1
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 3, "font-size": 3,
"font-family": "Orbitron" "font-family": "Orbitron"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 0.95, "opacity": 0.95,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1.6, "size": 1.6,

View file

@ -317,7 +317,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -326,7 +326,7 @@
"font-size": 7, "font-size": 7,
"font-family": "Lugrasimo" "font-family": "Lugrasimo"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 0.7, "opacity": 0.7,
"fill": "#000000", "fill": "#000000",
"size": 1.75, "size": 1.75,
@ -335,14 +335,14 @@
"stroke-dasharray": 0, "stroke-dasharray": 0,
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 3.5, "size": 3.5,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -351,7 +351,7 @@
"font-size": 5, "font-size": 5,
"font-family": "Lugrasimo" "font-family": "Lugrasimo"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 0.7, "opacity": 0.7,
"fill": "#000000", "fill": "#000000",
"size": 1.25, "size": 1.25,
@ -360,7 +360,7 @@
"stroke-dasharray": 0, "stroke-dasharray": 0,
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2, "size": 2,

View file

@ -328,7 +328,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > g#capitals": { "#burgLabels > g#capital": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -338,7 +338,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#capitals": { "#burgIcons > g#capital": {
"data-icon": "#icon-square", "data-icon": "#icon-square",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -350,7 +350,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#cities": { "#burgLabels > g#city": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -360,7 +360,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#cities": { "#burgIcons > g#city": {
"data-icon": "#icon-circle", "data-icon": "#icon-circle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -372,7 +372,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#forts": { "#burgLabels > g#fort": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -382,7 +382,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#forts": { "#burgIcons > g#fort": {
"data-icon": "#icon-triangle", "data-icon": "#icon-triangle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -394,7 +394,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#monasteries": { "#burgLabels > g#monastery": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -404,7 +404,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#monasteries": { "#burgIcons > g#monastery": {
"data-icon": "#icon-triangle", "data-icon": "#icon-triangle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -416,7 +416,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#caravanserais": { "#burgLabels > g#caravanserai": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -426,7 +426,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#caravanserais": { "#burgIcons > g#caravanserai": {
"data-icon": "#icon-triangle", "data-icon": "#icon-triangle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -438,7 +438,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#trading_posts": { "#burgLabels > g#trading_post": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -448,7 +448,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#trading_posts": { "#burgIcons > g#trading_post": {
"data-icon": "#icon-triangle", "data-icon": "#icon-triangle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -460,7 +460,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#villages": { "#burgLabels > g#village": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -470,7 +470,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#villages": { "#burgIcons > g#village": {
"data-icon": "#icon-circle", "data-icon": "#icon-circle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -482,7 +482,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#hamlets": { "#burgLabels > g#hamlet": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -492,7 +492,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#hamlets": { "#burgIcons > g#hamlet": {
"data-icon": "#icon-circle", "data-icon": "#icon-circle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
@ -504,7 +504,7 @@
"stroke-linecap": "butt", "stroke-linecap": "butt",
"stroke-linejoin": "round" "stroke-linejoin": "round"
}, },
"#burgLabels > g#towns": { "#burgLabels > g#town": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -514,7 +514,7 @@
"font-family": "Almendra SC", "font-family": "Almendra SC",
"data-dy": -0.4 "data-dy": -0.4
}, },
"#burgIcons > g#towns": { "#burgIcons > g#town": {
"data-icon": "#icon-circle", "data-icon": "#icon-circle",
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",

View file

@ -331,7 +331,7 @@
"data-columns": 8 "data-columns": 8
}, },
"#legendBox": {}, "#legendBox": {},
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0 0 2px", "style": "text-shadow: white 0 0 2px",
@ -340,7 +340,7 @@
"font-size": 8, "font-size": 8,
"font-family": "Underdog" "font-family": "Underdog"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -350,14 +350,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 0.8, "opacity": 0.8,
"fill": "#ffffff", "fill": "#ffffff",
"size": 4, "size": 4,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1 "stroke-width": 1
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: none", "style": "text-shadow: none",
@ -366,7 +366,7 @@
"font-size": 4, "font-size": 4,
"font-family": "Underdog" "font-family": "Underdog"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 0.95, "opacity": 0.95,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -376,7 +376,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1.6, "size": 1.6,

View file

@ -328,7 +328,7 @@
"data-y": 62.98, "data-y": 62.98,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#3a3a3a", "fill": "#3a3a3a",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -337,7 +337,7 @@
"font-size": 8, "font-size": 8,
"font-family": "IM Fell English" "font-family": "IM Fell English"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "0.5 0.25", "stroke-dasharray": "0.5 0.25",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 5.5, "size": 5.5,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 4, "font-size": 4,
"font-family": "IM Fell English" "font-family": "IM Fell English"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2.2, "size": 2.2,

View file

@ -324,7 +324,7 @@
"data-columns": 8 "data-columns": 8
}, },
"#legendBox": {}, "#legendBox": {},
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -333,7 +333,7 @@
"font-size": 7, "font-size": 7,
"font-family": "Courier New" "font-family": "Courier New"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -343,14 +343,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2, "size": 2,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#000000", "fill": "#000000",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -359,7 +359,7 @@
"font-size": 4, "font-size": 4,
"font-family": "Courier New" "font-family": "Courier New"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -369,7 +369,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1, "size": 1,

View file

@ -328,7 +328,7 @@
"data-y": 99.37, "data-y": 99.37,
"data-columns": null "data-columns": null
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#dbdbe1", "fill": "#dbdbe1",
"style": "text-shadow: black 0px 0px 4px", "style": "text-shadow: black 0px 0px 4px",
@ -337,7 +337,7 @@
"font-size": 8, "font-size": 8,
"font-family": "Courier New" "font-family": "Courier New"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 4.2, "size": 4.2,
"stroke": "#000000", "stroke": "#000000",
"stroke-width": 1.46 "stroke-width": 1.46
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"style": "text-shadow: black 0px 0px 4px", "style": "text-shadow: black 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 4.28, "font-size": 4.28,
"font-family": "Courier New" "font-family": "Courier New"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1.6, "size": 1.6,

View file

@ -328,7 +328,7 @@
"data-y": 62.98, "data-y": 62.98,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 0.8, "opacity": 0.8,
"fill": "#3a3a3a", "fill": "#3a3a3a",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -337,7 +337,7 @@
"font-size": 7, "font-size": 7,
"font-family": "Arima Madurai" "font-family": "Arima Madurai"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 3, "size": 3,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 0.8, "opacity": 0.8,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 4, "font-size": 4,
"font-family": "Arima Madurai" "font-family": "Arima Madurai"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1.2, "size": 1.2,

View file

@ -328,7 +328,7 @@
"data-y": 93, "data-y": 93,
"data-columns": 8 "data-columns": 8
}, },
"#burgLabels > #cities": { "#burgLabels > #city": {
"opacity": 1, "opacity": 1,
"fill": "#043449", "fill": "#043449",
"style": "text-shadow: white 0px 0px 2px", "style": "text-shadow: white 0px 0px 2px",
@ -337,7 +337,7 @@
"font-size": 5, "font-size": 5,
"font-family": "Comfortaa" "font-family": "Comfortaa"
}, },
"#burgIcons > #cities": { "#burgIcons > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -347,14 +347,14 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #cities": { "#anchors > #city": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 2, "size": 2,
"stroke": "#3e3e4b", "stroke": "#3e3e4b",
"stroke-width": 1.2 "stroke-width": 1.2
}, },
"#burgLabels > #towns": { "#burgLabels > #town": {
"opacity": 1, "opacity": 1,
"fill": "#3e3e4b", "fill": "#3e3e4b",
"style": "text-shadow: white 0px 0px 4px", "style": "text-shadow: white 0px 0px 4px",
@ -363,7 +363,7 @@
"font-size": 3, "font-size": 3,
"font-family": "Comfortaa" "font-family": "Comfortaa"
}, },
"#burgIcons > #towns": { "#burgIcons > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"fill-opacity": 0.7, "fill-opacity": 0.7,
@ -373,7 +373,7 @@
"stroke-dasharray": "", "stroke-dasharray": "",
"stroke-linecap": "butt" "stroke-linecap": "butt"
}, },
"#anchors > #towns": { "#anchors > #town": {
"opacity": 1, "opacity": 1,
"fill": "#ffffff", "fill": "#ffffff",
"size": 1, "size": 1,