v. 0.59.00b

This commit is contained in:
Azgaar 2018-08-28 23:39:07 +03:00
parent 5e809de962
commit 265731c597
7 changed files with 2128 additions and 1271 deletions

View file

@ -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;

View file

@ -293,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;
} }
@ -452,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;
@ -471,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;
@ -516,7 +519,7 @@ p {
} }
#customizeOptions { #customizeOptions {
margin: 2px 0 6px 0; margin: 2px 0;
} }
#tooltip { #tooltip {
@ -524,10 +527,9 @@ p {
display: none; display: none;
text-align: center; text-align: center;
top: calc(98vh - (10px + 0.5vw)); top: calc(98vh - (10px + 0.5vw));
width: 90%; width: 100%;
left: 5%;
cursor: default; cursor: default;
text-shadow: 1px 1px 3px #0e0e0e; 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;
@ -538,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;
} }
@ -602,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 {
@ -632,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;
} }
@ -669,9 +669,9 @@ 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 #styleOcean,
@ -680,7 +680,7 @@ body button.noicon {
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;
@ -692,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;
} }
@ -749,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;
} }
@ -771,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;
@ -798,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;
} }
@ -891,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;
@ -899,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 * {

View file

@ -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 || [];
@ -31,9 +32,9 @@
<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.58.15b"/> <link rel="stylesheet" type="text/css" href="index.css?version=0.59.00b"/>
<link rel="stylesheet" type="text/css" href="icons.css?version=0.58.15b"/> <link rel="stylesheet" type="text/css" href="icons.css?version=0.59.00b"/>
<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%">
@ -201,10 +202,12 @@
<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:65px" value="">
<i onmouseover="tip('Click to generate a map for this seed')" id="optionsSeedGenerate" style="margin-left:-3px" class="icon-play"></i>
</label>
</div> </div>
</div> </div>
<div id="styleContent" class="tabcontent"> <div id="styleContent" class="tabcontent">
@ -276,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">
@ -308,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>
@ -356,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>
@ -400,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>
@ -408,6 +421,19 @@
<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> <tr>
<td> <td>
<i onmouseover="tip('Lock to restrict option randomization on new map generation')" data-locked=0 id="lockCulturesInput" class="icon-lock-open"></i> <i onmouseover="tip('Lock to restrict option randomization on new map generation')" data-locked=0 id="lockCulturesInput" class="icon-lock-open"></i>
@ -463,6 +489,16 @@
</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>
@ -516,9 +552,11 @@
<input id="renderOcean" class="checkbox" type="checkbox"> <input id="renderOcean" class="checkbox" type="checkbox">
<label for="renderOcean" onmouseover="tip('Render cells below sea level')" class="checkbox-label">Render ocean cells</label> <label for="renderOcean" onmouseover="tip('Render cells below sea level')" class="checkbox-label">Render ocean cells</label>
<input id="changeHeights" class="checkbox" type="checkbox"> <input id="changeHeights" class="checkbox" type="checkbox">
<label for="changeHeights" onmouseover="tip('Allow system to change custom heights and add lakes in depressed cells')" class="checkbox-label">Change heights</label> <label for="changeHeights" onmouseover="tip('Allow system to change custom heights if reasonable')" class="checkbox-label">Change heights</label>
</div> </div>
<label onmouseover="tip('Number of Land cells and landmass/ocean ratio')">Land cells: <span id="landmassCounter">0</span></label><hr> <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">
@ -573,6 +611,7 @@
</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>
@ -582,7 +621,7 @@
<button id="editTextButton" onmouseover="tip('Edit label Text')" class="editButton icon-pencil"></button> <button id="editTextButton" onmouseover="tip('Edit label Text')" class="editButton icon-pencil"></button>
<input id="editText" class="editTrigger"/> <input id="editText" class="editTrigger"/>
<span id="editTextRandom" onmouseover="tip('Generate random name')" class="editButtonS icon-shuffle"></span> <span id="editTextRandom" onmouseover="tip('Generate random name')" class="editButtonS icon-shuffle"></span>
<button id="editFontButton" onmouseover="tip('Select Font for the label Group')" class="editButton icon-font"></button> <button id="editFontButton" onmouseover="tip('Select Font for the entire Group')" class="editButton icon-font"></button>
<span id="editExternalFont" onmouseover="tip('Fetch fonts by linking @font-face declaration, just populate with font name if using Google font (fonts.google.com)')" class="editButtonS icon-link"></span> <span id="editExternalFont" onmouseover="tip('Fetch fonts by linking @font-face declaration, just populate with font name if using Google font (fonts.google.com)')" class="editButtonS icon-link"></span>
<select id="editFontSelect" class="editTrigger" onmouseover="tip('Select one of the default Fonts')"></select> <select id="editFontSelect" class="editTrigger" onmouseover="tip('Select one of the default Fonts')"></select>
<input id="editFontInput" placeholder="link to @font-face" onmouseover="tip('Fetch fonts by linking @font-face declaration')" class="editTrigger"/> <input id="editFontInput" placeholder="link to @font-face" onmouseover="tip('Fetch fonts by linking @font-face declaration')" class="editTrigger"/>
@ -680,7 +719,7 @@
<div id="burgEditor" class="dialog" style="display: none"> <div id="burgEditor" class="dialog" style="display: none">
<button id="burgGroup" onmouseover="tip('Change Burg Group')" class="icon-tags"></button> <button id="burgGroup" onmouseover="tip('Change Burg Group')" class="icon-tags"></button>
<div id="burgGroupSection" style="display: none"> <div id="burgGroupSection" style="display: none">
<select id="burgSelectGroup" onmouseover="tip('Select a Group for this Burg. Will not affect burg function (capital status etc.)')" style="width: 117px;"></select> <select id="burgSelectGroup" onmouseover="tip('Select a Group for this Burg')" style="width: 117px;"></select>
<input id="burgInputGroup" placeholder="type new Group name" onmouseover="tip('Create new Group for the Burg')" style="display: none; width: 113px;"/> <input id="burgInputGroup" placeholder="type new Group name" onmouseover="tip('Create new Group for the Burg')" style="display: none; width: 113px;"/>
<i id="burgAddGroup" onmouseover="tip('Create new Group for the Burg')" class="icon-plus pointer"></i> <i id="burgAddGroup" onmouseover="tip('Create new Group for the Burg')" class="icon-plus pointer"></i>
<i id="burgRemoveGroup" onmouseover="tip('Remove selected Burg Group')" class="icon-trash pointer"></i> <i id="burgRemoveGroup" onmouseover="tip('Remove selected Burg Group')" class="icon-trash pointer"></i>
@ -748,10 +787,11 @@
<button id="burgToggleCapital" onmouseover="tip('Mark the Burg as country capital. Neutral burg cannot be a 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 (toggle anchor icon)')" 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: 50px;"></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="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>
@ -767,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">
@ -835,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>
@ -846,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>
@ -866,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">
@ -908,15 +937,17 @@
<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="countriesRegenerateNames" onmouseover="tip('Regenerate countries names')" class="icon-arrows-cw"></button>
@ -975,8 +1006,9 @@
<div id="culturesManuallyButtons" style="display: none"> <div id="culturesManuallyButtons" style="display: none">
<button id="culturesManuallyComplete" onmouseover="tip('Apply assignment')" class="icon-check"></button> <button id="culturesManuallyComplete" onmouseover="tip('Apply assignment')" class="icon-check"></button>
<button id="culturesManuallyCancel" onmouseover="tip('Cancel assignment')" class="icon-cancel"></button> <button id="culturesManuallyCancel" 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="culturesManuallyBrush" onchange="this.title = this.value" type="range" min="1" max="7" value="3"> <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> </div>
<button id="culturesRandomize" onmouseover="tip('Randomly re-distribute cultures')" class="icon-shuffle"></button> <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="culturesRegenerateNames" onmouseover="tip('Re-generate all Burg names based on assigned culture')" class="icon-arrows-cw"></button>
@ -1083,8 +1115,8 @@
</div> </div>
</div> </div>
<div id="scaleBottom"> <div id="scaleBottom">
<button id="toggleScaleBar" onmouseover="tip('Click to toggle scale bar visibility')" class="icon-align-center"></button> <button id="toggleScaleBar" onmouseover="tip('Click to toggle scale bar')" class="icon-align-center"></button>
<button onmouseover="tip('Click to toggle rulers visibility')" class="icon-eye-off" onclick='$("#ruler").fadeToggle()'></button> <button onmouseover="tip('Click to toggle ruler')" class="icon-eye-off" onclick='$("#ruler").fadeToggle()'></button>
<button id="addOpisometer" onmouseover="tip('Drag the map to measure curve length with opisometer')" class="icon-brush"></button> <button id="addOpisometer" onmouseover="tip('Drag the map to measure curve length with opisometer')" class="icon-brush"></button>
<button id="addRuler" onmouseover="tip('Click to place additional ruler on map')" class="icon-resize-horizontal"></button> <button id="addRuler" onmouseover="tip('Click to place additional ruler on map')" class="icon-resize-horizontal"></button>
<button id="addPlanimeter" onmouseover="tip('Drag the map to determine a polygon area with planimeter')" class="icon-edit"></button> <button id="addPlanimeter" onmouseover="tip('Drag the map to determine a polygon area with planimeter')" class="icon-edit"></button>
@ -1092,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>
@ -1110,5 +1143,5 @@
<input type="file" accept=".txt" id="namesbaseToLoad"> <input type="file" accept=".txt" id="namesbaseToLoad">
</div> </div>
<script src="script.js?version=0.58.15b"></script> <script src="script.js?version=0.59.00b"></script>
</body> </body>

558
libs/jquery-ui.css vendored Normal file
View 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

File diff suppressed because one or more lines are too long

1
libs/seedrandom.min.js vendored Normal file
View 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);

1525
script.js

File diff suppressed because it is too large Load diff