mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-16 17:31:24 +01:00
477 lines
No EOL
36 KiB
HTML
477 lines
No EOL
36 KiB
HTML
<!DOCTYPE html>
|
||
<head>
|
||
<title>Azgaar's Fantasy Map Generator Demo</title>
|
||
<meta name="author" content="Azgaar (Max Ganiev)">
|
||
<meta charset="utf-8">
|
||
<meta name="description" content="Azgaar's Fantasy Map Generator demo. Based on D3 Voronoi diagram rendered to svg.">
|
||
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
|
||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
|
||
<script src="https://d3js.org/d3.v4.min.js"></script>
|
||
<script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
|
||
<script src="https://mewo2.com/js/priority-queue.js"></script>
|
||
<script src="https://rawgit.com/LuisSevillano/9f6c9edd7f90ac6cca54ed744e28f3ee/raw/38f9774f83f00b286360db1ea97d851f79e594aa/polylabel.js"></script>
|
||
<script src="names.js"></script>
|
||
<link rel="stylesheet" type="text/css" href="index.css?version=0.52b"/>
|
||
<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="./font/fontello.css"/>
|
||
<script src="quantize.js"></script>
|
||
</head>
|
||
<body>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="960" height="540">
|
||
<defs>
|
||
<filter id="blurFilter" x="-1" y="-1" width="100" height="100">
|
||
<feGaussianBlur in="SourceGraphic" stdDeviation="0.2"/>
|
||
</filter>
|
||
<filter id="dropShadow">
|
||
<feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
|
||
<feOffset dx="1" dy="2"/>
|
||
<feMerge>
|
||
<feMergeNode/>
|
||
<feMergeNode in="SourceGraphic"/>
|
||
</feMerge>
|
||
</filter>
|
||
<g id="deftemp">
|
||
<mask id="shape" x="0" y="0" width="100%" height="100%" fill="black"></mask>
|
||
</g>
|
||
<g id="defs-icons">
|
||
<symbol id="icon-anchor" viewBox="0 0 28 28">
|
||
<title>Anchor</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>
|
||
</symbol>
|
||
</g>
|
||
<pattern id="oceanPattern" width="100" height="100" patternUnits="userSpaceOnUse">
|
||
<filter id='image'>
|
||
<feImage x="0" y="0" width="100" height="100" xlink:href="data:image/png;base64,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">
|
||
</filter>
|
||
<rect width='100' height='100' filter="url(#image)" opacity='0.2'/>
|
||
</pattern>
|
||
<pattern id="mottling" width="16" height="9" patternUnits="userSpaceOnUse">
|
||
<filter id='turb'>
|
||
<feTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='10' stitchTiles='stitch'/>
|
||
</filter>
|
||
<rect width='16' height='9' filter="url(#turb)"/>
|
||
</pattern>
|
||
</defs>
|
||
</svg>
|
||
<canvas id="canvas" width="960" height="540" style="opacity: 0;"></canvas>
|
||
<div id="optionsContainer">
|
||
<div id="collapsible">
|
||
<button id="optionsTrigger" class="options" title="Click to display Options">▶</button>
|
||
<button id="regenerate" class="options" title="Click to generate a new map">New Map!</button>
|
||
</div>
|
||
<div id="options">
|
||
<div class="drag-trigger"></div>
|
||
<div class="tab">
|
||
<button id="layoutTab" class="options">Layout</button>
|
||
<button id="styleTab" class="options">Style</button>
|
||
<button id="optionsTab" class="options">Options</button>
|
||
<button id="customizeTab" class="options">Customize</button>
|
||
</div>
|
||
<div id="layoutContent" class="tabcontent">
|
||
<p style="display: inline-block;">Select preset:</p>
|
||
<select id="layoutPreset">
|
||
<option value="layoutPolitical" selected>Political map</option>
|
||
<option value="layoutCultural">Cultural map</option>
|
||
<!-- <option value="layoutEconomical">Economical map</option> -->
|
||
<option value="layoutHeightmap">Heightmap</option>
|
||
<option value="layoutLandmass">Pure landmass</option>
|
||
</select>
|
||
<p>Displayed layers. Drag to move, click to toggle</p>
|
||
<div id="mapLayers">
|
||
<li title="Toggle Ocean, not movable" id="toggleOcean" onclick="$('#oceanPattern').fadeToggle()" class="solid">Ocean</li>
|
||
<li title="Toggle Landmass, not movable" id="toggleLandmass" onclick="$('#landmass').fadeToggle()" class="solid">Landmass</span></li>
|
||
<li title="Toggle Heightmap" id="toggleHeight" class="buttonoff">Heightmap</li>
|
||
<li title="Toggle Cultures map" id="toggleCultures" class="buttonoff">Cultures</li>
|
||
<li title="Toggle Routes" id="toggleRoutes" onclick="$('#routes').fadeToggle()">Routes</li>
|
||
<li title="Toggle Rivers" id="toggleRivers" onclick="$('#rivers').fadeToggle()">Rivers</li>
|
||
<li title="Toggle Countries" id="toggleCountries">Countries</li>
|
||
<li title="Toggle Borders" id="toggleBorders" onclick="$('#borders').fadeToggle()">Borders</li>
|
||
<li title="Toggle Relief icons" id="toggleRelief" onclick="$('#terrain').fadeToggle()">Relief</li>
|
||
<li title="Toggle Grid" id="toggleGrid" class="buttonoff" onclick="$('#grid').fadeToggle()">Grid</li>
|
||
<li title="Toggle Labels" id="toggleLabels" onclick="$('#labels').fadeToggle()">Labels</li>
|
||
<li title="Toggle Burg icons" id="toggleIcons" onclick="$('#burgs').fadeToggle()">Burgs</li>
|
||
</div>
|
||
</div>
|
||
<div id="styleContent" class="tabcontent">
|
||
<p style="display: inline-block;">Select element:</p>
|
||
<select id="styleElementSelect">
|
||
<option value="oceanBase" selected>Ocean</option>
|
||
<option value="landmass">Landmass</option>
|
||
<option value="terrs">Heightmap</option>
|
||
<option value="cults">Cultures</option>
|
||
<option value="roads">Roads</option>
|
||
<option value="trails">Trails</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="grid">Grid</option>
|
||
<option value="labels">Labels</option>
|
||
<option value="burgs">Burgs</option>
|
||
</select>
|
||
<div id="styleInputs">
|
||
<div id="styleFill">
|
||
Fill: <input id="styleFillInput" type="color" value="#5E4FA2"/>
|
||
<output id="styleFillOutput">#5E4FA2</output>
|
||
</div>
|
||
<div id="styleStroke">
|
||
Stroke: <input id="styleStrokeInput" type="color" value="#5E4FA2"/>
|
||
<output id="styleStrokeOutput">#5E4FA2</output>
|
||
</div>
|
||
<div id="styleMultiple">Colors:</div>
|
||
<div id="styleStrokeWidth">
|
||
<br>Stroke width: <input id="styleStrokeWidthInput" type="range" min="0" max="3" step="0.01" value="1">
|
||
<output id="styleStrokeWidthOutput">1</output>
|
||
</div>
|
||
<div id="styleStrokeDasharray">
|
||
<br>Stroke dasharray: <input id="styleStrokeDasharrayInput" class="pureInput" value="1 2">
|
||
</div>
|
||
<div id="styleStrokeLinecap">
|
||
<br>Stroke linecap: <select id="styleStrokeLinecapInput" class="pureInput">
|
||
<option value="inherit" selected>Inherit</option>
|
||
<option value="butt">Butt</option>
|
||
<option value="round">Round</option>
|
||
<option value="square">Square</option>
|
||
</select>
|
||
</div>
|
||
<div id="styleFontSize">
|
||
<br>Font size: <button title="Multiply all Fonts size by 1.1" id="styleFontPlus">+</button><button title="Multiply all Fonts size by 0.9" id="styleFontMinus">-</button>
|
||
</div>
|
||
<div id="styleSize">
|
||
<br>Radius: <button title="Multiply Radius by 1.1" id="styleFillPlus">+</button><button title="Multiply Radius by 0.9" id="styleFillMinus">-</button>
|
||
<span> Stroke: </span><button title="Multiply Stroke-width by 1.1" id="styleStrokePlus">+</button><button title="Multiply Stroke-width by 0.9" id="styleStrokeMinus">-</button>
|
||
</div>
|
||
<div id="styleOpacity">
|
||
<br>Opacity: <input id="styleOpacityInput" type="range" min="0" max="1" step="0.01" value="1">
|
||
<output id="styleOpacityOutput">1</output>
|
||
</div>
|
||
<div id="styleFilter">
|
||
<br>Filter: <select id="styleFilterInput" class="pureInput">
|
||
<option value="">None</option>
|
||
<option value="url(#blurFilter)" selected>Blur</option>
|
||
<option value="url(#dropShadow)" selected>Shadow</option>
|
||
</select>
|
||
</div>
|
||
<div id="styleScheme">
|
||
<br>Color scheme: <select id="styleSchemeInput" class="pureInput">
|
||
<option value="bright" selected>Bright</option>
|
||
<option value="light">Light</option>
|
||
<option value="green">Green</option>
|
||
<option value="monochrome">Monochrome</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<p>Toggle filters:</p>
|
||
<button onclick="$('svg').toggleClass('grayscale')" class="buttonoff">Grayscale</button>
|
||
<button onclick="$('svg').toggleClass('sepia')" class="buttonoff">Sepia</button>
|
||
<button onclick="$('svg').toggleClass('tint')" class="buttonoff">Tint</button>
|
||
<button onclick="$('svg').toggleClass('dingy')" class="buttonoff">Dingy</button>
|
||
</div>
|
||
<div id="optionsContent" class="tabcontent">
|
||
<p>Generate new map to apply the options!</p>
|
||
<table>
|
||
<tr>
|
||
<td title="Select template to be used for a Heightmap generation">Heightmap template</td>
|
||
<td>
|
||
<select id="templateInput">
|
||
<option value="Random" selected>Random</option>
|
||
<option value="Volcano">Volcano</option>
|
||
<option value="High Island">High Island</option>
|
||
<option value="Low Island">Low Island</option>
|
||
<option value="Continents">Continents</option>
|
||
<option value="Archipelago">Archipelago</option>
|
||
<option value="Atoll">Atoll</option>
|
||
</select>
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Set the graph size. A non-default values are not properly tested yet! Works good with converted maps">Graph size</td>
|
||
<td>
|
||
<input id="sizeInput" type="range" min="0.8" max="4" step="0.1" value="1">
|
||
</td>
|
||
<td>
|
||
<output id="sizeOutput">1</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define how many Settlements should be placed">Burgs count</td>
|
||
<td>
|
||
<input id="manorsInput" type="range" min="0" max="1000" value="500">
|
||
</td>
|
||
<td>
|
||
<output id="manorsOutput">500</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define how many Countries should be created">Countries count</td>
|
||
<td>
|
||
<input id="regionsInput" type="range" min="0" max="100" value="13">
|
||
</td>
|
||
<td>
|
||
<output id="regionsOutput">13</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define Countries size variety. Set to 0 to have all countries sized the same">Countries disbalance</td>
|
||
<td>
|
||
<input id="powerInput" type="range" min="0" max="10" step="0.2" value="5">
|
||
</td>
|
||
<td>
|
||
<output id="powerOutput">5</output><br>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Maximum distance to a closer manor to consider polygon as a Neutral Land">Burg influence radius</td>
|
||
<td>
|
||
<input id="neutralInput" type="range" min="1" max="100" step="1" value="100">
|
||
</td>
|
||
<td>
|
||
<output id="neutralOutput">100</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define the land swampiness. Increase to see more marshes (turn on 'Relief' layer)">Swampness</td>
|
||
<td>
|
||
<input id="swampinessInput" type="range" min="0" max="100" value="10">
|
||
</td>
|
||
<td>
|
||
<output id="swampinessOutput">10</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define the coastline sharpness. Decrease for a more round land shape">Coastline curvature</td>
|
||
<td>
|
||
<input id="sharpnessInput" type="range" min="0.1" max="0.2" value="0.2" step="0.05">
|
||
</td>
|
||
<td>
|
||
<output id="sharpnessOutput">0.2</output>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Define the Land outline layers scheme">Coast outline layers</td>
|
||
<td>
|
||
<select id="outlineLayers">
|
||
<option value="random">Random</option>
|
||
<option value="-6,-3,-1" selected>-6,-3,-1</option>
|
||
<option value="-9,-6,-3,-1">-9,-6,-3,-1</option>
|
||
<option value="-6,-5,-4,-3,-2,-1">-6,-5,-4,-3,-2,-1</option>
|
||
<option value="-9,-8,-7,-6,-5,-4,-3,-2,-1">-9,-8,-7,-6,-5,-4,-3,-2,-1</option>
|
||
<option value="-6,-4,-2">-6,-4,-2</option>
|
||
<option value="-8,-6,-4,-2">-8,-6,-4,-2</option>
|
||
</select>
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td title="Select the coastline rendering style">Coastline style</td>
|
||
<td>
|
||
<select id="curveType">
|
||
<option value="Catmull–Rom" selected>Catmull–Rom</option>
|
||
<option value="Linear">Linear</option>
|
||
<option value="Basis">Basis</option>
|
||
<option value="Cardinal">Cardinal</option>
|
||
<option value="Step">Step</option>
|
||
</select>
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div id="customizeContent" class="tabcontent" style="display: block;">
|
||
<p title="Click "Start" to initiate customization, "Complete" to finalize the Heightmap">Heightmap customization:</p>
|
||
<div id="customizationMain">
|
||
<button title="Roll back to Heightmap customization" id="fromHeightmap">Roll back</button>
|
||
<button title="Start from scratch" id="fromScratch">Clear All</button>
|
||
<button class="buttonoff" title="Finalize the Heightmap. Not allowed if landmass area is insufficient" id="getMap" disabled="disabled">Complete</button>
|
||
</div>
|
||
<div id="customizationMenu" style="display: none;">
|
||
<div id="customizeTools">
|
||
<label title="Customization Tools">Tools:</label><br>
|
||
<button title="Open template editor" id="applyTemplate">Apply Template</button>
|
||
<button title="Open Image Convertion master" id="convertImage">Convert Image</button>
|
||
<button title="Rescale elevation" id="rescale">Rescale</button>
|
||
</div>
|
||
<div id="customizeBrushes">
|
||
<label title="Select brush and click on the map to use it">Free Draw brushes:</label><br>
|
||
<button id="brushElevate" title="Click and drag the map to increase cells elevation" class="radio">↥</button>
|
||
<button id="brushDepress" title="Click and drag the map to decrease cells elevation" class="radio">↧</button>
|
||
<button id="brushAlign" title="Click and drag the map to align cells elevation" class="radio">=</button>
|
||
<button id="brushSmooth" title="Click and drag the map to smooth cells elevation" class="radio">~</button>
|
||
<button id="brushHill" title="Click on the map to place a Hill" class="radio pressed">H</button>
|
||
<button id="brushPit" title="Click on the map to place a Pit" class="radio">P</button>
|
||
<button id="brushRange" title="Select two points to place a Range" class="radio">R</button>
|
||
<button id="brushTrough" title="Select two points to place a Trought" class="radio">T</button>
|
||
<button title="Smooth all heights" id="smoothHeights">≈</button>
|
||
<br><label title="Set the brush power">Brush power:</label>
|
||
<input id="brushPower" type="range" min="0.01" max="0.3" step="0.01" value="0.05">
|
||
<output id="brushPowerOutput">0.05</output><br>
|
||
</div><br>
|
||
<label title="Count of Land cells and Land-Map ratio">Landmass: <span id="landmassCounter">0</span></label><hr>
|
||
</div>
|
||
<p>Click to add a Label:</p>
|
||
<button id="addLabel" class="radio">Label</button>
|
||
<button id="addBurg" class="radio">Burg</button>
|
||
<div>
|
||
<p>Save / Load map:</p>
|
||
<button id="saveMap" title="Save in .map format to be loaded later as fully functional map">Save Map</button>
|
||
<button id="loadMap" title="Load fully functional map in a .map format">Load Map</button>
|
||
<button id="savePNG" title="Download the visible part of the map as .png image">Get PNG</button>
|
||
<button id="saveSVG" title="Download the map as .svg image for later use in vector graphics editors">Get SVG</button>
|
||
<input type="file" accept=".map" id="fileToLoad">
|
||
</div>
|
||
</div>
|
||
<div id="sticked">
|
||
<button id="randomMap" title="Generate new random map based on options being set" class="options">New Map</button>
|
||
<div style="float:right; margin-right:5px;">
|
||
<!-- Zoom should be smooth and centrified, to be fixed later
|
||
<button id="zoomMinus" title="Zoom out" class="options">-</button>
|
||
<button id="zoomPlus" title="Zoom in" class="options">+</button>
|
||
-->
|
||
<button id="zoomReset" title="Reset map zoom to default" class="options">Reset Zoom</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="labelEditor" style="display: none">
|
||
<button id="editGroupButton" title="Edit label Group" class="editButton icon-list-bullet"></button>
|
||
<select id="editGroupSelect" title="Select Group for this label" class="editTrigger"/></select>
|
||
<input id="editGroupInput" placeholder="new name" title="Declare new Group for this label" class="editTrigger"/>
|
||
<span id="editGroupNew" title="Declare new Group for this label" class="editButtonS icon-plus-squared-alt"></span>
|
||
<span id="editGroupRemove" title="Remove the Group with all labels" class="editButtonS icon-trash-empty"></span>
|
||
<button id="editTextButton" title="Edit label Text" class="editButton icon-pencil"></button>
|
||
<input id="editText" class="editTrigger"/>
|
||
<span id="editTextRandom" title="Generate random name" class="editButtonS icon-shuffle"></span>
|
||
<button id="editFontButton" title="Select Font for the entire Group" class="editButton icon-font"></button>
|
||
<span id="editExternalFont" title="Fetch fonts by linking @font-face declaration" class="editButtonS icon-link"></span>
|
||
<select id="editFontSelect" class="editTrigger" title="Select one of the default Fonts"></select>
|
||
<input id="editFontInput" placeholder="link to @font-face" title="Fetch fonts by linking @font-face declaration" class="editTrigger"/>
|
||
<i id="editSizeIcon" class="icon-text-height"></i>
|
||
<input id="editSize" title="Change Font size for the entire Group" class="editTrigger" value="14" type="number" min="1" max="100" step=".5"/>
|
||
<button id="editStyleButton" title="Select Color for the entire Group" class="editButton icon-brush"></button>
|
||
<input id="editColor" type="color" class="editTrigger" value="#3e3e4b">
|
||
<i id="editOpacityIcon" class="icon-adjust"></i>
|
||
<input id="editOpacity" title="Change Opacity for the entire Group" class="editTrigger" value="1" type="number" min="0" max="1" step="0.02">
|
||
<i id="editShadowIcon" class="icon-clone"></i>
|
||
<input id="editShadow" title="Change Shadow for the entire Group" class="editTrigger" value="1" type="number" min="0" max="1" step="0.02" disabled="true">
|
||
<button id="editAngleButton" title="Rotate the label" class="editButton icon-ccw"></button>
|
||
<input id="editAngle" class="editTrigger" value="0" type="range" min="-180" max="180" step="0.2" oninput="editAngleValue.innerHTML = Math.abs(this.value)+'°'">
|
||
<span id="editAngleValue" class="editValue">0°</span>
|
||
<button id="editCopy" title="Copy the label" class="editButton icon-clone"></button>
|
||
<button id="editRemoveSingle" title="Remove the label" class="editButton icon-trash"></button>
|
||
</div>
|
||
|
||
<div id="riverEditor" style="display: none">
|
||
<button id="riverRisize" title="Resize (rotate, scale) river" class="editButton icon-arrows-cw"></button>
|
||
<i id="riverAngleIcon" title="Rotate river" class="dialog-icon icon-cw"></i>
|
||
<input id="riverAngle" class="editTrigger" value="0" type="range" min="-180" max="180" step="0.2">
|
||
<span id="riverAngleValue" class="editValue">0°</span>
|
||
<i id="riverScaleIcon" title="Change river scale" class="dialog-icon icon-link-ext"></i>
|
||
<input id="riverScale" class="editTrigger" value="1" type="number" min="0.1" max="3" step="0.01">
|
||
<span id="riverReset" title="Reset transformation" class="editButtonS icon-cancel-circled2"></span>
|
||
<button id="riverRenegerate" title="Regenerate river" class="editButton icon-shuffle"></button>
|
||
<button id="riverAddPoint" title="Click to add a river point" class="editButton icon-plus-squared-alt"></button>
|
||
<button id="riverRemovePoint" title="Click on red circle to remove river point" class="editButton icon-minus-squared-alt"></button>
|
||
<button id="riverCopy" title="Copy river" class="editButton icon-clone"></button>
|
||
<button id="riverNew" title="Create new river clicking on map" class="editButton icon-map-pin"></button>
|
||
<button id="riverRemove" title="Remove river" class="editButton icon-trash"></button>
|
||
</div>
|
||
|
||
<div id="templateEditor" style="display: none">
|
||
<div id="templateTop">
|
||
Base template: <select id="templateSelect" data-prev="templateNew" title="Select base template"/>
|
||
<option value="templateCustom" selected>Custom</option>
|
||
<option value="templateVolcano">Volcano</option>
|
||
<option value="templateHighIsland">High Island</option>
|
||
<option value="templateLowIsland">Low Island</option>
|
||
<option value="templateContinents">Continents</option>
|
||
<option value="templateArchipelago">Archipelago</option>
|
||
<option value="templateAtoll">Atoll</option>
|
||
</select>
|
||
</div>
|
||
<div id="templateTools">
|
||
<button id="templateMountain" title="Mountain: high big blob. Can be placed only once and only as a first step" class="noicon">M</button>
|
||
<button id="templateHill" title="Hill: small blob" class="noicon">H</button>
|
||
<button id="templatePit" title="Pit: round depression" class="noicon">P</button>
|
||
<button id="templateRange" title="Pit: elongated elevation" class="noicon">R</button>
|
||
<button id="templateTrough" title="Trough: elongated depression" class="noicon">T</button>
|
||
<button id="templateStrait" title="Strait: centered vertical depression" class="noicon">S</button>
|
||
<button id="templateAdd" title="Add or subtract value from all heights" class="noicon">+</button>
|
||
<button id="templateMultiply" title="Multiply all heights by factor" class="noicon">*</button>
|
||
<button id="templateSmooth" title="Smooth the map replacing cell heights by an average values of its neighbors" class="noicon">~</button>
|
||
</div>
|
||
<div id="templateBody" data-changed=0>
|
||
<div data-type="Mountain">Mountain
|
||
<span title="Remove step" class="icon-trash-empty" onclick="this.parentNode.parentNode.removeChild(this.parentNode)"></span>
|
||
</div>
|
||
</div>
|
||
<div id="templateBottom">
|
||
<button id="templateRun" title="Apply current template" class="icon-play"></button>
|
||
<button id="templateClear" title="Clear the map" class="icon-cancel-circled2"></button>
|
||
<button id="templateComplete" title="Finalize the Heightmap. Not allowed if insufficient land area available" class="icon-check"></button>
|
||
<button id="templateLoad" title="Open previously saved template" class="icon-upload"></button>
|
||
<input type="file" accept=".txt" id="templateToLoad" style="display: none;">
|
||
<button id="templateSave" title="Save template" class="icon-download"></button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="imageConverter" style="display: none">
|
||
<div id="convertImageButtons">
|
||
<input type="file" accept="image/*" id="imageToLoad" style="display: none;">
|
||
<button id="convertImageLoad" title="Load image to convert" class="icon-upload"></button>
|
||
<button id="convertAutoLum" title="Auto-assign colors based on liminosity" class="icon-adjust"></button>
|
||
<button id="convertAutoHue" title="Auto-assign colors based on hue" class="icon-brush"></button>
|
||
<button id="convertColorsMinus" title="Reduce the number of colors. Minimal number is 3" class="icon-minus-squared"></button>
|
||
<button id="convertColorsPlus" title="Increase the number of colors. Minimal number is 256" class="icon-plus-squared"></button>
|
||
<input id="convertColors" value="12" style="display: none;"/>
|
||
<button id="convertImageGrid" title="Toggle grid" class="icon-eye"></button>
|
||
<button id="convertOverlayButton" title="Change overlay opacity" class="icon-clone"></button>
|
||
<input id="convertOverlay" title="Change overlay opacity" type="range" min="0" max="1" step="0.01" value="0" style="display: none;">
|
||
<span id="convertOverlayValue" title="Overlay opacity" style="display: none;">0</span>
|
||
<button id="convertComplete" title="Complete conversion. All unassigned colors will be considered as ocean" class="icon-check"></button>
|
||
</div>
|
||
<div id="colorsSelect">
|
||
<div id="colorScheme"></div>
|
||
<span id="colorsSelectValue">0</span>
|
||
</div>
|
||
<div id="colorsAssigned" style="display: none">
|
||
<label>Assigned colors: </label><br>
|
||
</div>
|
||
<div id="colorsUnassigned" style="display: none">
|
||
<label>Unassigned colors: </label><br>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="heightmapRescaler" style="display: none">
|
||
<div id="rescalerButtons">
|
||
<button id="rescaleMultiply" title="Multiply heights by value" class="icon-cancel-circled"></button>
|
||
<button id="rescaleAdd" title="Add value to heights" class="icon-plus-circled"></button>
|
||
<input id="rescaleModifier" class="pureInput" title="Set modifier value. Value may be positive, negative, fractional, '^2', '^3'" type="number" value="1.1" min="0" max="10" step="0.01">
|
||
<input id="rescaleSubject" class="pureInput" title="Select change subject: 'all', 'land' or interval with hyphen withount space, e.g. '0.17-0.2'" value="land">
|
||
</div>
|
||
</div>
|
||
|
||
<div id="alert" title="Warning!" style="display: none">
|
||
<p id="alertMessage">Warning!</p>
|
||
</div>
|
||
|
||
<div id="statusbar">
|
||
Coord: <span id="lx">0</span>/<span id="ly">0</span>;
|
||
Cell: <span id="cell">0</span>;
|
||
Height: <span id="height">0</span>;
|
||
Type: <span id="feature">no</span>;
|
||
Flux: <span id="flux">0</span>;
|
||
Region: <span id="region">no</span>;
|
||
Culture: <span id="culture">no</span>;
|
||
River: <span id="river">no</span>;
|
||
Path: <span id="path">no</span>;
|
||
Score: <span id="score">no</span>.
|
||
</div>
|
||
|
||
<script type="text/javascript" src="script.js?version=0.52b"></script>
|
||
</body> |