mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-22 03:51:23 +01:00
commit
51f46d5183
9 changed files with 4836 additions and 2379 deletions
|
|
@ -1,14 +1,12 @@
|
||||||
# Fantasy Map Generator
|
# Fantasy Map Generator
|
||||||
|
|
||||||
Azgaar's _Fantasy Map Generator_. Based on [D3](https://d3js.org) Voronoi diagram rendered in svg.
|
Azgaar's _Fantasy Map Generator_. Online tool generating interactive svg maps based on [D3](https://d3js.org) voronoi diagram.
|
||||||
|
|
||||||
Project goal is a procedurally generated map for my *Medieval Dynasty* simulator. Map should be interactive, scalable, fast and plausible. Initial intend was to place at least 500 burgs within 7 cultural areas and imagined land area about 1 million km<sup>2</sup>. As of now all these parameters are customizable.
|
Project is under active development, check out the work in progress version [here](https://azgaar.github.io/Fantasy-Map-Generator). Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a guidance. Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [Trello devboard](https://trello.com/b/7x832DG4/fantasy-map-generator).
|
||||||
|
|
||||||
[](https://azgaar.wordpress.com)
|
[](https://azgaar.wordpress.com)
|
||||||
|
|
||||||
Project is under development, check out the demo [here](https://azgaar.github.io/Fantasy-Map-Generator). Refer to [the project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a quick guidance. The the previous versions see the [changelog](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog). If you find the Demo performance low, open the page in a smaller window and use the graph size = 1.
|
Join our [Reddit community](https://www.reddit.com/r/FantasyMapGenerator) to share the created maps, discuss the Generator, suggest ideas and get a most recent updates. You may also contact me directly via [email](mailto:maxganiev@yandex.com). For bug reports please use the project [issues page](https://github.com/Azgaar/Fantasy-Map-Generator/issues). If you face performance issues, please try to open the page in a small window and use the default graph size only. In Firefox fast map zooming may cause browser crush.
|
||||||
|
|
||||||
Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [devboard](https://trello.com/b/7x832DG4/fantasy-map-generator). Comments and ideas are *highly* welcomed, kindly contact me via [email](mailto:maxganiev@yandex.ru). I would also like to see your completed or work in progress maps. For bug reports and change requests please use the project [issues page](https://github.com/Azgaar/Fantasy-Map-Generator/issues).
|
|
||||||
|
|
||||||
_Inspiration:_
|
_Inspiration:_
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
speak: none;
|
speak: none;
|
||||||
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
width: 1em;
|
width: 1em;
|
||||||
|
|
|
||||||
156
index.css
156
index.css
|
|
@ -47,8 +47,7 @@ button, select, a {
|
||||||
}
|
}
|
||||||
|
|
||||||
#cults {
|
#cults {
|
||||||
stroke-width: 0.7;
|
stroke-width: 2;
|
||||||
stroke-linejoin: round;
|
|
||||||
mask: url(#shape);
|
mask: url(#shape);
|
||||||
mask-mode: alpha;
|
mask-mode: alpha;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
@ -60,8 +59,8 @@ button, select, a {
|
||||||
}
|
}
|
||||||
|
|
||||||
#landmass {
|
#landmass {
|
||||||
fill-rule: evenodd;
|
mask: url(#shape);
|
||||||
stroke: none;
|
mask-clip: no-clip;
|
||||||
}
|
}
|
||||||
|
|
||||||
#lakes,
|
#lakes,
|
||||||
|
|
@ -259,17 +258,21 @@ input[type="number"].editNumber {
|
||||||
}
|
}
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
stroke: #666666;
|
stroke: #373737;
|
||||||
stroke-width: 1px;
|
stroke-width: 1px;
|
||||||
|
stroke-dasharray: 6;
|
||||||
|
stroke-linecap: butt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.circle {
|
.circle {
|
||||||
stroke-width: 1px;
|
stroke-width: 1px;
|
||||||
fill: none;
|
fill: none;
|
||||||
|
stroke-dasharray: 6;
|
||||||
|
stroke-linecap: butt;
|
||||||
}
|
}
|
||||||
|
|
||||||
circle.drag {
|
circle.drag {
|
||||||
stroke: white;
|
stroke: #9f3237;
|
||||||
}
|
}
|
||||||
|
|
||||||
text.drag {
|
text.drag {
|
||||||
|
|
@ -290,7 +293,6 @@ text.drag {
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: rgba(168, 130, 147, 0.85);
|
|
||||||
border: solid 1px #5e4fa2;
|
border: solid 1px #5e4fa2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -449,7 +451,7 @@ button.active {
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabcontent button {
|
.tabcontent button {
|
||||||
background-color: #997c89;
|
background-color: #916e7f;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
border: none;
|
border: none;
|
||||||
padding: 5px 8px;
|
padding: 5px 8px;
|
||||||
|
|
@ -468,9 +470,13 @@ button.active {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #5d4651;
|
||||||
|
}
|
||||||
|
|
||||||
.tabcontent li {
|
.tabcontent li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
background-color: #997c89;
|
background-color: #916e7f;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 5px 8px;
|
padding: 5px 8px;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
|
|
@ -512,6 +518,10 @@ p {
|
||||||
width: 35%;
|
width: 35%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#customizeOptions {
|
||||||
|
margin: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
#tooltip {
|
#tooltip {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
display: none;
|
display: none;
|
||||||
|
|
@ -519,7 +529,7 @@ p {
|
||||||
top: calc(98vh - (10px + 0.5vw));
|
top: calc(98vh - (10px + 0.5vw));
|
||||||
width: 100%;
|
width: 100%;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
text-shadow: 1px 0px 1px #1d0e0f;
|
text-shadow: 1px 1px 2px #1d0e0f;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-size: calc(10px + 0.5vw);
|
font-size: calc(10px + 0.5vw);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
@ -530,8 +540,6 @@ p {
|
||||||
}
|
}
|
||||||
|
|
||||||
#optionsContent table td:nth-of-type(2) {
|
#optionsContent table td:nth-of-type(2) {
|
||||||
text-decoration: underline dotted gray;
|
|
||||||
cursor: help;
|
|
||||||
width: 126px;
|
width: 126px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -594,8 +602,9 @@ body button.noicon {
|
||||||
background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%);
|
background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%);
|
||||||
margin: 1px 1px;
|
margin: 1px 1px;
|
||||||
width: 226px;
|
width: 226px;
|
||||||
padding: 1px 2px;
|
padding: 0px 2px;
|
||||||
font-size: 9px;
|
height: 12px;
|
||||||
|
font-size: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#templateBody>div:hover {
|
#templateBody>div:hover {
|
||||||
|
|
@ -624,10 +633,9 @@ body button.noicon {
|
||||||
}
|
}
|
||||||
|
|
||||||
#templateBody input {
|
#templateBody input {
|
||||||
height: 4px;
|
width: 40px;
|
||||||
width: 45px;
|
height: 10px;
|
||||||
font-family: monospace;
|
border: none;
|
||||||
height: 4px;
|
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -661,18 +669,18 @@ body button.noicon {
|
||||||
border-right-color: #5e4fa2;
|
border-right-color: #5e4fa2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#styleInputs div {
|
#styleInputs > div {
|
||||||
display: none;
|
display: none;
|
||||||
line-height: 6px;
|
line-height: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#styleInputs #styleOcean,
|
||||||
#styleInputs #styleOpacity,
|
#styleInputs #styleOpacity,
|
||||||
#styleInputs #styleFill,
|
|
||||||
#styleInputs #styleFilter {
|
#styleInputs #styleFilter {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#styleInputs button {
|
#styleInputs .whiteButton {
|
||||||
padding: 0 6px;
|
padding: 0 6px;
|
||||||
margin: 0 2px;
|
margin: 0 2px;
|
||||||
border: 1px #827c7f solid;
|
border: 1px #827c7f solid;
|
||||||
|
|
@ -684,11 +692,21 @@ body button.noicon {
|
||||||
font-size: xx-small;
|
font-size: xx-small;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#styleLabelGroups {
|
||||||
|
margin-top: 6px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#styleLabelGroups button {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 5px 3px 0 3px;
|
||||||
|
padding: 2px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
.pureInput {
|
.pureInput {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
font-size: small;
|
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
@ -741,15 +759,6 @@ body button.noicon {
|
||||||
stroke: #da3126;
|
stroke: #da3126;
|
||||||
}
|
}
|
||||||
|
|
||||||
body .ui-dialog {
|
|
||||||
padding: 1px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body .ui-dialog-titlebar {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ui-dialog input {
|
.ui-dialog input {
|
||||||
height: 14px;
|
height: 14px;
|
||||||
}
|
}
|
||||||
|
|
@ -763,7 +772,7 @@ body .ui-dialog-titlebar {
|
||||||
.ui-dialog input[type="range"] {
|
.ui-dialog input[type="range"] {
|
||||||
outline: none;
|
outline: none;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: #e9e9e9;
|
background: #d4d4d4;
|
||||||
top: -4px;
|
top: -4px;
|
||||||
position: relative;
|
position: relative;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
|
|
@ -790,6 +799,12 @@ body .ui-dialog-titlebar {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ui-dialog input[type="number"] {
|
||||||
|
width: 28px;
|
||||||
|
height: 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.ui-dialog .disabled {
|
.ui-dialog .disabled {
|
||||||
opacity: 0.2;
|
opacity: 0.2;
|
||||||
}
|
}
|
||||||
|
|
@ -883,7 +898,7 @@ div.slider .ui-slider-handle {
|
||||||
|
|
||||||
div.states {
|
div.states {
|
||||||
border: 1px solid #d4d4d4;
|
border: 1px solid #d4d4d4;
|
||||||
background-image: linear-gradient(to right, #fcfcfc 0%, #f2f2f2 51%, #dedede 100%);
|
background-image: linear-gradient(to right, #fafafa80 0%, #f0f0f080 50%, #c8c8c880 100%);
|
||||||
margin: 1px 0;
|
margin: 1px 0;
|
||||||
padding: 0 2px;
|
padding: 0 2px;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
|
@ -891,7 +906,7 @@ div.states {
|
||||||
|
|
||||||
div.states:hover {
|
div.states:hover {
|
||||||
border: 1px solid #c4c4c4;
|
border: 1px solid #c4c4c4;
|
||||||
background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 51%, #fcfcfc 0%);
|
background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.states * {
|
div.states * {
|
||||||
|
|
@ -950,6 +965,13 @@ div.states>[class^="icon-"] {
|
||||||
padding: 0 1px 0 7px;
|
padding: 0 1px 0 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.states>[class="icon-arrows-cw"] {
|
||||||
|
color: #67575c;
|
||||||
|
padding: 0 2px 0 0;
|
||||||
|
font-size: 9px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
div.states>.before {
|
div.states>.before {
|
||||||
color: #6e5e66;
|
color: #6e5e66;
|
||||||
padding: 0 1px 0 0;
|
padding: 0 1px 0 0;
|
||||||
|
|
@ -959,6 +981,24 @@ div.states>.small {
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.states>.cultureName {
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.states>.culturePopulation {
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.states>.cultureBase {
|
||||||
|
width: 46px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
-moz-appearance: textfield;
|
||||||
|
appearance: textfield;
|
||||||
|
}
|
||||||
|
|
||||||
#burgsBody,
|
#burgsBody,
|
||||||
#countriesBody {
|
#countriesBody {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|
@ -1270,6 +1310,48 @@ input[type="checkbox"] {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#capital-anchors, #town-anchors {
|
#cultureCenters circle:hover {
|
||||||
transform: translate(-0.47em, -0.47em);
|
stroke: #000000b3;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseEditor select,
|
||||||
|
#namesbaseEditor textarea {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: Copperplate, monospace;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseEditor input {
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: Copperplate, monospace;
|
||||||
|
outline: none;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseEditor fieldset {
|
||||||
|
margin: 3px 3px 5px 0;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseEditor span, #namesbaseEditor legend {
|
||||||
|
font-size: 9px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseExamples {
|
||||||
|
font-family: Copperplate, monospace;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseName {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseMin, #namesbaseMax {
|
||||||
|
width: 33px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#namesbaseDouble {
|
||||||
|
width: 40px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
357
index.html
357
index.html
|
|
@ -3,6 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<script src="libs/seedrandom.min.js"></script>
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-116735150-1"></script>
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-116735150-1"></script>
|
||||||
<script>
|
<script>
|
||||||
window.dataLayer = window.dataLayer || [];
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
|
@ -10,14 +11,14 @@
|
||||||
gtag('js', new Date());
|
gtag('js', new Date());
|
||||||
gtag('config', 'UA-116735150-1');
|
gtag('config', 'UA-116735150-1');
|
||||||
</script>
|
</script>
|
||||||
<title>Azgaar's Fantasy Map Generator Demo</title>
|
<title>Azgaar's Fantasy Map Generator</title>
|
||||||
<meta name="application-name" content="Azgaar's Fantasy Map Generator">
|
<meta name="application-name" content="Azgaar's Fantasy Map Generator">
|
||||||
<meta name="author" content="Azgaar (Max Ganiev)">
|
<meta name="author" content="Azgaar (Max Ganiev)">
|
||||||
<meta name="description" content="Azgaar's Fantasy Map Generator (demo). Based on D3 Voronoi diagram rendered to svg">
|
<meta name="description" content="Azgaar's Fantasy Map Generator and Editor">
|
||||||
<meta name="google" content="notranslate">
|
<meta name="google" content="notranslate">
|
||||||
<meta property="og:url" content="https://azgaar.github.io/Fantasy-Map-Generator/">
|
<meta property="og:url" content="https://azgaar.github.io/Fantasy-Map-Generator/">
|
||||||
<meta property="og:title" content="Azgaar's Fantasy Map Generator">
|
<meta property="og:title" content="Azgaar's Fantasy Map Generator">
|
||||||
<meta property="og:description" content="Demo version. Based on D3 Voronoi diagram rendered to svg">
|
<meta property="og:description" content="Based on Voronoi diagram rendered to svg">
|
||||||
<meta property="og:image" content="images/preview.png">
|
<meta property="og:image" content="images/preview.png">
|
||||||
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32"/>
|
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32"/>
|
||||||
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16"/>
|
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16"/>
|
||||||
|
|
@ -26,19 +27,19 @@
|
||||||
<script src="libs/d3.v4.min.js"></script>
|
<script src="libs/d3.v4.min.js"></script>
|
||||||
<script src="libs/d3-scale-chromatic.v1.min.js"></script>
|
<script src="libs/d3-scale-chromatic.v1.min.js"></script>
|
||||||
<script src="libs/priority-queue.min.js"></script>
|
<script src="libs/priority-queue.min.js"></script>
|
||||||
<script src="names.js"></script>
|
|
||||||
<script src="libs/jquery-ui.min.js"></script>
|
<script src="libs/jquery-ui.min.js"></script>
|
||||||
<script src="libs/polylabel.min.js"></script>
|
<script src="libs/polylabel.min.js"></script>
|
||||||
<script src="libs/quantize.min.js" defer></script>
|
<script src="libs/quantize.min.js" defer></script>
|
||||||
<script src="libs/d3-hexbin.v0.2.min.js" defer></script>
|
<script src="libs/d3-hexbin.v0.2.min.js" defer></script>
|
||||||
<script src="libs/jquery.ui.touch-punch.min.js" defer></script>
|
<script src="libs/jquery.ui.touch-punch.min.js" defer></script>
|
||||||
<link rel="stylesheet" type="text/css" href="index.css?version=0.57.03b"/>
|
<link rel="stylesheet" type="text/css" href="index.css?version=0.59.07b"/>
|
||||||
<link rel="stylesheet" type="text/css" href="icons.css?version=0.57.03b"/>
|
<link rel="stylesheet" type="text/css" href="icons.css?version=0.59.07b"/>
|
||||||
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"/>
|
<link rel="stylesheet" type="text/css" href="libs/jquery-ui.css"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%">
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%">
|
||||||
<defs>
|
<defs>
|
||||||
|
<g id="filters">
|
||||||
<filter id="blurFilter" x="-1" y="-1" width="100" height="100">
|
<filter id="blurFilter" x="-1" y="-1" width="100" height="100">
|
||||||
<feGaussianBlur in="SourceGraphic" stdDeviation="0.2"/>
|
<feGaussianBlur in="SourceGraphic" stdDeviation="0.2"/>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
@ -51,6 +52,17 @@
|
||||||
<filter id="blur10" x="-1" y="-1" width="100" height="100">
|
<filter id="blur10" x="-1" y="-1" width="100" height="100">
|
||||||
<feGaussianBlur in="SourceGraphic" stdDeviation="10"/>
|
<feGaussianBlur in="SourceGraphic" stdDeviation="10"/>
|
||||||
</filter>
|
</filter>
|
||||||
|
<filter id="splotch">
|
||||||
|
<feTurbulence type="fractalNoise" baseFrequency=".01" numOctaves="4"/>
|
||||||
|
<feColorMatrix values="0 0 0 0 0, 0 0 0 0 0, 0 0 0 0 0, 0 0 0 -0.9 1.2" result="texture"/>
|
||||||
|
<feComposite in="SourceGraphic" in2="texture" operator="in"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="bluredSplotch">
|
||||||
|
<feTurbulence type="fractalNoise" baseFrequency=".01" numOctaves="4"/>
|
||||||
|
<feColorMatrix values="0 0 0 0 0, 0 0 0 0 0, 0 0 0 0 0, 0 0 0 -0.9 1.2" result="texture"/>
|
||||||
|
<feComposite in="SourceGraphic" in2="texture" operator="in"/>
|
||||||
|
<feGaussianBlur stdDeviation="4"/>
|
||||||
|
</filter>
|
||||||
<filter id="dropShadow">
|
<filter id="dropShadow">
|
||||||
<feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
|
<feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
|
||||||
<feOffset dx="1" dy="2"/>
|
<feOffset dx="1" dy="2"/>
|
||||||
|
|
@ -59,24 +71,31 @@
|
||||||
<feMergeNode in="SourceGraphic"/>
|
<feMergeNode in="SourceGraphic"/>
|
||||||
</feMerge>
|
</feMerge>
|
||||||
</filter>
|
</filter>
|
||||||
|
<filter id="pencil">
|
||||||
|
<feTurbulence baseFrequency="0.03" numOctaves="6" type="fractalNoise"/>
|
||||||
|
<feDisplacementMap scale="3" in="SourceGraphic" xChannelSelector="R" yChannelSelector="G"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="turbulence">
|
||||||
|
<feTurbulence baseFrequency="0.1" numOctaves="3" type="fractalNoise"/>
|
||||||
|
<feDisplacementMap scale="10" in="SourceGraphic" xChannelSelector="R" yChannelSelector="G"/>
|
||||||
|
</filter>
|
||||||
<filter id="filter-grayscale">
|
<filter id="filter-grayscale">
|
||||||
<feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
|
<feColorMatrix values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
|
||||||
</filter>
|
</filter>
|
||||||
<filter id="filter-sepia">
|
<filter id="filter-sepia">
|
||||||
<feColorMatrix type="matrix" values="0.393 0.769 0.189 0 0 0.349 0.686 0.168 0 0 0.272 0.534 0.131 0 0 0 0 0 1 0"/>
|
<feColorMatrix values="0.393 0.769 0.189 0 0 0.349 0.686 0.168 0 0 0.272 0.534 0.131 0 0 0 0 0 1 0"/>
|
||||||
</filter>
|
</filter>
|
||||||
<filter id="filter-dingy">
|
<filter id="filter-dingy">
|
||||||
<feColorMatrix type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0.3 0.3 0 0 0 0 0 1 0"/>
|
<feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0.3 0.3 0 0 0 0 0 1 0"/>
|
||||||
</filter>
|
</filter>
|
||||||
<filter id="filter-tint">
|
<filter id="filter-tint">
|
||||||
<feColorMatrix type="matrix" values="0 0.9 0.2 0 0 0 0.8 0.1 0 0.1 0 0.4 1.4 0 -0.1 0 0 0 1 1"/>
|
<feColorMatrix values="1.1 0 0 0 0 0 1.1 0 0 0 0 0 0.9 0 0 0 0 0 1 0"/>
|
||||||
</filter>
|
</filter>
|
||||||
<g id="deftemp">
|
|
||||||
<mask id="shape" x="0" y="0" width="100%" height="100%" fill="black"></mask>
|
|
||||||
</g>
|
</g>
|
||||||
|
<g id="deftemp"></g>
|
||||||
<g id="defs-icons">
|
<g id="defs-icons">
|
||||||
<symbol id="icon-anchor" viewBox="0 0 30 29">
|
<symbol id="icon-anchor" viewBox="0 0 30 29">
|
||||||
<title>Anchor</title>
|
<title>Port</title>
|
||||||
<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"></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"></path>
|
||||||
</symbol>
|
</symbol>
|
||||||
</g>
|
</g>
|
||||||
|
|
@ -140,14 +159,14 @@
|
||||||
<div id="loading">
|
<div id="loading">
|
||||||
<div id="title_name">Azgaar's</div>
|
<div id="title_name">Azgaar's</div>
|
||||||
<div id="title">Fantasy Map Generator</div>
|
<div id="title">Fantasy Map Generator</div>
|
||||||
<div id="version">v. 0.57b</div>
|
<div id="version">v. 0.59b</div>
|
||||||
<p id="loading-text">LOADING<span>.</span><span>.</span><span>.</span></p>
|
<p id="loading-text">LOADING<span>.</span><span>.</span><span>.</span></p>
|
||||||
</div>
|
</div>
|
||||||
<canvas id="canvas" style="opacity: 0"></canvas>
|
<canvas id="canvas" style="opacity: 0"></canvas>
|
||||||
<div id="optionsContainer" class="hidden">
|
<div id="optionsContainer" class="hidden">
|
||||||
<div id="collapsible">
|
<div id="collapsible">
|
||||||
<button id="optionsTrigger" onmouseover="tip('Click to toggle options')" class="options icon-right-open glow"></button>
|
<button id="optionsTrigger" onmouseover="tip('Click to toggle options. Hotkey: O')" class="options icon-right-open glow"></button>
|
||||||
<button id="regenerate" onmouseover="tip('Click to generate a new map')" class="options">New Map!</button>
|
<button id="regenerate" onmouseover="tip('Click to generate a new map. Hotkey: F6')" class="options">New Map!</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="options">
|
<div id="options">
|
||||||
<div class="drag-trigger" onmouseover="tip('Drag to move options pane')"></div>
|
<div class="drag-trigger" onmouseover="tip('Drag to move options pane')"></div>
|
||||||
|
|
@ -183,35 +202,37 @@
|
||||||
<li onmouseover="tip('Toggle Icons')" id="toggleIcons" onclick="$('#icons').fadeToggle()">Icons</li>
|
<li onmouseover="tip('Toggle Icons')" id="toggleIcons" onclick="$('#icons').fadeToggle()">Icons</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div id="layoutCheckboxes">
|
<div id="layoutCheckboxes">
|
||||||
<input id="hideLabels" class="checkbox" type="checkbox" checked>
|
|
||||||
<label for="hideLabels" onmouseover="tip('Hide small labels (zoom in to show)')" class="checkbox-label">Hide small labels</label>
|
|
||||||
<input id="toggleTooltips" class="checkbox" type="checkbox" checked onclick="$('#tooltip').fadeToggle()">
|
<input id="toggleTooltips" class="checkbox" type="checkbox" checked onclick="$('#tooltip').fadeToggle()">
|
||||||
<label for="toggleTooltips" onmouseover="tip('Toogle tooltip line')" class="checkbox-label">Show tooltips</label>
|
<label for="toggleTooltips" onmouseover="tip('Toogle tooltip line')" class="checkbox-label">Show tooltips</label>
|
||||||
|
<label id="optionSeedLabel" style="margin-left:10px">Map seed:
|
||||||
|
<input id="optionsSeed" class="pureInput" style="width:50px" value="">
|
||||||
|
<i onmouseover="tip('Click to generate a map for this seed')" id="optionsSeedGenerate" style="margin-left:-3px; color: #5d4651" class="icon-play"></i>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleContent" class="tabcontent">
|
<div id="styleContent" class="tabcontent">
|
||||||
<p style="display: inline-block;">Select element:</p>
|
<p style="display: inline-block;">Select element:</p>
|
||||||
<select id="styleElementSelect">
|
<select id="styleElementSelect">
|
||||||
<option value="oceanBase" selected>Ocean</option>
|
|
||||||
<option value="landmass">Landmass</option>
|
|
||||||
<option value="grid">Grid</option>
|
<option value="grid">Grid</option>
|
||||||
<option value="overlay">Overlay</option>
|
<option value="neutralBorders">Borders (neutral)</option>
|
||||||
<option value="terrs">Heightmap</option>
|
<option value="stateBorders">Borders (state)</option>
|
||||||
|
<option value="coastline">Coastline</option>
|
||||||
|
<option value="regions">Countries</option>
|
||||||
<option value="cults">Cultures</option>
|
<option value="cults">Cultures</option>
|
||||||
|
<option value="terrs">Heightmap</option>
|
||||||
|
<option value="icons">Icons</option>
|
||||||
|
<option value="labels">Labels</option>
|
||||||
|
<option value="lakes">Lakes</option>
|
||||||
|
<option value="landmass">Landmass</option>
|
||||||
|
<option value="ocean" selected>Ocean</option>
|
||||||
|
<option value="overlay">Overlay</option>
|
||||||
|
<option value="terrain">Relief</option>
|
||||||
|
<option value="rivers">Rivers</option>
|
||||||
<option value="roads">Roads</option>
|
<option value="roads">Roads</option>
|
||||||
|
<option value="ruler">Rulers</option>
|
||||||
<option value="trails">Trails</option>
|
<option value="trails">Trails</option>
|
||||||
<option value="searoutes">Searoutes</option>
|
<option value="searoutes">Searoutes</option>
|
||||||
<option value="rivers">Rivers</option>
|
|
||||||
<option value="terrain">Relief</option>
|
|
||||||
<option value="regions">Countries</option>
|
|
||||||
<option value="stateBorders">State Borders</option>
|
|
||||||
<option value="neutralBorders">Neutral Borders</option>
|
|
||||||
<option value="coastline">Coastline</option>
|
|
||||||
<option value="lakes">Lakes</option>
|
|
||||||
<option value="labels">Labels</option>
|
|
||||||
<option value="icons">Icons</option>
|
|
||||||
<option value="scaleBar">Scale bar</option>
|
<option value="scaleBar">Scale bar</option>
|
||||||
<option value="ruler">Rulers</option>
|
|
||||||
</select>
|
</select>
|
||||||
<i id="restoreStyle" onmouseover="tip('Restore default style')" class="icon-ccw"></i>
|
<i id="restoreStyle" onmouseover="tip('Restore default style')" class="icon-ccw"></i>
|
||||||
<div id="styleInputs">
|
<div id="styleInputs">
|
||||||
|
|
@ -225,6 +246,15 @@
|
||||||
<br>Size: <input id="styleOverlaySize" type="range" min="2" max="20" step="0.2" value="5">
|
<br>Size: <input id="styleOverlaySize" type="range" min="2" max="20" step="0.2" value="5">
|
||||||
<output id="styleOverlaySizeOutput">5</output>
|
<output id="styleOverlaySizeOutput">5</output>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="styleOcean">
|
||||||
|
<br>Elements:
|
||||||
|
<input id="styleOceanPattern" class="checkbox" type="checkbox" checked>
|
||||||
|
<label for="styleOceanPattern" onmouseover="tip('Toggle ocean pattern')" class="checkbox-label">Pattern</label>
|
||||||
|
<input id="styleOceanLayers" class="checkbox" type="checkbox" checked>
|
||||||
|
<label for="styleOceanLayers" onmouseover="tip('Toggle ocean layers')" class="checkbox-label">Layers</label><br>
|
||||||
|
Background: <input id="styleOceanBack" type="color" value="#000000"/><output id="styleOceanBackOutput">#000000</output><br>
|
||||||
|
Foreground: <input id="styleOceanFore" type="color" value="#53679f"/><output id="styleOceanForeOutput">#53679f</output>
|
||||||
|
</div>
|
||||||
<div id="styleFill">
|
<div id="styleFill">
|
||||||
Fill: <input id="styleFillInput" type="color" value="#5E4FA2"/>
|
Fill: <input id="styleFillInput" type="color" value="#5E4FA2"/>
|
||||||
<output id="styleFillOutput">#5E4FA2</output>
|
<output id="styleFillOutput">#5E4FA2</output>
|
||||||
|
|
@ -233,7 +263,6 @@
|
||||||
Stroke: <input id="styleStrokeInput" type="color" value="#5E4FA2"/>
|
Stroke: <input id="styleStrokeInput" type="color" value="#5E4FA2"/>
|
||||||
<output id="styleStrokeOutput">#5E4FA2</output>
|
<output id="styleStrokeOutput">#5E4FA2</output>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleMultiple">Colors:</div>
|
|
||||||
<div id="styleStrokeWidth">
|
<div id="styleStrokeWidth">
|
||||||
<br>Stroke width: <input id="styleStrokeWidthInput" type="range" min="0" max="3" step="0.01" value="1">
|
<br>Stroke width: <input id="styleStrokeWidthInput" type="range" min="0" max="3" step="0.01" value="1">
|
||||||
<output id="styleStrokeWidthOutput">1</output>
|
<output id="styleStrokeWidthOutput">1</output>
|
||||||
|
|
@ -250,11 +279,11 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleFontSize">
|
<div id="styleFontSize">
|
||||||
<br>Font size: <button onmouseover="tip('Multiply all Fonts size by 1.1')" id="styleFontPlus">+</button><button onmouseover="tip('Multiply all Fonts size by 0.9')" id="styleFontMinus">-</button>
|
<br>Font size: <button class="whiteButton" onmouseover="tip('Multiply all Fonts size by 1.1')" id="styleFontPlus">+</button><button class="whiteButton" onmouseover="tip('Multiply all Fonts size by 0.9')" id="styleFontMinus">-</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleSize">
|
<div id="styleSize">
|
||||||
<br>Radius: <button onmouseover="tip('Multiply Radius by 1.1')" id="styleFillPlus">+</button><button onmouseover="tip('Multiply Radius by 0.9')" id="styleFillMinus">-</button>
|
<br>Radius: <button class="whiteButton" onmouseover="tip('Multiply Radius by 1.1')" id="styleFillPlus">+</button><button class="whiteButton" onmouseover="tip('Multiply Radius by 0.9')" id="styleFillMinus">-</button>
|
||||||
<span> Stroke: </span><button onmouseover="tip('Multiply Stroke-width by 1.1')" id="styleStrokePlus">+</button><button onmouseover="tip('Multiply Stroke-width by 0.9')" id="styleStrokeMinus">-</button>
|
<span> Stroke: </span><button class="whiteButton" onmouseover="tip('Multiply Stroke-width by 1.1')" id="styleStrokePlus">+</button><button class="whiteButton" onmouseover="tip('Multiply Stroke-width by 0.9')" id="styleStrokeMinus">-</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleOpacity">
|
<div id="styleOpacity">
|
||||||
<br>Opacity: <input id="styleOpacityInput" type="range" min="0" max="1" step="0.01" value="1">
|
<br>Opacity: <input id="styleOpacityInput" type="range" min="0" max="1" step="0.01" value="1">
|
||||||
|
|
@ -267,7 +296,11 @@
|
||||||
<option value="url(#blur1)">Blur 1</option>
|
<option value="url(#blur1)">Blur 1</option>
|
||||||
<option value="url(#blur5)">Blur 5</option>
|
<option value="url(#blur5)">Blur 5</option>
|
||||||
<option value="url(#blur10)">Blur 10</option>
|
<option value="url(#blur10)">Blur 10</option>
|
||||||
|
<option value="url(#splotch)">Splotch</option>
|
||||||
|
<option value="url(#bluredSplotch)">Blured Splotch</option>
|
||||||
<option value="url(#dropShadow)">Shadow</option>
|
<option value="url(#dropShadow)">Shadow</option>
|
||||||
|
<option value="url(#pencil)">Pencil</option>
|
||||||
|
<option value="url(#turbulence)">Turbulence</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="styleScheme">
|
<div id="styleScheme">
|
||||||
|
|
@ -278,6 +311,14 @@
|
||||||
<option value="monochrome">Monochrome</option>
|
<option value="monochrome">Monochrome</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="styleLabelGroups">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Label groups:</legend>
|
||||||
|
<input id="hideLabels" class="checkbox" type="checkbox" checked>
|
||||||
|
<label for="hideLabels" onmouseover="tip('Allow system to hide labels if their size in too small on that scale)')" class="checkbox-label">Toogle visibility automatically</label>
|
||||||
|
<div id="styleLabelGroupItems"></div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="mapFilters">
|
<div id="mapFilters">
|
||||||
<p>Toggle filters:</p>
|
<p>Toggle filters:</p>
|
||||||
|
|
@ -288,7 +329,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="optionsContent" class="tabcontent">
|
<div id="optionsContent" class="tabcontent">
|
||||||
<p onmouseover="tip('Map generation setting. Generate new map to apply the settings')">Generation options (new map to apply):</p>
|
<p onmouseover="tip('Map generation setting. Generate a new map to apply the settings')">Generation options (new map to apply):</p>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
@ -326,6 +367,8 @@
|
||||||
<option value="Continents">Continents</option>
|
<option value="Continents">Continents</option>
|
||||||
<option value="Archipelago">Archipelago</option>
|
<option value="Archipelago">Archipelago</option>
|
||||||
<option value="Atoll">Atoll</option>
|
<option value="Atoll">Atoll</option>
|
||||||
|
<option value="Mainland">Mainland</option>
|
||||||
|
<option value="Peninsulas">Peninsulas</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
@ -370,7 +413,7 @@
|
||||||
<td>
|
<td>
|
||||||
<i onmouseover="tip('Unlock to allow option randomization on new map generation')" data-locked=1 id="lockNeutralInput" class="icon-lock"></i>
|
<i onmouseover="tip('Unlock to allow option randomization on new map generation')" data-locked=1 id="lockNeutralInput" class="icon-lock"></i>
|
||||||
</td>
|
</td>
|
||||||
<td onmouseover="tip('Distance to a consider a land as neutral')">Neutral distance</td>
|
<td onmouseover="tip('Manimal distance to closest burg to consider land neutral')">Neutral distance</td>
|
||||||
<td>
|
<td>
|
||||||
<input id="neutralInput" type="range" min="1" max="500" step="1" value="200">
|
<input id="neutralInput" type="range" min="1" max="500" step="1" value="200">
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -378,6 +421,31 @@
|
||||||
<output id="neutralOutput">200</output>
|
<output id="neutralOutput">200</output>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr style="display:none">
|
||||||
|
<td>
|
||||||
|
<i onmouseover="tip('Unlock to allow option randomization on new map generation')" data-locked=1 id="lockNamesInput" class="icon-lock"></i>
|
||||||
|
</td>
|
||||||
|
<td onmouseover="tip('Define name generation style for burgs. Only the first one works offline')">Burg names style</td>
|
||||||
|
<td>
|
||||||
|
<select id="namesInput">
|
||||||
|
<option value=0>Pseudo-real (Culture based simulation; internal generation)</option>
|
||||||
|
<option value=1>High Fantasy (English only; external resource)</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<i onmouseover="tip('Lock to restrict option randomization on new map generation')" data-locked=0 id="lockCulturesInput" class="icon-lock-open"></i>
|
||||||
|
</td>
|
||||||
|
<td onmouseover="tip('Define how many Cultures should be generated')">Cultures count</td>
|
||||||
|
<td>
|
||||||
|
<input id="culturesInput" type="range" min="1" max="13" value="7">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<output id="culturesOutput">7</output>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<i onmouseover="tip('Lock to restrict option randomization on new map generation')" data-locked=0 id="lockPrecInput" class="icon-lock-open"></i>
|
<i onmouseover="tip('Lock to restrict option randomization on new map generation')" data-locked=0 id="lockPrecInput" class="icon-lock-open"></i>
|
||||||
|
|
@ -406,14 +474,14 @@
|
||||||
<td></td>
|
<td></td>
|
||||||
<td onmouseover="tip('Define the coast outline contours scheme')">Ocean layers</td>
|
<td onmouseover="tip('Define the coast outline contours scheme')">Ocean layers</td>
|
||||||
<td>
|
<td>
|
||||||
<select id="outlineLayers">
|
<select id="outlineLayersInput">
|
||||||
<option value="random" selected>Random</option>
|
<option value="random">Random</option>
|
||||||
<option value="-6,-3,-1">-6,-3,-1</option>
|
<option value="none">No outline</option>
|
||||||
<option value="-9,-6,-3,-1">-9,-6,-3,-1</option>
|
<option value="-6,-3,-1" selected>Standard 3</option>
|
||||||
<option value="-6,-5,-4,-3,-2,-1">-6,-5,-4,-3,-2,-1</option>
|
<option value="-6,-4,-2">Indented 3</option>
|
||||||
<option value="-9,-8,-7,-6,-5,-4,-3,-2,-1">-9,-8,-7,-6,-5,-4,-3,-2,-1</option>
|
<option value="-9,-6,-3,-1">Standard 4</option>
|
||||||
<option value="-6,-4,-2">-6,-4,-2</option>
|
<option value="-6,-5,-4,-3,-2,-1">Smooth 6</option>
|
||||||
<option value="-8,-6,-4,-2">-8,-6,-4,-2</option>
|
<option value="-9,-8,-7,-6,-5,-4,-3,-2,-1">Smooth 9</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
@ -421,11 +489,21 @@
|
||||||
</table>
|
</table>
|
||||||
<p onmouseover="tip('Generator settings. Getting applied immediately on change')">Generator settings:</p>
|
<p onmouseover="tip('Generator settings. Getting applied immediately on change')">Generator settings:</p>
|
||||||
<table>
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td onmouseover="tip('Set dialog and tool windows transparency')">Transparency</td>
|
||||||
|
<td>
|
||||||
|
<input id="transparencyInput" type="range" min="0" max="100" value="0" oninput="transparencyOutput.value = this.value">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<output id="transparencyOutput">0</output>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td onmouseover="tip('Define relative size of a saved png images. Consider saving big images is slow')">PNG resolution</td>
|
<td onmouseover="tip('Define relative size of a saved png images. Consider saving big images is slow')">PNG resolution</td>
|
||||||
<td>
|
<td>
|
||||||
<input id="pngResolution" type="range" min="1" max="10" value="5" oninput="pngResolutionOutput.value = this.value + 'x'">
|
<input id="pngResolutionInput" type="range" min="1" max="10" value="5" oninput="pngResolutionOutput.value = this.value + 'x'">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<output id="pngResolutionOutput">5x</output>
|
<output id="pngResolutionOutput">5x</output>
|
||||||
|
|
@ -433,7 +511,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td onmouseover="tip('Set default zoom extent')">Zoom extent</td>
|
<td onmouseover="tip('Set mininum and maximum zoom level')">Zoom extent</td>
|
||||||
<td style="width: 130px;">
|
<td style="width: 130px;">
|
||||||
<span onmouseover="tip('Zoom out limit')">o:</span>
|
<span onmouseover="tip('Zoom out limit')">o:</span>
|
||||||
<input class="pairedNumber" id="zoomExtentMin" type="number" min="0.2" step="0.1" max="20" value="1">
|
<input class="pairedNumber" id="zoomExtentMin" type="number" min="0.2" step="0.1" max="20" value="1">
|
||||||
|
|
@ -445,12 +523,14 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<button id="optionsReset" onmouseover="tip('Click to restore default options')">Reset Defaults</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="customizeContent" class="tabcontent" style="display: block;">
|
<div id="customizeContent" class="tabcontent" style="display: block;">
|
||||||
<div id="openEditor">
|
<div id="openEditor">
|
||||||
<p>Customize:</p>
|
<p>Customize:</p>
|
||||||
<button id="editHeightmap" onmouseover="tip('Click to open Heightmap customization menu')">Heightmap</button>
|
<button id="editHeightmap" onmouseover="tip('Click to open Heightmap customization menu')">Heightmap</button>
|
||||||
<button id="editCountries" onmouseover="tip('Click to open Countries Editor')">Countries</button>
|
<button id="editCountries" onmouseover="tip('Click to open Countries Editor')">Countries</button>
|
||||||
|
<button id="editCultures" onmouseover="tip('Click to open Cultures Editor')">Cultures</button>
|
||||||
<button id="editScale" onmouseover="tip('Click to open Scale Editor')">Scale</button>
|
<button id="editScale" onmouseover="tip('Click to open Scale Editor')">Scale</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="customizeHeightmap" style="display: none;">
|
<div id="customizeHeightmap" style="display: none;">
|
||||||
|
|
@ -458,7 +538,7 @@
|
||||||
<div>
|
<div>
|
||||||
<button onmouseover="tip('Edit the current Heightmap')" id="fromHeightmap">Edit</button>
|
<button onmouseover="tip('Edit the current Heightmap')" id="fromHeightmap">Edit</button>
|
||||||
<button onmouseover="tip('Remove all data and start from scratch')" id="fromScratch">Clear all</button>
|
<button onmouseover="tip('Remove all data and start from scratch')" id="fromScratch">Clear all</button>
|
||||||
<button class="buttonoff" onmouseover="tip('Finalize the Heightmap. Not allowed if landmass area is insufficient')" id="getMap" disabled="disabled">Complete</button>
|
<button class="buttonoff" onmouseover="tip('Finalize the Heightmap. Not allowed if landmass area is insufficient')" id="getMap">Complete</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="customizationMenu" class="hidden">
|
<div id="customizationMenu" class="hidden">
|
||||||
<div id="customizeTools">
|
<div id="customizeTools">
|
||||||
|
|
@ -468,7 +548,15 @@
|
||||||
<button onmouseover="tip('Open Image Converter')" id="convertImage">Image Converter</button>
|
<button onmouseover="tip('Open Image Converter')" id="convertImage">Image Converter</button>
|
||||||
<button onmouseover="tip('Show Heightmap in perspective')" id="perspectiveView">Perspective View</button>
|
<button onmouseover="tip('Show Heightmap in perspective')" id="perspectiveView">Perspective View</button>
|
||||||
</div>
|
</div>
|
||||||
<label onmouseover="tip('Number of Land cells and landmass/ocean ratio')">Landmass: <span id="landmassCounter">0</span></label><hr>
|
<div id="customizeOptions">
|
||||||
|
<input id="renderOcean" class="checkbox" type="checkbox">
|
||||||
|
<label for="renderOcean" onmouseover="tip('Render cells below sea level')" class="checkbox-label">Render ocean cells</label>
|
||||||
|
<input id="changeHeights" class="checkbox" type="checkbox" checked>
|
||||||
|
<label for="changeHeights" onmouseover="tip('Allow system to change custom heights if reasonable')" class="checkbox-label">Change heights</label>
|
||||||
|
</div>
|
||||||
|
<label onmouseover="tip('Number of Land cells and landmass/ocean ratio')">Landmass:
|
||||||
|
<span id="landmassCounter">0</span> (<span id="landmassRatio">0</span>%); Average Elevation: <span id="landmassAverage">0</span>
|
||||||
|
</label><hr>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="addFeature">
|
<div id="addFeature">
|
||||||
|
|
@ -484,6 +572,7 @@
|
||||||
<div>
|
<div>
|
||||||
Coord: <span id="infoX">0</span>/<span id="infoY">0</span><br>
|
Coord: <span id="infoX">0</span>/<span id="infoY">0</span><br>
|
||||||
Cell: <span id="infoCell">0</span><br>
|
Cell: <span id="infoCell">0</span><br>
|
||||||
|
Area: <span id="infoArea">0</span><br>
|
||||||
Height: <span id="infoHeight">0</span><br>
|
Height: <span id="infoHeight">0</span><br>
|
||||||
Flux: <span id="infoFlux">0</span>
|
Flux: <span id="infoFlux">0</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -491,36 +580,38 @@
|
||||||
Type: <span id="infoFeature">n/a</span><br>
|
Type: <span id="infoFeature">n/a</span><br>
|
||||||
Country: <span id="infoCountry">n/a</span><br>
|
Country: <span id="infoCountry">n/a</span><br>
|
||||||
Culture: <span id="infoCulture">n/a</span><br>
|
Culture: <span id="infoCulture">n/a</span><br>
|
||||||
|
Population: <span id="infoPopulation">0</span><br>
|
||||||
Burg: <span id="infoBurg">n/a</span>
|
Burg: <span id="infoBurg">n/a</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="aboutContent" class="tabcontent">
|
<div id="aboutContent" class="tabcontent">
|
||||||
<p><a href="https://github.com/Azgaar/Fantasy-Map-Generator" target="_blank">Fantasy Map Generator</a> is an <a href="https://github.com/Azgaar/Fantasy-Map-Generator/blob/master/LICENSE" target="_blank">open source</a> tool which procedurally generates fantasy maps. You may either use an auto-generated maps or create your own map manually or with a help of templates or image converter. Check out the <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Quick-Start-Tutorial" target="_blank">quick start tutorial</a> and <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki" target="_blank">project wiki</a> for guidance.</p>
|
<p><a href="https://github.com/Azgaar/Fantasy-Map-Generator" target="_blank">Fantasy Map Generator</a> is an <a href="https://github.com/Azgaar/Fantasy-Map-Generator/blob/master/LICENSE" target="_blank">open source</a> tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a map from scratch. Check out the <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Quick-Start-Tutorial" target="_blank">quick start tutorial</a> and <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki" target="_blank">project wiki</a> for guidance. Join our <a href="https://www.reddit.com/r/FantasyMapGenerator/" target="_blank">Reddit Community</a> if you have questions, need any help, have a suggestion or just want to share a created map.</p>
|
||||||
<p>This is a Demo version, the Generator is still under development. For older versions see the <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog" target="_blank">changelog</a>. Some details are covered in my <a href="https://azgaar.wordpress.com/" target="_blank">blog</a>. To track the current progress see the <a href="https://trello.com/b/7x832DG4/fantasy-map-generator" target="_blank">devboard</a>.</p>
|
<p>The project is under active development. For older versions see the <a href="https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog" target="_blank">changelog</a>. Some details are covered in my <a href="https://azgaar.wordpress.com/" target="_blank">blog</a>. To track the current progress see the <a href="https://trello.com/b/7x832DG4/fantasy-map-generator" target="_blank">devboard</a>.</p>
|
||||||
<p>Please report bugs and suggest new features <a href="https://github.com/Azgaar/Fantasy-Map-Generator/issues" target="_blank">here</a>. You may also <a href="mailto:maxganiev@yandex.ru">send me</a> an email.</p>
|
<p>Please report bugs <a href="https://github.com/Azgaar/Fantasy-Map-Generator/issues" target="_blank">here</a>. You may also <a href="mailto:maxganiev@yandex.ru" target="_blank">send me</a> an email.</p>
|
||||||
<ul class="share-buttons">
|
<ul class="share-buttons">
|
||||||
<li><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F"e=" onmouseover="tip('Share on Facebook')" target="_blank"><img alt="Share on Facebook" src="images/Facebook.png" /></a></li>
|
<li><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F"e=" onmouseover="tip('Share on Facebook')" target="_blank"><img alt="Share on Facebook" src="images/Facebook.png" /></a></li>
|
||||||
<li><a href="https://twitter.com/intent/tweet?source=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F&text=:%20https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F" target="_blank" onmouseover="tip('Tweet')"><img alt="Tweet" src="images/Twitter.png" /></a></li>
|
<li><a href="https://twitter.com/intent/tweet?source=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator&text=%23FantasyMapGenerator%0A%0Ahttps%3A//azgaar.github.io/Fantasy-Map-Generator" target="_blank" onmouseover="tip('Tweet')"><img alt="Tweet" src="images/Twitter.png" /></a></li>
|
||||||
<li><a href="http://www.tumblr.com/share?v=3&u=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F"e=&s=" target="_blank" onmouseover="tip('Post to Tumblr')"><img alt="Post to Tumblr" src="images/Tumblr.png" /></a></li>
|
<li><a href="http://www.tumblr.com/share?v=3&u=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator" target="_blank" onmouseover="tip('Post to Tumblr')"><img alt="Post to Tumblr" src="images/Tumblr.png" /></a></li>
|
||||||
<li><a href="http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator%2F&description=" target="_blank" onmouseover="tip('Pin it')"><img alt="Pin it" src="images/Pinterest.png" /></a></li>
|
<li><a href="http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator" target="_blank" onmouseover="tip('Pin it')"><img alt="Pin it" src="images/Pinterest.png" /></a></li>
|
||||||
<li><a href="http://www.reddit.com/submit?url=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator" target="_blank" onmouseover="tip('Submit to Reddit')"><img alt="Submit to Reddit" src="images/Reddit.png" /></a></li>
|
<li><a href="http://www.reddit.com/submit?url=https%3A%2F%2Fazgaar.github.io%2FFantasy-Map-Generator" target="_blank" onmouseover="tip('Submit to Reddit')"><img alt="Submit to Reddit" src="images/Reddit.png" /></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="sticked">
|
<div id="sticked">
|
||||||
<button id="randomMap" onmouseover="tip('Generate new random map based on options being set (F2)')" class="options">New Map</button>
|
<button id="randomMap" onmouseover="tip('Generate a new map based on options. May take about 1 minute. Hotkey: F6')" class="options">New Map</button>
|
||||||
<button id="saveButton" onmouseover="tip('Select file format to save map')" class="options">Save as</button>
|
<button id="saveButton" onmouseover="tip('Select file format to save map')" class="options">Save as</button>
|
||||||
<div id="saveDropdown">
|
<div id="saveDropdown">
|
||||||
<div id="saveMap" onmouseover="tip('Save as fully functional map in .map format')">.map</div>
|
<div id="saveMap" onmouseover="tip('Save as fully functional map in .map format. Hotkey: M')">.map</div>
|
||||||
<div id="saveSVG" onmouseover="tip('Download the map as .svg image (open derectly in browser or in vector editor like Inkscape)')">.svg</div>
|
<div id="saveSVG" onmouseover="tip('Download the map as .svg image (open in browser or in Inkscape. Hotkey: S)')">.svg</div>
|
||||||
<div id="savePNG" onmouseover="tip('Download the visible part of the map as 4K .png image. Please ensure popups are not blocked!')">.png</div>
|
<div id="savePNG" onmouseover="tip('Download the visible part of the map as 4K .png image. Please ensure popups are not blocked! Hotkey: P')">.png</div>
|
||||||
</div>
|
</div>
|
||||||
<button id="loadMap" onmouseover="tip('Load fully functional map in a .map format')" class="options">Load</button>
|
<button id="loadMap" onmouseover="tip('Load fully functional map in a .map format. Hotkey: L')" class="options">Load</button>
|
||||||
<button id="zoomReset" onmouseover="tip('Reset map zoom to default')" class="options">Reset Zoom</button>
|
<button id="zoomReset" onmouseover="tip('Reset map zoom. Hotkey: 0')" class="options">Reset Zoom</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="dialogs" style="background-color: #ffffff">
|
||||||
<div id="labelEditor" class="dialog" style="display: none">
|
<div id="labelEditor" class="dialog" style="display: none">
|
||||||
<button id="editGroupButton" onmouseover="tip('Edit label Group')" class="editButton icon-tags"></button>
|
<button id="editGroupButton" onmouseover="tip('Edit label Group')" class="editButton icon-tags"></button>
|
||||||
<select id="editGroupSelect" onmouseover="tip('Select Group for this label')" class="editTrigger"></select>
|
<select id="editGroupSelect" onmouseover="tip('Select Group for this label')" class="editTrigger"></select>
|
||||||
|
|
@ -693,13 +784,15 @@
|
||||||
|
|
||||||
<button id="burgFeatures" onmouseover="tip('Change Burg features')" class="icon-cog-alt"></button>
|
<button id="burgFeatures" onmouseover="tip('Change Burg features')" class="icon-cog-alt"></button>
|
||||||
<div id="burgFeaturesSection" style="display: none">
|
<div id="burgFeaturesSection" style="display: none">
|
||||||
<button id="burgToggleCapital" onmouseover="tip('Mark the Burg as country capital. Neutral burg cannot be capital')" class="icon-star"></button>
|
<button id="burgToggleCapital" onmouseover="tip('Mark the Burg as country capital. Neutral burg cannot be a capital')" class="icon-star"></button>
|
||||||
<button id="burgTogglePort" onmouseover="tip('Mark the Burg as port. Only coastal and riverine burgs can be ports')" class="icon-anchor"></button>
|
<button id="burgTogglePort" onmouseover="tip('Mark the Burg as port (toggle anchor icon)')" class="icon-anchor"></button>
|
||||||
<i onmouseover="tip('Set Burg population')" class="icon-users"></i>
|
<i onmouseover="tip('Set Burg population')" class="icon-users"></i>
|
||||||
<input id="burgPopulation" onmouseover="tip('Set Burg population (in population points)')" type="number" value="1" min="0" step="1" style="width: 40px;"></select>
|
<input id="burgPopulation" onmouseover="tip('Set Burg population (in population points)')" type="number" value="1" min="0" step="1" style="width: 40px;"></select>
|
||||||
<output id="burgPopulationFriendly" onmouseover="tip('Burg population (in people)')">1000</output>
|
<output id="burgPopulationFriendly" onmouseover="tip('Burg population (in people)')">1000</output>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<button id="burgSeeInMFCG" onmouseover="tip('See the burg representation in Medieval Fantasy City Generator by watabou')" class="icon-map"></button>
|
||||||
|
<button id="burgRelocate" onmouseover="tip('Move burg to a different cell')" class="icon-target"></button>
|
||||||
<button id="burgAddfromEditor" onmouseover="tip('Add new Burg')" class="icon-plus"></button>
|
<button id="burgAddfromEditor" onmouseover="tip('Add new Burg')" class="icon-plus"></button>
|
||||||
<button id="burgRemove" onmouseover="tip('Remove the Burg')" class="icon-trash"></button>
|
<button id="burgRemove" onmouseover="tip('Remove the Burg')" class="icon-trash"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -714,6 +807,8 @@
|
||||||
<option value="templateContinents">Continents</option>
|
<option value="templateContinents">Continents</option>
|
||||||
<option value="templateArchipelago">Archipelago</option>
|
<option value="templateArchipelago">Archipelago</option>
|
||||||
<option value="templateAtoll">Atoll</option>
|
<option value="templateAtoll">Atoll</option>
|
||||||
|
<option value="templateMainland">Mainland</option>
|
||||||
|
<option value="templatePeninsulas">Peninsulas</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="templateTools">
|
<div id="templateTools">
|
||||||
|
|
@ -737,8 +832,9 @@
|
||||||
<button id="templateUndo" onmouseover="tip('Undo the latest action')" class="icon-ccw" disabled></button>
|
<button id="templateUndo" onmouseover="tip('Undo the latest action')" class="icon-ccw" disabled></button>
|
||||||
<button id="templateRedo" onmouseover="tip('Redo the action')" class="icon-cw" disabled></button>
|
<button id="templateRedo" onmouseover="tip('Redo the action')" class="icon-cw" disabled></button>
|
||||||
<button id="templateComplete" onmouseover="tip('Finalize the Heightmap. Not allowed if insufficient land area available')" class="icon-check"></button>
|
<button id="templateComplete" onmouseover="tip('Finalize the Heightmap. Not allowed if insufficient land area available')" class="icon-check"></button>
|
||||||
<button id="templateLoad" onmouseover="tip('Open previously saved template')" class="icon-upload"></button>
|
|
||||||
<button id="templateSave" onmouseover="tip('Save template')" class="icon-download"></button>
|
<button id="templateSave" onmouseover="tip('Save template')" class="icon-download"></button>
|
||||||
|
<button id="templateLoad" onmouseover="tip('Open previously saved template')" class="icon-upload"></button>
|
||||||
|
<button id="templateMail" onclick="window.open('mailto:maxganiev@yandex.com?Subject=Template%20suggestion', '_blank')" onmouseover="tip('Send a template suggestion to me')" class="icon-mail-alt"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -781,9 +877,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div style="display: table;">
|
<div style="display: table;">
|
||||||
<label id="brushRadiusLabel" onmouseover="tip('Set the brush effective radius. Works only with 4 brushes above')" class="disabled italic">R:</label>
|
<label id="brushRadiusLabel" onmouseover="tip('Set the brush effective radius. Works only with 4 brushes above')" class="disabled italic">R:</label>
|
||||||
<input id="brushRadius" onchange="this.title = this.value" type="range" min="1" max="10" value="3" class="disabled" disabled>
|
<input id="brushRadius" oninput="tip('Brush radius: '+this.value)" type="range" min="1" max="10" value="3" class="disabled" disabled>
|
||||||
<label onmouseover="tip('Set the brush power')" class="italic">H:</label>
|
<label onmouseover="tip('Set the brush power in points of height')" class="italic">H:</label>
|
||||||
<input id="brushPower" onchange="this.title = this.value" type="range" min="0.01" max="0.3" step="0.01" value="0.05">
|
<input id="brushPower" oninput="tip('Brush power: '+this.value)" type="range" min="1" max="30" value="5">
|
||||||
</div>
|
</div>
|
||||||
<div id="modifyButtons">
|
<div id="modifyButtons">
|
||||||
<button id="undo" onmouseover="tip('Undo the latest action (Ctrl + Z)')" class="icon-ccw" disabled></button>
|
<button id="undo" onmouseover="tip('Undo the latest action (Ctrl + Z)')" class="icon-ccw" disabled></button>
|
||||||
|
|
@ -792,9 +888,9 @@
|
||||||
<input id="rescaler" onmouseover="tip('Slide to change map height')" type="range" min="1" max="10" step="0.1" value="5" class="hidden">
|
<input id="rescaler" onmouseover="tip('Slide to change map height')" type="range" min="1" max="10" step="0.1" value="5" class="hidden">
|
||||||
<button id="rescaleCondButton" onmouseover="tip('Conditional rescaler')" class="icon-if"></button>
|
<button id="rescaleCondButton" onmouseover="tip('Conditional rescaler')" class="icon-if"></button>
|
||||||
<label class="condition hidden">h ≥</label>
|
<label class="condition hidden">h ≥</label>
|
||||||
<input id="rescaleLower" class="condition hidden" onmouseover="tip('Set lower threshold')" value="0.2" type="number" min="0" max="1" step="0.01">
|
<input id="rescaleLower" class="condition hidden" onmouseover="tip('Set lower threshold')" value="20" type="number" min="0" max="100">
|
||||||
<label class="condition hidden">≤</label>
|
<label class="condition hidden">≤</label>
|
||||||
<input id="rescaleHigher" class="condition hidden" onmouseover="tip('Set higher threshold')" value="1" type="number" min="0.01" max="1" step="0.01">
|
<input id="rescaleHigher" class="condition hidden" onmouseover="tip('Set higher threshold')" value="100" type="number" min="1" max="100">
|
||||||
<label class="condition hidden">⇒</label>
|
<label class="condition hidden">⇒</label>
|
||||||
<select class="condition hidden" id="conditionSign">
|
<select class="condition hidden" id="conditionSign">
|
||||||
<option value="×" selected>×</option>
|
<option value="×" selected>×</option>
|
||||||
|
|
@ -812,20 +908,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="perspectivePanel" class="dialog stable" style="display: none">
|
<div id="perspectivePanel" class="dialog stable" style="display: none">
|
||||||
<div id="lineSlider" class="slider">
|
<canvas id="perspective" width="480" height="150"></canvas>
|
||||||
<div id="lineHandle0" class="ui-slider-handle" data-value=240></div>
|
|
||||||
<div id="lineHandle1" class="ui-slider-handle" data-value=90></div>
|
|
||||||
</div><br>
|
|
||||||
<div id="ySlider" class="slider">
|
|
||||||
<div id="yHandle" class="ui-slider-handle" data-value=4></div>
|
|
||||||
</div><br>
|
|
||||||
<div id="scaleSlider" class="slider">
|
|
||||||
<div id="scaleHandle" class="ui-slider-handle" data-value=1></div>
|
|
||||||
</div><br>
|
|
||||||
<div id="heightSlider" class="slider">
|
|
||||||
<div id="heightHandle" class="ui-slider-handle" data-value=30></div>
|
|
||||||
</div><br>
|
|
||||||
<canvas id="perspective" width="480" height="200"></canvas>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="countriesEditor" class="dialog stable" style="display: none" data-type="absolute">
|
<div id="countriesEditor" class="dialog stable" style="display: none" data-type="absolute">
|
||||||
|
|
@ -854,17 +937,20 @@
|
||||||
<button id="countriesManuallyComplete" onmouseover="tip('Apply assignment')" class="icon-check"></button>
|
<button id="countriesManuallyComplete" onmouseover="tip('Apply assignment')" class="icon-check"></button>
|
||||||
<button id="countriesAddM" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
<button id="countriesAddM" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
||||||
<button id="countriesManuallyCancel" onmouseover="tip('Cancel assignment')" class="icon-cancel"></button>
|
<button id="countriesManuallyCancel" onmouseover="tip('Cancel assignment')" class="icon-cancel"></button>
|
||||||
<label onmouseover="tip('Set the brush power')" class="italic">Brush size:</label>
|
<label onmouseover="tip('Set the brush size')" class="italic">Brush size:</label>
|
||||||
<input id="countriesManuallyBrush" onchange="this.title = this.value" type="range" min="1" max="7" value="3">
|
<input id="countriesManuallyBrush" oninput="tip('Brush size: '+this.value); countriesManuallyBrushNumber.value = this.value" type="range" min="1" max="7" value="3">
|
||||||
|
<input id="countriesManuallyBrushNumber" oninput="tip('Brush size: '+this.value); countriesManuallyBrush.value = this.value" type="number" min="1" max="7" value="3">
|
||||||
</div>
|
</div>
|
||||||
<div id="countriesRegenerateButtons" style="display: none">
|
<div id="countriesRegenerateButtons" style="display: none">
|
||||||
<button id="countriesApply" onmouseover="tip('Apply assignment')" class="icon-check"></button>
|
<button id="countriesApply" onmouseover="tip('Apply assignment')" class="icon-check"></button>
|
||||||
<button id="countriesRandomize" onmouseover="tip('Randomize countries Expansion value')" class="icon-shuffle"></button>
|
<button id="countriesRandomize" onmouseover="tip('Randomize countries Expansion value')" class="icon-shuffle"></button>
|
||||||
<button id="countriesAddR" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
<button id="countriesAddR" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
||||||
<label onmouseover="tip('Distance to a consider a land as neutral')" class="italic">Neutral distance:</label>
|
<label onmouseover="tip('Distance to a consider a land as neutral')" class="italic">Neutral distance:</label>
|
||||||
<input id="countriesNeutral" onchange="this.title = this.value" type="range" min="1" max="500" value="200">
|
<input id="countriesNeutral" oninput="tip('Neutral distance: '+this.value); countriesNeutralNumber.value = this.value" type="range" min="1" max="500" value="200">
|
||||||
|
<input id="countriesNeutralNumber" oninput="tip('Neutral distance: '+this.value); countriesNeutral.value = this.value" type="number" min="1" max="500" value="200" style="width:42px">
|
||||||
</div>
|
</div>
|
||||||
<button id="countriesAddG" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
<button id="countriesAddG" onmouseover="tip('Proclaim a new country')" class="icon-flag"></button>
|
||||||
|
<button id="countriesRegenerateNames" onmouseover="tip('Regenerate countries names')" class="icon-arrows-cw"></button>
|
||||||
<button id="countriesExport" onmouseover="tip('Save country-related data as a text file (.csv)')" class="icon-download"></button>
|
<button id="countriesExport" onmouseover="tip('Save country-related data as a text file (.csv)')" class="icon-download"></button>
|
||||||
<button id="burgNamesImport" onmouseover="tip('Load burg names from a text file. Each name should be on a new line!')" class="icon-upload"></button>
|
<button id="burgNamesImport" onmouseover="tip('Load burg names from a text file. Each name should be on a new line!')" class="icon-upload"></button>
|
||||||
<button id="removeCountries" onmouseover="tip('Remove all countries')" class="icon-trash"></button>
|
<button id="removeCountries" onmouseover="tip('Remove all countries')" class="icon-trash"></button>
|
||||||
|
|
@ -891,12 +977,85 @@
|
||||||
<div id="burgsBottom">
|
<div id="burgsBottom">
|
||||||
<button id="editScaleBurgs" onmouseover="tip('Change demographical and geographical measurements')" class="icon-map-signs"></button>
|
<button id="editScaleBurgs" onmouseover="tip('Change demographical and geographical measurements')" class="icon-map-signs"></button>
|
||||||
<button id="changeCapital" onmouseover="tip('Click on a burg line to make it a new capital')" class="icon-star"></button>
|
<button id="changeCapital" onmouseover="tip('Click on a burg line to make it a new capital')" class="icon-star"></button>
|
||||||
<button id="regenerateBurgNames" onmouseover="tip('Regenerate burg names')" class="icon-cog-alt"></button>
|
<button id="regenerateBurgNames" onmouseover="tip('Regenerate burg names based on assigned culture')" class="icon-arrows-cw"></button>
|
||||||
<button id="burgAdd" onmouseover="tip('Add new burg')" class="icon-fort-awesome"></button>
|
<button id="burgAdd" onmouseover="tip('Add new burg')" class="icon-fort-awesome"></button>
|
||||||
<button id="removeBurgs" onmouseover="tip('Remove all burgs')" class="icon-trash"></button>
|
<button id="removeBurgs" onmouseover="tip('Remove all burgs')" class="icon-trash"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="culturesEditor" class="dialog stable" style="display: none" data-type="absolute">
|
||||||
|
<div id="culturesHeader">
|
||||||
|
<div style="margin-left: 14px" onmouseover="tip('Click to sort by culture name')" class="sortable alphabetically" data-sortby="culture">Culture </div>
|
||||||
|
<div style="margin-left: 16px" onmouseover="tip('Click to sort by culture cells count')" class="sortable" data-sortby="cells">Cells </div>
|
||||||
|
<div style="margin-left: 18px" onmouseover="tip('Click to sort by culture area')" class="sortable" data-sortby="area">Area </div>
|
||||||
|
<div style="margin-left: 30px" onmouseover="tip('Click to sort by culture population')" class="sortable" data-sortby="population">Population </div>
|
||||||
|
<div style="margin-left: 3px" onmouseover="tip('Click to sort by culture namesbase')" class="sortable alphabetically" data-sortby="base">Namesbase </div>
|
||||||
|
</div>
|
||||||
|
<div id="culturesBody"></div>
|
||||||
|
|
||||||
|
<div id="culturesFooter" class="totalLine">
|
||||||
|
<div onmouseover="tip('Cultures number (active / total)')" style="margin-left: 7px">Cultures: <span id="culturesFooterCultures">0 / 7</span></div>
|
||||||
|
<div onmouseover="tip('Total Land cells number')" style="margin-left: 7px">Cells: <span id="culturesFooterCells">0</span></div>
|
||||||
|
<div onmouseover="tip('Total Land Area')" style="margin-left: 7px">Area: <span id="culturesFooterArea">0</span></div>
|
||||||
|
<div onmouseover="tip('Total Population')" style="margin-left: 7px">Population: <span id="culturesFooterPopulation">0</span></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="culturesBottom">
|
||||||
|
<button id="culturesPercentage" onmouseover="tip('Toggle percentage / absolut values views')" class="icon-percent"></button>
|
||||||
|
<button id="culturesManually" onmouseover="tip('Manually re-assign cultures')" class="icon-brush"></button>
|
||||||
|
<div id="culturesManuallyButtons" style="display: none">
|
||||||
|
<button id="culturesManuallyComplete" onmouseover="tip('Apply assignment')" class="icon-check"></button>
|
||||||
|
<button id="culturesManuallyCancel" onmouseover="tip('Cancel assignment')" class="icon-cancel"></button>
|
||||||
|
<label onmouseover="tip('Set the brush size')" class="italic">Brush size:</label>
|
||||||
|
<input id="culturesManuallyBrush" oninput="tip('Brush size: '+this.value); culturesManuallyBrushNumber.value = this.value" type="range" min="1" max="7" value="3">
|
||||||
|
<input id="culturesManuallyBrushNumber" oninput="tip('Brush size: '+this.value); culturesManuallyBrush.value = this.value" type="number" min="1" max="7" value="3">
|
||||||
|
</div>
|
||||||
|
<button id="culturesRandomize" onmouseover="tip('Randomly re-distribute cultures')" class="icon-shuffle"></button>
|
||||||
|
<button id="culturesRegenerateNames" onmouseover="tip('Re-generate all Burg names based on assigned culture')" class="icon-arrows-cw"></button>
|
||||||
|
<button id="culturesEditNamesBase" onmouseover="tip('Edit a database used for names generation')" class="icon-list-bullet"></button>
|
||||||
|
<button id="culturesAdd" onmouseover="tip('Add a new culture')" class="icon-plus"></button>
|
||||||
|
<button id="culturesExport" onmouseover="tip('Save cultures-related data as a text file (.csv)')" class="icon-download"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="namesbaseEditor" class="dialog stable" style="display: none">
|
||||||
|
<div id="namesbaseBasesTop">
|
||||||
|
<span>Select base: </span>
|
||||||
|
<select id="namesbaseSelect" onmouseover="tip('Select base to edit')" value="0"></select>
|
||||||
|
<span>Base name: </span>
|
||||||
|
<input id="namesbaseName" onmouseover="tip('Type to change a base name')" placeholder="Base name" autocorrect="off" spellcheck="false"/>
|
||||||
|
</div>
|
||||||
|
<div id="namesbaseBody">
|
||||||
|
<span>Names data:</span><br>
|
||||||
|
<textarea id="namesbaseTextarea" data-base="0" cols="70" rows="10" onmouseover="tip('Names data: a comma separated list of source names used for names generation')" placeholder="Provide a names data: a comma separated list of source names" autocorrect="off" spellcheck="false"></textarea>
|
||||||
|
<br>
|
||||||
|
<div>
|
||||||
|
<span>Method: </span><select onmouseover="tip('Select generation method')" id="namesbaseMethod">
|
||||||
|
<option value="let-to-let">Markov let-to-let</option>
|
||||||
|
<option value="let-to-syl">Markov let-to-syl</option>
|
||||||
|
<option value="syl-to-syl">Markov syl-to-syl</option>
|
||||||
|
<option value="selection">Random selection</option>
|
||||||
|
</select><span> Length: </span>
|
||||||
|
<input id="namesbaseMin" onmouseover="tip('Minimal name length recommendation')" type="number" min="2" max="100" value="4">
|
||||||
|
<input id="namesbaseMax" onmouseover="tip('Maximal name length recommendation')" type="number" min="2" value="10">
|
||||||
|
<span>Dublication: </span>
|
||||||
|
<input id="namesbaseDouble" onmouseover="tip('Populate with letters that can used twice in a row')" autocorrect="off" spellcheck="false" value="abc">
|
||||||
|
</div>
|
||||||
|
<fieldset>
|
||||||
|
<legend>Generated examples: </legend>
|
||||||
|
<div id="namesbaseExamples" onmouseover="tip('Generated examples. Click to re-gererate')"></div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div id="namesbaseBottom">
|
||||||
|
<button id="namesbaseDefault" onmouseover="tip('Restore default namesbase')" class="icon-cancel"></button>
|
||||||
|
<button id="namesbaseAdd" onmouseover="tip('Add a new base')" class="icon-plus"></button>
|
||||||
|
<button id="namesbaseUpdateExamples" onmouseover="tip('Re-generate examples based on provided data and generation method')" class="icon-cw"></button>
|
||||||
|
<button id="namesbaseDownload" onmouseover="tip('Download namesbase to PC')" class="icon-download"></button>
|
||||||
|
<button id="namesbaseUpload" onmouseover="tip('Upload a namesbase from PC')" class="icon-upload"></button>
|
||||||
|
<button id="namesbaseMail" onclick="window.open('mailto:maxganiev@yandex.com?Subject=Namesbase%20suggestion', '_blank')" onmouseover="tip('Send a namesbase suggestion to me')" class="icon-mail-alt"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="scaleEditor" class="dialog stable" style="display: none">
|
<div id="scaleEditor" class="dialog stable" style="display: none">
|
||||||
<div id="scaleBody">
|
<div id="scaleBody">
|
||||||
<div class="scaleHeader">
|
<div class="scaleHeader">
|
||||||
|
|
@ -915,8 +1074,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div onmouseover="tip('Select how many distance unit are in one pixel')">1 map pixel =</div>
|
<div onmouseover="tip('Select how many distance unit are in one pixel')">1 map pixel =</div>
|
||||||
<input id="distanceScale" onmouseover="tip('Select how many distance unit are in one pixel')" type="range" min="0.1" max="10" value="1" step="0.1">
|
<input id="distanceScale" onmouseover="tip('Select how many distance unit are in one pixel')" type="range" min="0.1" max="10" value="3" step="0.1">
|
||||||
<input id="scaleOutput" onmouseover="tip('Enter how many distance unit are in one pixel')" type="text" class="output" value="1 mi">
|
<input id="scaleOutput" onmouseover="tip('Enter how many distance unit are in one pixel')" type="text" class="output" value="3 mi">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div onmouseover="tip('Type area unit name, leave `square` just to add ² to the distance unit selected above')">Area unit: </div>
|
<div onmouseover="tip('Type area unit name, leave `square` just to add ² to the distance unit selected above')">Area unit: </div>
|
||||||
|
|
@ -951,8 +1110,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>Urbanization rate: </div>
|
<div>Urbanization rate: </div>
|
||||||
<input id="urbanization" onmouseover="tip('Set the ubranization (burgs population relative to all population) rate')" type="range" min="0.02" max="5" value="0.3" step="0.01">
|
<input id="urbanization" onmouseover="tip('Set the ubranization (burgs population relative to all population) rate')" type="range" min="0.01" max="5" value="1" step="0.01">
|
||||||
<input id="urbanizationOutput" onmouseover="tip('Enter the ubranization (burgs population relative to all population) rate')" type="text" class="output" value="0.3">
|
<input id="urbanizationOutput" onmouseover="tip('Enter the ubranization (burgs population relative to all population) rate')" type="text" class="output" value="1">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="scaleBottom">
|
<div id="scaleBottom">
|
||||||
|
|
@ -965,13 +1124,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="map-dragged" style="display: none">
|
|
||||||
<p>Drop to upload</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="alert" style="display: none">
|
<div id="alert" style="display: none">
|
||||||
<p id="alertMessage">Warning!</p>
|
<p id="alertMessage">Warning!</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="map-dragged" style="display: none">
|
||||||
|
<p>Drop to upload</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="tooltip" data-main="Сlick the arrow button to open options">Сlick the arrow button to open options</div>
|
<div id="tooltip" data-main="Сlick the arrow button to open options">Сlick the arrow button to open options</div>
|
||||||
|
|
||||||
|
|
@ -980,7 +1140,8 @@
|
||||||
<input type="file" accept=".txt,.csv" id="burgsListToLoad">
|
<input type="file" accept=".txt,.csv" id="burgsListToLoad">
|
||||||
<input type="file" accept="image/*" id="imageToLoad">
|
<input type="file" accept="image/*" id="imageToLoad">
|
||||||
<input type="file" accept=".txt" id="templateToLoad">
|
<input type="file" accept=".txt" id="templateToLoad">
|
||||||
|
<input type="file" accept=".txt" id="namesbaseToLoad">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="script.js?version=0.57.00b"></script>
|
<script src="script.js?version=0.59.07b"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
558
libs/jquery-ui.css
vendored
Normal file
558
libs/jquery-ui.css
vendored
Normal file
|
|
@ -0,0 +1,558 @@
|
||||||
|
/*! jQuery UI - v1.12.1 - 2018-08-15 http://jqueryui.com
|
||||||
|
* Includes: draggable.css, core.css, resizable.css, sortable.css, button.css, controlgroup.css, checkboxradio.css, dialog.css, theme.css
|
||||||
|
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||||||
|
|
||||||
|
.ui-draggable-handle {
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-helper-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.ui-helper-hidden-accessible {
|
||||||
|
border: 0;
|
||||||
|
clip: rect(0 0 0 0);
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
}
|
||||||
|
.ui-helper-reset {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
outline: 0;
|
||||||
|
line-height: 1.3;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 100%;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.ui-helper-clearfix:before,
|
||||||
|
.ui-helper-clearfix:after {
|
||||||
|
content: "";
|
||||||
|
display: table;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
.ui-helper-clearfix:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.ui-helper-zfix {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
filter:Alpha(Opacity=0); /* support: IE8 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-front {
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-disabled {
|
||||||
|
cursor: default !important;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Icons
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-icon {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-top: -.25em;
|
||||||
|
position: relative;
|
||||||
|
text-indent: -99999px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-widget-icon-block {
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -8px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.ui-resizable {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.ui-resizable-handle {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 0.1px;
|
||||||
|
display: block;
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
.ui-resizable-disabled .ui-resizable-handle,
|
||||||
|
.ui-resizable-autohide .ui-resizable-handle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.ui-resizable-n {
|
||||||
|
cursor: n-resize;
|
||||||
|
height: 7px;
|
||||||
|
width: 100%;
|
||||||
|
top: -5px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.ui-resizable-s {
|
||||||
|
cursor: s-resize;
|
||||||
|
height: 7px;
|
||||||
|
width: 100%;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.ui-resizable-e {
|
||||||
|
cursor: e-resize;
|
||||||
|
width: 7px;
|
||||||
|
right: -5px;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.ui-resizable-w {
|
||||||
|
cursor: w-resize;
|
||||||
|
width: 7px;
|
||||||
|
left: -5px;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.ui-resizable-se {
|
||||||
|
cursor: se-resize;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
right: 1px;
|
||||||
|
bottom: 1px;
|
||||||
|
}
|
||||||
|
.ui-resizable-sw {
|
||||||
|
cursor: sw-resize;
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
left: -5px;
|
||||||
|
bottom: -5px;
|
||||||
|
}
|
||||||
|
.ui-resizable-nw {
|
||||||
|
cursor: nw-resize;
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
left: -5px;
|
||||||
|
top: -5px;
|
||||||
|
}
|
||||||
|
.ui-resizable-ne {
|
||||||
|
cursor: ne-resize;
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
right: -5px;
|
||||||
|
top: -5px;
|
||||||
|
}
|
||||||
|
.ui-sortable-handle {
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
.ui-button {
|
||||||
|
padding: .4em 1em;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
line-height: normal;
|
||||||
|
margin-right: .1em;
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
/* Support: IE <= 11 */
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-button,
|
||||||
|
.ui-button:link,
|
||||||
|
.ui-button:visited,
|
||||||
|
.ui-button:hover,
|
||||||
|
.ui-button:active {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* to make room for the icon, a width needs to be set here */
|
||||||
|
.ui-button-icon-only {
|
||||||
|
width: 2em;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* button icon element(s) */
|
||||||
|
.ui-button-icon-only .ui-icon {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
margin-left: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-button.ui-icon-notext .ui-icon {
|
||||||
|
padding: 0;
|
||||||
|
width: 2.1em;
|
||||||
|
height: 2.1em;
|
||||||
|
text-indent: -9999px;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
input.ui-button.ui-icon-notext .ui-icon {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
text-indent: 0;
|
||||||
|
white-space: normal;
|
||||||
|
padding: .4em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
/* Support: Firefox 5 - 40 */
|
||||||
|
input.ui-button::-moz-focus-inner,
|
||||||
|
button.ui-button::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.ui-controlgroup {
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.ui-controlgroup > .ui-controlgroup-item {
|
||||||
|
float: left;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.ui-controlgroup > .ui-controlgroup-item:focus,
|
||||||
|
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-vertical .ui-controlgroup-item {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.ui-controlgroup .ui-controlgroup-label {
|
||||||
|
padding: .4em 1em;
|
||||||
|
}
|
||||||
|
.ui-controlgroup .ui-controlgroup-label span {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Spinner specific style fixes */
|
||||||
|
.ui-controlgroup-vertical .ui-spinner-input {
|
||||||
|
|
||||||
|
/* Support: IE8 only, Android < 4.4 only */
|
||||||
|
width: 75%;
|
||||||
|
width: calc( 100% - 2.4em );
|
||||||
|
}
|
||||||
|
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
||||||
|
border-top-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-checkboxradio-label .ui-icon-background {
|
||||||
|
box-shadow: inset 1px 1px 1px #ccc;
|
||||||
|
border-radius: .12em;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.ui-checkboxradio-radio-label .ui-icon-background {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
border-radius: 1em;
|
||||||
|
overflow: visible;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
||||||
|
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
||||||
|
background-image: none;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-width: 4px;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
.ui-checkboxradio-disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
body .ui-dialog {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
outline: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 12px;
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-titlebar {
|
||||||
|
padding: .4em 1em;
|
||||||
|
position: relative;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-title {
|
||||||
|
float: left;
|
||||||
|
margin: .1em 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 90%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-titlebar-close {
|
||||||
|
position: absolute;
|
||||||
|
right: .5em;
|
||||||
|
top: 53%;
|
||||||
|
width: 18px;
|
||||||
|
margin: -10px 0 0 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 18px;
|
||||||
|
color: #ffffff;
|
||||||
|
background: none;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-content {
|
||||||
|
position: relative;
|
||||||
|
border: 0;
|
||||||
|
padding: .5em 1em;
|
||||||
|
background: none;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-buttonpane {
|
||||||
|
text-align: left;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
background-image: none;
|
||||||
|
margin-top: .5em;
|
||||||
|
padding: .3em 1em .5em .4em;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-dialog-buttonpane button {
|
||||||
|
margin: .5em .4em .5em 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-n {
|
||||||
|
height: 2px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-e {
|
||||||
|
width: 2px;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-s {
|
||||||
|
height: 2px;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-w {
|
||||||
|
width: 2px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-se,
|
||||||
|
.ui-dialog .ui-resizable-sw,
|
||||||
|
.ui-dialog .ui-resizable-ne,
|
||||||
|
.ui-dialog .ui-resizable-nw {
|
||||||
|
width: 7px;
|
||||||
|
height: 7px;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-se {
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-sw {
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-ne {
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.ui-dialog .ui-resizable-nw {
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.ui-draggable .ui-dialog-titlebar {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Component containers
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-widget {
|
||||||
|
font-family: Arial,Helvetica,sans-serif;
|
||||||
|
}
|
||||||
|
.ui-widget input,
|
||||||
|
.ui-widget select,
|
||||||
|
.ui-widget textarea,
|
||||||
|
.ui-widget button {
|
||||||
|
font-family: Arial,Helvetica,sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
.ui-widget.ui-widget-content {
|
||||||
|
border: 1px solid #5e4fa2;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.ui-widget-content {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.ui-widget-content a {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.ui-widget-header {
|
||||||
|
border-bottom: 1px solid #5d4651;
|
||||||
|
background: #916e7f;
|
||||||
|
color: #ffffff;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.ui-widget-header a {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Interaction states
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-default,
|
||||||
|
.ui-widget-content .ui-state-default,
|
||||||
|
.ui-widget-header .ui-state-default,
|
||||||
|
.ui-button,
|
||||||
|
|
||||||
|
/* We use html here because we need a greater specificity to make sure disabled
|
||||||
|
works properly when clicked or hovered */
|
||||||
|
html .ui-button.ui-state-disabled:hover,
|
||||||
|
html .ui-button.ui-state-disabled:active {
|
||||||
|
border: 1px solid #c5c5c5;
|
||||||
|
background: #f6f6f6;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #454545;
|
||||||
|
}
|
||||||
|
.ui-state-default a,
|
||||||
|
.ui-state-default a:link,
|
||||||
|
.ui-state-default a:visited,
|
||||||
|
a.ui-button,
|
||||||
|
a:link.ui-button,
|
||||||
|
a:visited.ui-button,
|
||||||
|
.ui-button {
|
||||||
|
color: #454545;
|
||||||
|
}
|
||||||
|
.ui-button:active {
|
||||||
|
color: #5d4651;
|
||||||
|
border-color: #5d4651;
|
||||||
|
}
|
||||||
|
.ui-state-hover a,
|
||||||
|
.ui-state-hover a:hover,
|
||||||
|
.ui-state-hover a:link,
|
||||||
|
.ui-state-hover a:visited,
|
||||||
|
.ui-state-focus a,
|
||||||
|
.ui-state-focus a:hover,
|
||||||
|
.ui-state-focus a:link,
|
||||||
|
.ui-state-focus a:visited,
|
||||||
|
a.ui-button:hover,
|
||||||
|
a.ui-button:focus {
|
||||||
|
color: #2b2b2b;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-visual-focus {
|
||||||
|
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Interaction Cues
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-state-highlight,
|
||||||
|
.ui-widget-content .ui-state-highlight,
|
||||||
|
.ui-widget-header .ui-state-highlight {
|
||||||
|
border: 1px solid #dad55e;
|
||||||
|
background: #fffa90;
|
||||||
|
color: #777620;
|
||||||
|
}
|
||||||
|
.ui-state-checked {
|
||||||
|
border: 1px solid #dad55e;
|
||||||
|
background: #fffa90;
|
||||||
|
}
|
||||||
|
.ui-state-highlight a,
|
||||||
|
.ui-widget-content .ui-state-highlight a,
|
||||||
|
.ui-widget-header .ui-state-highlight a {
|
||||||
|
color: #777620;
|
||||||
|
}
|
||||||
|
.ui-state-error,
|
||||||
|
.ui-widget-content .ui-state-error,
|
||||||
|
.ui-widget-header .ui-state-error {
|
||||||
|
border: 1px solid #f1a899;
|
||||||
|
background: #fddfdf;
|
||||||
|
color: #5f3f3f;
|
||||||
|
}
|
||||||
|
.ui-state-error a,
|
||||||
|
.ui-widget-content .ui-state-error a,
|
||||||
|
.ui-widget-header .ui-state-error a {
|
||||||
|
color: #5f3f3f;
|
||||||
|
}
|
||||||
|
.ui-state-error-text,
|
||||||
|
.ui-widget-content .ui-state-error-text,
|
||||||
|
.ui-widget-header .ui-state-error-text {
|
||||||
|
color: #5f3f3f;
|
||||||
|
}
|
||||||
|
.ui-priority-primary,
|
||||||
|
.ui-widget-content .ui-priority-primary,
|
||||||
|
.ui-widget-header .ui-priority-primary {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.ui-priority-secondary,
|
||||||
|
.ui-widget-content .ui-priority-secondary,
|
||||||
|
.ui-widget-header .ui-priority-secondary {
|
||||||
|
opacity: .7;
|
||||||
|
filter:Alpha(Opacity=70); /* support: IE8 */
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.ui-state-disabled,
|
||||||
|
.ui-widget-content .ui-state-disabled,
|
||||||
|
.ui-widget-header .ui-state-disabled {
|
||||||
|
opacity: .35;
|
||||||
|
filter:Alpha(Opacity=35); /* support: IE8 */
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.ui-state-disabled .ui-icon {
|
||||||
|
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Misc visuals
|
||||||
|
----------------------------------*/
|
||||||
|
/* Overlays */
|
||||||
|
.ui-widget-overlay {
|
||||||
|
background: #aaaaaa;
|
||||||
|
opacity: .3;
|
||||||
|
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||||
|
}
|
||||||
|
.ui-widget-shadow {
|
||||||
|
-webkit-box-shadow: 0px 0px 5px #666666;
|
||||||
|
box-shadow: 0px 0px 5px #666666;
|
||||||
|
}
|
||||||
16
libs/jquery-ui.min.js
vendored
16
libs/jquery-ui.min.js
vendored
File diff suppressed because one or more lines are too long
1
libs/seedrandom.min.js
vendored
Normal file
1
libs/seedrandom.min.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!function(a,b){var l,c=eval("this"),d=256,g="random",h=b.pow(d,6),i=b.pow(2,52),j=2*i,k=d-1;function m(r,t,e){var u=[],f=q(function n(r,t){var e,o=[],i=typeof r;if(t&&"object"==i)for(e in r)try{o.push(n(r[e],t-1))}catch(n){}return o.length?o:"string"==i?r:r+"\0"}((t=1==t?{entropy:!0}:t||{}).entropy?[r,s(a)]:null==r?function(){try{var n;return l&&(n=l.randomBytes)?n=n(d):(n=new Uint8Array(d),(c.crypto||c.msCrypto).getRandomValues(n)),s(n)}catch(n){var r=c.navigator,t=r&&r.plugins;return[+new Date,c,t,c.screen,s(a)]}}():r,3),u),p=new n(u),m=function(){for(var n=p.g(6),r=h,t=0;n<i;)n=(n+t)*d,r*=d,t=p.g(1);for(;j<=n;)n/=2,r/=2,t>>>=1;return(n+t)/r};return m.int32=function(){return 0|p.g(4)},m.quick=function(){return p.g(4)/4294967296},m.double=m,q(s(p.S),a),(t.pass||e||function(n,r,t,e){return e&&(e.S&&o(e,p),n.state=function(){return o(p,{})}),t?(b[g]=n,r):n})(m,f,"global"in t?t.global:this==b,t.state)}function n(n){var r,t=n.length,u=this,e=0,o=u.i=u.j=0,i=u.S=[];for(t||(n=[t++]);e<d;)i[e]=e++;for(e=0;e<d;e++)i[e]=i[o=k&o+n[e%t]+(r=i[e])],i[o]=r;(u.g=function(n){for(var r,t=0,e=u.i,o=u.j,i=u.S;n--;)r=i[e=k&e+1],t=t*d+i[k&(i[e]=i[o=k&o+r])+(i[o]=r)];return u.i=e,u.j=o,t})(d)}function o(n,r){return r.i=n.i,r.j=n.j,r.S=n.S.slice(),r}function q(n,r){for(var t,e=n+"",o=0;o<e.length;)r[k&o]=k&(t^=19*r[k&o])+e.charCodeAt(o++);return s(r)}function s(n){return String.fromCharCode.apply(0,n)}if(b["seed"+g]=m,q(b.random(),a),"object"==typeof module&&module.exports){module.exports=m;try{l=require("crypto")}catch(n){}}else"function"==typeof define&&define.amd&&define(function(){return m})}([],Math);
|
||||||
10
names.js
10
names.js
|
|
@ -1,10 +0,0 @@
|
||||||
var cultures = ["Shwazen","Angshire","Luari","Latian","Toledi","Slovian","Varangian"];
|
|
||||||
var manorNames = [
|
|
||||||
["Achern","Aichhalden","Aitern","Albbruck","Alpirsbach","Altensteig","Althengstett","Appenweier","Auggen","Wildbad","Badenen","Badenweiler","Baiersbronn","Ballrechten","Bellingen","Berghaupten","Bernau","Biberach","Biederbach","Binzen","Birkendorf","Birkenfeld","Bischweier","Blumberg","Bollen","Bollschweil","Bonndorf","Bosingen","Braunlingen","Breisach","Breisgau","Breitnau","Brigachtal","Buchenbach","Buggingen","Buhl","Buhlertal","Calw","Dachsberg","Dobel","Donaueschingen","Dornhan","Dornstetten","Dottingen","Dunningen","Durbach","Durrheim","Ebhausen","Ebringen","Efringen","Egenhausen","Ehrenkirchen","Ehrsberg","Eimeldingen","Eisenbach","Elzach","Elztal","Emmendingen","Endingen","Engelsbrand","Enz","Enzklosterle","Eschbronn","Ettenheim","Ettlingen","Feldberg","Fischerbach","Fischingen","Fluorn","Forbach","Freiamt","Freiburg","Freudenstadt","Friedenweiler","Friesenheim","Frohnd","Furtwangen","Gaggenau","Geisingen","Gengenbach","Gernsbach","Glatt","Glatten","Glottertal","Gorwihl","Gottenheim","Grafenhausen","Grenzach","Griesbach","Gutach","Gutenbach","Hag","Haiterbach","Hardt","Harmersbach","Hasel","Haslach","Hausach","Hausen","Hausern","Heitersheim","Herbolzheim","Herrenalb","Herrischried","Hinterzarten","Hochenschwand","Hofen","Hofstetten","Hohberg","Horb","Horben","Hornberg","Hufingen","Ibach","Ihringen","Inzlingen","Kandern","Kappel","Kappelrodeck","Karlsbad","Karlsruhe","Kehl","Keltern","Kippenheim","Kirchzarten","Konigsfeld","Krozingen","Kuppenheim","Kussaberg","Lahr","Lauchringen","Lauf","Laufenburg","Lautenbach","Lauterbach","Lenzkirch","Liebenzell","Loffenau","Loffingen","Lorrach","Lossburg","Mahlberg","Malsburg","Malsch","March","Marxzell","Marzell","Maulburg","Monchweiler","Muhlenbach","Mullheim","Munstertal","Murg","Nagold","Neubulach","Neuenburg","Neuhausen","Neuried","Neuweiler","Niedereschach","Nordrach","Oberharmersbach","Oberkirch","Oberndorf","Oberbach","Oberried","Oberwolfach","Offenburg","Ohlsbach","Oppenau","Ortenberg","otigheim","Ottenhofen","Ottersweier","Peterstal","Pfaffenweiler","Pfalzgrafenweiler","Pforzheim","Rastatt","Renchen","Rheinau","Rheinfelden","Rheinmunster","Rickenbach","Rippoldsau","Rohrdorf","Rottweil","Rummingen","Rust","Sackingen","Sasbach","Sasbachwalden","Schallbach","Schallstadt","Schapbach","Schenkenzell","Schiltach","Schliengen","Schluchsee","Schomberg","Schonach","Schonau","Schonenberg","Schonwald","Schopfheim","Schopfloch","Schramberg","Schuttertal","Schwenningen","Schworstadt","Seebach","Seelbach","Seewald","Sexau","Simmersfeld","Simonswald","Sinzheim","Solden","Staufen","Stegen","Steinach","Steinen","Steinmauern","Straubenhardt","Stuhlingen","Sulz","Sulzburg","Teinach","Tiefenbronn","Tiengen","Titisee","Todtmoos","Todtnau","Todtnauberg","Triberg","Tunau","Tuningen","uhlingen","Unterkirnach","Reichenbach","Utzenfeld","Villingen","Villingendorf","Vogtsburg","Vohrenbach","Waldachtal","Waldbronn","Waldkirch","Waldshut","Wehr","Weil","Weilheim","Weisenbach","Wembach","Wieden","Wiesental","Wildberg","Winzeln","Wittlingen","Wittnau","Wolfach","Wutach","Wutoschingen","Wyhlen","Zavelstein"],
|
|
||||||
["Abingdon","Albrighton","Alcester","Almondbury","Altrincham","Amersham","Andover","Appleby","Ashboume","Atherstone","Aveton","Axbridge","Aylesbury","Baldock","Bamburgh","Barton","Basingstoke","Berden","Bere","Berkeley","Berwick","Betley","Bideford","Bingley","Birmingham","Blandford","Blechingley","Bodmin","Bolton","Bootham","Boroughbridge","Boscastle","Bossinney","Bramber","Brampton","Brasted","Bretford","Bridgetown","Bridlington","Bromyard","Bruton","Buckingham","Bungay","Burton","Calne","Cambridge","Canterbury","Carlisle","Castleton","Caus","Charmouth","Chawleigh","Chichester","Chillington","Chinnor","Chipping","Chisbury","Cleobury","Clifford","Clifton","Clitheroe","Cockermouth","Coleshill","Combe","Congleton","Crafthole","Crediton","Cuddenbeck","Dalton","Darlington","Dodbrooke","Drax","Dudley","Dunstable","Dunster","Dunwich","Durham","Dymock","Exeter","Exning","Faringdon","Felton","Fenny","Finedon","Flookburgh","Fowey","Frampton","Gateshead","Gatton","Godmanchester","Grampound","Grantham","Guildford","Halesowen","Halton","Harbottle","Harlow","Hatfield","Hatherleigh","Haydon","Helston","Henley","Hertford","Heytesbury","Hinckley","Hitchin","Holme","Hornby","Horsham","Kendal","Kenilworth","Kilkhampton","Kineton","Kington","Kinver","Kirby","Knaresborough","Knutsford","Launceston","Leighton","Lewes","Linton","Louth","Luton","Lyme","Lympstone","Macclesfield","Madeley","Malborough","Maldon","Manchester","Manningtree","Marazion","Marlborough","Marshfield","Mere","Merryfield","Middlewich","Midhurst","Milborne","Mitford","Modbury","Montacute","Mousehole","Newbiggin","Newborough","Newbury","Newenden","Newent","Norham","Northleach","Noss","Oakham","Olney","Orford","Ormskirk","Oswestry","Padstow","Paignton","Penkneth","Penrith","Penzance","Pershore","Petersfield","Pevensey","Pickering","Pilton","Pontefract","Portsmouth","Preston","Quatford","Reading","Redcliff","Retford","Rockingham","Romney","Rothbury","Rothwell","Salisbury","Saltash","Seaford","Seasalter","Sherston","Shifnal","Shoreham","Sidmouth","Skipsea","Skipton","Solihull","Somerton","Southam","Southwark","Standon","Stansted","Stapleton","Stottesdon","Sudbury","Swavesey","Tamerton","Tarporley","Tetbury","Thatcham","Thaxted","Thetford","Thornbury","Tintagel","Tiverton","Torksey","Totnes","Towcester","Tregoney","Trematon","Tutbury","Uxbridge","Wallingford","Wareham","Warenmouth","Wargrave","Warton","Watchet","Watford","Wendover","Westbury","Westcheap","Weymouth","Whitford","Wickwar","Wigan","Wigmore","Winchelsea","Winkleigh","Wiscombe","Witham","Witheridge","Wiveliscombe","Woodbury","Yeovil"],
|
|
||||||
["Adon","Aillant","Amilly","Andonville","Ardon","Artenay","Ascheres","Ascoux","Attray","Aubin","Audeville","Aulnay","Autruy","Auvilliers","Auxy","Aveyron","Baccon","Bardon","Barville","Batilly","Baule","Bazoches","Beauchamps","Beaugency","Beaulieu","Beaune","Bellegarde","Boesses","Boigny","Boiscommun","Boismorand","Boisseaux","Bondaroy","Bonnee","Bonny","Bordes","Bou","Bougy","Bouilly","Boulay","Bouzonville","Bouzy","Boynes","Bray","Breteau","Briare","Briarres","Bricy","Bromeilles","Bucy","Cepoy","Cercottes","Cerdon","Cernoy","Cesarville","Chailly","Chaingy","Chalette","Chambon","Champoulet","Chanteau","Chantecoq","Chapell","Charme","Charmont","Charsonville","Chateau","Chateauneuf","Chatel","Chatenoy","Chatillon","Chaussy","Checy","Chevannes","Chevillon","Chevilly","Chevry","Chilleurs","Choux","Chuelles","Clery","Coinces","Coligny","Combleux","Combreux","Conflans","Corbeilles","Corquilleroy","Cortrat","Coudroy","Coullons","Coulmiers","Courcelles","Courcy","Courtemaux","Courtempierre","Courtenay","Cravant","Crottes","Dadonville","Dammarie","Dampierre","Darvoy","Desmonts","Dimancheville","Donnery","Dordives","Dossainville","Douchy","Dry","Echilleuses","Egry","Engenville","Epieds","Erceville","Ervauville","Escrennes","Escrignelles","Estouy","Faverelles","Fay","Feins","Ferolles","Ferrieres","Fleury","Fontenay","Foret","Foucherolles","Freville","Gatinais","Gaubertin","Gemigny","Germigny","Gidy","Gien","Girolles","Givraines","Gondreville","Grangermont","Greneville","Griselles","Guigneville","Guilly","Gyleslonains","Huetre","Huisseau","Ingrannes","Ingre","Intville","Isdes","Jargeau","Jouy","Juranville","Bussiere","Laas","Ladon","Lailly","Langesse","Leouville","Ligny","Lombreuil","Lorcy","Lorris","Loury","Louzouer","Malesherbois","Marcilly","Mardie","Mareau","Marigny","Marsainvilliers","Melleroy","Menestreau","Merinville","Messas","Meung","Mezieres","Migneres","Mignerette","Mirabeau","Montargis","Montbarrois","Montbouy","Montcresson","Montereau","Montigny","Montliard","Mormant","Morville","Moulinet","Moulon","Nancray","Nargis","Nesploy","Neuville","Neuvy","Nevoy","Nibelle","Nogent","Noyers","Ocre","Oison","Olivet","Ondreville","Onzerain","Orleans","Ormes","Orville","Oussoy","Outarville","Ouzouer","Pannecieres","Pannes","Patay","Paucourt","Pers","Pierrefitte","Pithiverais","Pithiviers","Poilly","Potier","Prefontaines","Presnoy","Pressigny","Puiseaux","Quiers","Ramoulu","Rebrechien","Rouvray","Rozieres","Rozoy","Ruan","Sandillon","Santeau","Saran","Sceaux","Seichebrieres","Semoy","Sennely","Sermaises","Sigloy","Solterre","Sougy","Sully","Sury","Tavers","Thignonville","Thimory","Thorailles","Thou","Tigy","Tivernon","Tournoisis","Trainou","Treilles","Trigueres","Trinay","Vannes","Varennes","Vennecy","Vieilles","Vienne","Viglain","Vignes","Villamblain","Villemandeur","Villemoutiers","Villemurlin","Villeneuve","Villereau","Villevoques","Villorceau","Vimory","Vitry","Vrigny","Ivre"],
|
|
||||||
["Accumoli","Acquafondata","Acquapendente","Acuto","Affile","Agosta","Alatri","Albano","Allumiere","Alvito","Amaseno","Amatrice","Anagni","Anguillara","Anticoli","Antrodoco","Anzio","Aprilia","Aquino","Arce","Arcinazzo","Ardea","Ariccia","Arlena","Arnara","Arpino","Arsoli","Artena","Ascrea","Atina","Ausonia","Bagnoregio","Barbarano","Bassano","Bassiano","Bellegra","Belmonte","Blera","Bolsena","Bomarzo","Borbona","Borgo","Borgorose","Boville","Bracciano","Broccostella","Calcata","Camerata","Campagnano","Campodimele","Campoli","Canale","Canepina","Canino","Cantalice","Cantalupo","Canterano","Capena","Capodimonte","Capranica","Caprarola","Carbognano","Casalattico","Casalvieri","Casape","Casaprota","Casperia","Cassino","Castelforte","Castelliri","Castello","Castelnuovo","Castiglione","Castro","Castrocielo","Cave","Ceccano","Celleno","Cellere","Ceprano","Cerreto","Cervara","Cervaro","Cerveteri","Ciampino","Ciciliano","Cineto","Cisterna","Cittaducale","Cittareale","Civita","Civitavecchia","Civitella","Colfelice","Collalto","Colle","Colleferro","Collegiove","Collepardo","Collevecchio","Colli","Colonna","Concerviano","Configni","Contigliano","Corchiano","Coreno","Cori","Cottanello","Esperia","Fabrica","Faleria","Falvaterra","Fara","Farnese","Ferentino","Fiamignano","Fiano","Filacciano","Filettino","Fiuggi","Fiumicino","Fondi","Fontana","Fonte","Fontechiari","Forano","Formello","Formia","Frascati","Frasso","Frosinone","Fumone","Gaeta","Gallese","Gallicano","Gallinaro","Gavignano","Genazzano","Genzano","Gerano","Giuliano","Gorga","Gradoli","Graffignano","Greccio","Grottaferrata","Grotte","Guarcino","Guidonia","Ischia","Isola","Itri","Jenne","Labico","Labro","Ladispoli","Lanuvio","Lariano","Latera","Lenola","Leonessa","Licenza","Longone","Lubriano","Maenza","Magliano","Mandela","Manziana","Marano","Marcellina","Marcetelli","Marino","Marta","Mazzano","Mentana","Micigliano","Minturno","Mompeo","Montalto","Montasola","Monte","Montebuono","Montefiascone","Monteflavio","Montelanico","Monteleone","Montelibretti","Montenero","Monterosi","Monterotondo","Montopoli","Montorio","Moricone","Morlupo","Morolo","Morro","Nazzano","Nemi","Nepi","Nerola","Nespolo","Nettuno","Norma","Olevano","Onano","Oriolo","Orte","Orvinio","Paganico","Palestrina","Paliano","Palombara","Pastena","Patrica","Percile","Pescorocchiano","Pescosolido","Petrella","Piansano","Picinisco","Pico","Piedimonte","Piglio","Pignataro","Pisoniano","Pofi","Poggio","Poli","Pomezia","Pontecorvo","Pontinia","Ponza","Ponzano","Posta","Pozzaglia","Priverno","Proceno","Prossedi","Riano","Rieti","Rignano","Riofreddo","Ripi","Rivodutri","Rocca","Roccagiovine","Roccagorga","Roccantica","Roccasecca","Roiate","Ronciglione","Roviano","Sabaudia","Sacrofano","Salisano","Sambuci","Santa","Santi","Santopadre","Saracinesco","Scandriglia","Segni","Selci","Sermoneta","Serrone","Settefrati","Sezze","Sgurgola","Sonnino","Sora","Soriano","Sperlonga","Spigno","Stimigliano","Strangolagalli","Subiaco","Supino","Sutri","Tarano","Tarquinia","Terelle","Terracina","Tessennano","Tivoli","Toffia","Tolfa","Torre","Torri","Torrice","Torricella","Torrita","Trevi","Trevignano","Trivigliano","Turania","Tuscania","Vacone","Valentano","Vallecorsa","Vallemaio","Vallepietra","Vallerano","Vallerotonda","Vallinfreda","Valmontone","Varco","Vasanello","Vejano","Velletri","Ventotene","Veroli","Vetralla","Vicalvi","Vico","Vicovaro","Vignanello","Viterbo","Viticuso","Vitorchiano","Vivaro","Zagarolo"],
|
|
||||||
["Abanades","Ablanque","Adobes","Ajofrin","Alameda","Alaminos","Alarilla","Albalate","Albares","Albarreal","Albendiego","Alcabon","Alcanizo","Alcaudete","Alcocer","Alcolea","Alcoroches","Aldea","Aldeanueva","Algar","Algora","Alhondiga","Alique","Almadrones","Almendral","Almoguera","Almonacid","Almorox","Alocen","Alovera","Alustante","Angon","Anguita","Anover","Anquela","Arbancon","Arbeteta","Arcicollar","Argecilla","Arges","Armallones","Armuna","Arroyo","Atanzon","Atienza","Aunon","Azuqueca","Azutan","Baides","Banos","Banuelos","Barcience","Bargas","Barriopedro","Belvis","Berninches","Borox","Brihuega","Budia","Buenaventura","Bujalaro","Burguillos","Burujon","Bustares","Cabanas","Cabanillas","Calera","Caleruela","Calzada","Camarena","Campillo","Camunas","Canizar","Canredondo","Cantalojas","Cardiel","Carmena","Carranque","Carriches","Casa","Casarrubios","Casas","Casasbuenas","Caspuenas","Castejon","Castellar","Castilforte","Castillo","Castilnuevo","Cazalegas","Cebolla","Cedillo","Cendejas","Centenera","Cervera","Checa","Chequilla","Chillaron","Chiloeches","Chozas","Chueca","Cifuentes","Cincovillas","Ciruelas","Ciruelos","Cobeja","Cobeta","Cobisa","Cogollor","Cogolludo","Condemios","Congostrina","Consuegra","Copernal","Corduente","Corral","Cuerva","Domingo","Dosbarrios","Driebes","Duron","El","Embid","Erustes","Escalona","Escalonilla","Escamilla","Escariche","Escopete","Espinosa","Espinoso","Esplegares","Esquivias","Estables","Estriegana","Fontanar","Fuembellida","Fuensalida","Fuentelsaz","Gajanejos","Galve","Galvez","Garciotum","Gascuena","Gerindote","Guadamur","Henche","Heras","Herreria","Herreruela","Hijes","Hinojosa","Hita","Hombrados","Hontanar","Hontoba","Horche","Hormigos","Huecas","Huermeces","Huerta","Hueva","Humanes","Illan","Illana","Illescas","Iniestola","Irueste","Jadraque","Jirueque","Lagartera","Las","Layos","Ledanca","Lillo","Lominchar","Loranca","Los","Lucillos","Lupiana","Luzaga","Luzon","Madridejos","Magan","Majaelrayo","Malaga","Malaguilla","Malpica","Mandayona","Mantiel","Manzaneque","Maqueda","Maranchon","Marchamalo","Marjaliza","Marrupe","Mascaraque","Masegoso","Matarrubia","Matillas","Mazarete","Mazuecos","Medranda","Megina","Mejorada","Mentrida","Mesegar","Miedes","Miguel","Millana","Milmarcos","Mirabueno","Miralrio","Mocejon","Mochales","Mohedas","Molina","Monasterio","Mondejar","Montarron","Mora","Moratilla","Morenilla","Muduex","Nambroca","Navalcan","Negredo","Noblejas","Noez","Nombela","Noves","Numancia","Nuno","Ocana","Ocentejo","Olias","Olmeda","Ontigola","Orea","Orgaz","Oropesa","Otero","Palmaces","Palomeque","Pantoja","Pardos","Paredes","Pareja","Parrillas","Pastrana","Pelahustan","Penalen","Penalver","Pepino","Peralejos","Peralveche","Pinilla","Pioz","Piqueras","Polan","Portillo","Poveda","Pozo","Pradena","Prados","Puebla","Puerto","Pulgar","Quer","Quero","Quintanar","Quismondo","Rebollosa","Recas","Renera","Retamoso","Retiendas","Riba","Rielves","Rillo","Riofrio","Robledillo","Robledo","Romanillos","Romanones","Rueda","Sacecorbo","Sacedon","Saelices","Salmeron","San","Santa","Santiuste","Santo","Sartajada","Sauca","Sayaton","Segurilla","Selas","Semillas","Sesena","Setiles","Sevilleja","Sienes","Siguenza","Solanillos","Somolinos","Sonseca","Sotillo","Sotodosos","Talavera","Tamajon","Taragudo","Taravilla","Tartanedo","Tembleque","Tendilla","Terzaga","Tierzo","Tordellego","Tordelrabano","Tordesilos","Torija","Torralba","Torre","Torrecilla","Torrecuadrada","Torrejon","Torremocha","Torrico","Torrijos","Torrubia","Tortola","Tortuera","Tortuero","Totanes","Traid","Trijueque","Trillo","Turleque","Uceda","Ugena","Ujados","Urda","Utande","Valdarachas","Valdesotos","Valhermoso","Valtablado","Valverde","Velada","Viana","Vinuelas","Yebes","Yebra","Yelamos","Yeles","Yepes","Yuncler","Yunclillos","Yuncos","Yunquera","Zaorejas","Zarzuela","Zorita"],
|
|
||||||
["Belgorod","Beloberezhye","Belyi","Belz","Berestei","Berezhets","Berezovech","Berezutsk","Bobruisk","Bolonets","Borisov","Borovsk","Bozhesk","Bratslav","Bryansk","Brynsk","Buryn","Byhov","Chechersk","Chemesov","Cheremosh","Cherlen","Chern","Chernigov","Chernitsa","Chernobyl","Chernogorod","Chertoryesk","Chetvertnia","Demyansk","Derevesk","Devyagoresk","Dichin","Dmitrov","Dorogobuch","Dorogobuzh","Drestvin","Drokov","Drutsk","Dubechin","Dubichi","Dubki","Dubkov","Dveren","Galich","Glebovo","Glinsk","Goloty","Gomiy","Gorodets","Gorodische","Gorodno","Gorohovets","Goroshin","Gorval","Goryshon","Holm","Horobor","Hoten","Hotin","Hotmyzhsk","Ilovech","Ivan","Izborsk","Izheslavl","Kamenets","Kanev","Karachev","Karna","Kavarna","Klechesk","Klyapech","Kolomyya","Kolyvan","Kopyl","Korec","Kornik","Korochunov","Korshev","Korsun","Koshkin","Kotelno","Kovyla","Kozelsk","Kozelsk","Kremenets","Krichev","Krylatsk","Ksniatin","Kulatsk","Kursk","Kursk","Lebedev","Lida","Logosko","Lomihvost","Loshesk","Loshichi","Lubech","Lubno","Lubutsk","Lutsk","Luchin","Luki","Lukoml","Luzha","Lvov","Mtsensk","Mdin","Medniki","Melecha","Merech","Meretsk","Mescherskoe","Meshkovsk","Metlitsk","Mezetsk","Mglin","Mihailov","Mikitin","Mikulino","Miloslavichi","Mogilev","Mologa","Moreva","Mosalsk","Moschiny","Mozyr","Mstislav","Mstislavets","Muravin","Nemech","Nemiza","Nerinsk","Nichan","Novgorod","Novogorodok","Obolichi","Obolensk","Obolensk","Oleshsk","Olgov","Omelnik","Opoka","Opoki","Oreshek","Orlets","Osechen","Oster","Ostrog","Ostrov","Perelai","Peremil","Peremyshl","Pererov","Peresechen","Perevitsk","Pereyaslav","Pinsk","Ples","Polotsk","Pronsk","Proposhesk","Punia","Putivl","Rechitsa","Rodno","Rogachev","Romanov","Romny","Roslavl","Rostislavl","Rostovets","Rsha","Ruza","Rybchesk","Rylsk","Rzhavesk","Rzhev","Rzhischev","Sambor","Serensk","Serensk","Serpeysk","Shilov","Shuya","Sinech","Sizhka","Skala","Slovensk","Slutsk","Smedin","Sneporod","Snitin","Snovsk","Sochevo","Sokolec","Starica","Starodub","Stepan","Sterzh","Streshin","Sutesk","Svinetsk","Svisloch","Terebovl","Ternov","Teshilov","Teterin","Tiversk","Torchevsk","Toropets","Torzhok","Tripolye","Trubchevsk","Tur","Turov","Usvyaty","Uteshkov","Vasilkov","Velil","Velye","Venev","Venicha","Verderev","Vereya","Veveresk","Viazma","Vidbesk","Vidychev","Voino","Volodimer","Volok","Volyn","Vorobesk","Voronich","Voronok","Vorotynsk","Vrev","Vruchiy","Vselug","Vyatichsk","Vyatka","Vyshegorod","Vyshgorod","Vysokoe","Yagniatin","Yaropolch","Yasenets","Yuryev","Yuryevets","Zaraysk","Zhitomel","Zholvazh","Zizhech","Zubkov","Zudechev","Zvenigorod"],
|
|
||||||
["Akureyri","Aldra","Alftanes","Andenes","Austbo","Auvog","Bakkafjordur","Ballangen","Bardal","Beisfjord","Bifrost","Bildudalur","Bjerka","Bjerkvik","Bjorkosen","Bliksvaer","Blokken","Blonduos","Bolga","Bolungarvik","Borg","Borgarnes","Bosmoen","Bostad","Bostrand","Botsvika","Brautarholt","Breiddalsvik","Bringsli","Brunahlid","Budardalur","Byggdakjarni","Dalvik","Djupivogur","Donnes","Drageid","Drangsnes","Egilsstadir","Eiteroga","Elvenes","Engavogen","Ertenvog","Eskifjordur","Evenes","Eyrarbakki","Fagernes","Fallmoen","Fellabaer","Fenes","Finnoya","Fjaer","Fjelldal","Flakstad","Flateyri","Flostrand","Fludir","Gardabær","Gardur","Gimstad","Givaer","Gjeroy","Gladstad","Godoya","Godoynes","Granmoen","Gravdal","Grenivik","Grimsey","Grindavik","Grytting","Hafnir","Halsa","Hauganes","Haugland","Hauknes","Hella","Helland","Hellissandur","Hestad","Higrav","Hnifsdalur","Hofn","Hofsos","Holand","Holar","Holen","Holkestad","Holmavik","Hopen","Hovden","Hrafnagil","Hrisey","Husavik","Husvik","Hvammstangi","Hvanneyri","Hveragerdi","Hvolsvollur","Igeroy","Indre","Inndyr","Innhavet","Innnes","Isafjordur","Jarklaustur","Jarnsreykir","Junkerdal","Kaldvog","Kanstad","Karlsoy","Kavosen","Keflavik","Kjelde","Kjerstad","Klakk","Kopasker","Kopavogur","Korgen","Kristnes","Krutoga","Krystad","Kvina","Lande","Laugar","Laugaras","Laugarbakki","Laugarvatn","Laupstad","Leines","Leira","Leiren","Leland","Lenvika","Loding","Lodingen","Lonsbakki","Lopsmarka","Lovund","Luroy","Maela","Melahverfi","Meloy","Mevik","Misvaer","Mornes","Mosfellsbær","Moskenes","Myken","Naurstad","Nesberg","Nesjahverfi","Nesset","Nevernes","Obygda","Ofoten","Ogskardet","Okervika","Oknes","Olafsfjordur","Oldervika","Olstad","Onstad","Oppeid","Oresvika","Orsnes","Orsvog","Osmyra","Overdal","Prestoya","Raudalaekur","Raufarhofn","Reipo","Reykholar","Reykholt","Reykjahlid","Rif","Rinoya","Rodoy","Rognan","Rosvika","Rovika","Salhus","Sanden","Sandgerdi","Sandoker","Sandset","Sandvika","Saudarkrokur","Selfoss","Selsoya","Sennesvik","Setso","Siglufjordur","Silvalen","Skagastrond","Skjerstad","Skonland","Skorvogen","Skrova","Sleneset","Snubba","Softing","Solheim","Solheimar","Sorarnoy","Sorfugloy","Sorland","Sormela","Sorvaer","Sovika","Stamsund","Stamsvika","Stave","Stokka","Stokkseyri","Storjord","Storo","Storvika","Strand","Straumen","Strendene","Sudavik","Sudureyri","Sundoya","Sydalen","Thingeyri","Thorlakshofn","Thorshofn","Tjarnabyggd","Tjotta","Tosbotn","Traelnes","Trofors","Trones","Tverro","Ulvsvog","Unnstad","Utskor","Valla","Vandved","Varmahlid","Vassos","Vevelstad","Vidrek","Vik","Vikholmen","Vogar","Vogehamn","Vopnafjordur"]
|
|
||||||
];
|
|
||||||
5044
script.js
5044
script.js
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue