From 11099bdd47adcc5c17227d6579027ee44b285a77 Mon Sep 17 00:00:00 2001 From: Azgaar Date: Mon, 7 May 2018 00:21:12 +0300 Subject: [PATCH] v. 0.56 --- README.md | 38 +- fonts.css | 78 +- index.css | Bin 102040 -> 19393 bytes index.html | 337 +-- libs/jquery.ui.touch-punch.min.js | 11 + libs/polylabel.min.js | 1 + libs/priority-queue.min.js | 1 + libs/quantize.min.js | 1 + script.js | 3559 ++++++++++++++++++----------- 9 files changed, 2513 insertions(+), 1513 deletions(-) create mode 100644 libs/jquery.ui.touch-punch.min.js create mode 100644 libs/polylabel.min.js create mode 100644 libs/priority-queue.min.js create mode 100644 libs/quantize.min.js diff --git a/README.md b/README.md index a56098ea..f662ac3c 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ -# Fantasy Map Generator - -Azgaar's _Fantasy Map Generator_. Based on [D3](https://d3js.org) Voronoi diagram rendered in svg. - -Project goal is a procedurally generated map for my *Medieval Dynasty* simulator. Map should be interactive, scalable, fast and plausible. There should be enough space to place at least 500 burgs within 7 countries. The imagined land area is about 1 million km2. - -[![alt tag](https://i0.wp.com/azgaar.files.wordpress.com/2017/03/80k-part.png)](https://azgaar.wordpress.com) - -Project is under development, check out the demo [here](https://azgaar.github.io/Fantasy-Map-Generator). Please refer to [the project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for guidance. Links to an older versions are listed in the [changelog](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog). - -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:_ - -* Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) - -* Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) - -* Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) \ No newline at end of file +# Fantasy Map Generator + +Azgaar's _Fantasy Map Generator_. Based on [D3](https://d3js.org) Voronoi diagram rendered in svg. + +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 km2. As of now all these parameters are customizable. + +[![alt tag](https://i0.wp.com/azgaar.files.wordpress.com/2017/03/80k-part.png)](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. + +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:_ + +* Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) + +* Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) + +* Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) diff --git a/fonts.css b/fonts.css index 497822d7..c1cd22bc 100644 --- a/fonts.css +++ b/fonts.css @@ -1,3 +1,11 @@ +@font-face { + font-family: 'Amatic SC'; + font-style: normal; + font-weight: 700; + src: local('Amatic SC Bold'), local('AmaticSC-Bold'), url(https://fonts.gstatic.com/s/amaticsc/v11/TUZ3zwprpvBS1izr_vOMscGKfrUC.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + @font-face { font-family: 'Architects Daughter'; font-style: normal; @@ -6,14 +14,6 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } -@font-face { - font-family: 'Bangers'; - font-style: normal; - font-weight: 400; - src: local('Bangers Regular'), local('Bangers-Regular'), url(https://fonts.gstatic.com/s/bangers/v10/yJQgrSMUoqRj-0SbnQsv4g.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - @font-face { font-family: 'Bitter'; font-style: normal; @@ -23,11 +23,11 @@ } @font-face { - font-family: 'Chewy'; + font-family: 'Caesar Dressing'; font-style: normal; font-weight: 400; - src: local('Chewy Regular'), local('Chewy-Regular'), url(https://fonts.gstatic.com/s/chewy/v9/rb3O4cUMVLYzfgbaJOdJHw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; + src: local('Caesar Dressing'), local('CaesarDressing-Regular'), url(https://fonts.gstatic.com/s/caesardressing/v6/yYLx0hLa3vawqtwdswbotmK4vrRHdrz7.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } @font-face { @@ -54,6 +54,14 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } +@font-face { + font-family: 'Fredericka the Great'; + font-style: normal; + font-weight: 400; + src: local('Fredericka the Great'), local('FrederickatheGreat'), url(https://fonts.gstatic.com/s/frederickathegreat/v6/9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV--Sjxbc.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + @font-face { font-family: 'Gloria Hallelujah'; font-style: normal; @@ -78,14 +86,6 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } -@font-face { - font-family: 'Josefin Sans'; - font-style: normal; - font-weight: 400; - src: local('Josefin Sans Regular'), local('JosefinSans-Regular'), url(https://fonts.gstatic.com/s/josefinsans/v12/xgzbb53t8j-Mo-vYa23n5ugdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - @font-face { font-family: 'Kaushan Script'; font-style: normal; @@ -95,11 +95,19 @@ } @font-face { - font-family: 'Lobster'; + font-family: 'MedievalSharp'; font-style: normal; font-weight: 400; - src: local('Lobster Regular'), local('Lobster-Regular'), url(https://fonts.gstatic.com/s/lobster/v20/cycBf3mfbGkh66G5NhszPQ.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; + src: local('MedievalSharp'), url(https://fonts.gstatic.com/s/medievalsharp/v9/EvOJzAlL3oU5AQl2mP5KdgptMqhwMg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Metamorphous'; + font-style: normal; + font-weight: 400; + src: local('Metamorphous'), url(https://fonts.gstatic.com/s/metamorphous/v7/Wnz8HA03aAXcC39ZEX5y133EOyqs.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } @font-face { @@ -110,6 +118,14 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } +@font-face { + font-family: 'Nova Script'; + font-style: normal; + font-weight: 400; + src: local('Nova Script Regular'), local('NovaScript-Regular'), url(https://fonts.gstatic.com/s/novascript/v10/7Au7p_IpkSWSTWaFWkumvlQKGFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + @font-face { font-family: 'Orbitron'; font-style: normal; @@ -134,10 +150,26 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; } +@font-face { + font-family: 'Uncial Antiqua'; + font-style: normal; + font-weight: 400; + src: local('Uncial Antiqua'), local('UncialAntiqua-Regular'), url(https://fonts.gstatic.com/s/uncialantiqua/v5/N0bM2S5WOex4OUbESzoESK-i-MfWQZQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Underdog'; + font-style: normal; + font-weight: 400; + src: local('Underdog'), local('Underdog-Regular'), url(https://fonts.gstatic.com/s/underdog/v6/CHygV-jCElj7diMroWSlWV8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + @font-face { font-family: 'Yellowtail'; font-style: normal; font-weight: 400; src: local('Yellowtail Regular'), local('Yellowtail-Regular'), url(https://fonts.gstatic.com/s/yellowtail/v8/GcIHC9QEwVkrA19LJU1qlPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} \ No newline at end of file +} diff --git a/index.css b/index.css index df03bf56284b1f49af3aa6d0d4afc21070f50cd3..9a97d8c52e1e163382dea0f56e50f87529193a7e 100644 GIT binary patch literal 19393 zcmZ=r%g-y(O-oEpRjB6WQc!?$b2D=)trXN9b8=JjQi>84f}Pc^;nKw=l{u+a3VHcO zxrsRl;quhX^o$ZK1rq}UuwZdfvXw$kesW@t2C_j4L8!lZ$B$i|*>m}#s>KE%LLLFC}tY2oK?^#-uY8F{xWMPt;nv`E& zWS)^!8Il;~U*r?0SDv4iW~8Z*26AwThB}z5t_gNzXeoCrtQDR814oFYp^*`oZ)gcN-pJ4rY_gG&Aw=BB&=e%^<_d9!o12@9H7{2!FBdPDLvCtH zW}-qtQD$BVB+3*NQZmbQ6p|D3$`Xqes#7wH3vv=GLGhE9YF!J}mXx1T2~nP#Sd^Zb zXQcp%q@?_!l++>!4{UyMSvo|Wfm40SQo!I^mlr6oEF zNu?zv`FT1D#i==|$t5}pi7?0ImzLyY=7E!89>`r_$KzC;Tv}8NawpVAm^<~Le2Aeq z6e*Xa78Mmklqe_^mlWk^r|Onxrj%q@DH!OPL&F3r4suggJ}7*_;RBV-O)So~QUE1r z<>HLQf>cP_Q&0ej>*nUCq*^H?<`iTk!rY~tT$)otH!BqsKyidSDwNZUGE-pwM@?Rk z2u{n)$w7@h<($O4l-$H(xF0}Dbc;$sp?G|P z#c+_#pqM5y1%Q-8(SJ7*LHQyvGY=Np*los>$TKo?a^RLjJc7tqh6NQ+>p{-4Qc$)819%R}%`eTvokh@f zmuF;xOD{+~L+rw7wSfiPZfM*a!37{%K?Pp2X|g$_422g8DT&1yiA6=A!q-60R0n(M zkepaxr2s1&Ant(_!f^LMJe-%0DA$yW@=Hrnu`2*27hEw^l%JRa%10$diJ6F?COM*t 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 diff --git a/index.html b/index.html index 24516794..6c56f571 100644 --- a/index.html +++ b/index.html @@ -1,40 +1,56 @@ + - Azgaar's Fantasy Map Generator Demo - - + + + Azgaar's Fantasy Map Generator Demo + + + + - + - + - - + + - - + + + - -
-

-

Loading...

-
- + + + + + + + + + + + @@ -42,9 +58,21 @@ - + + + + + + + + + + + + + - + @@ -52,9 +80,9 @@ - + - + @@ -102,9 +130,19 @@ - + + + + + +
+
Azgaar's
+
Fantasy Map Generator
+
v. 0.56b
+

LOADING...

+
@@ -128,22 +166,28 @@ - +

Displayed layers. Drag to move, click to toggle

-
+
  • Ocean
  • -
  • Landmass
  • +
  • Landmass
  • Heightmap
  • Grid
  • Overlay
  • Cultures
  • Routes
  • Rivers
  • -
  • Countries
  • +
  • Countries
  • Borders
  • Relief
  • Labels
  • Burgs
  • +
+
+ + + +
@@ -168,10 +212,12 @@ - + +
+
Ensure Overlay layer is active (see Layout tab)

Overlay type: 1 -
+

Filter:
@@ -235,15 +284,15 @@

Toggle filters:

- +

Generate new map to apply the options!

- + @@ -270,9 +319,9 @@ - + @@ -390,7 +439,7 @@

Click to add:

- - - + + +
-

Fantasy Map Generator is an online tool which produces a procedurally generated fantasy maps. You may either use an auto-generated maps or create you own map manually or with a help of templates or image converter. Check out the wiki for guidance.

-

This is a Demo version, project is still under development. For older versions see the changelog. Some details are covered in my blog. To track the current progress see the devboard.

-

Please report bugs and suggest new features here. You may also send me an email.

+

Fantasy Map Generator is an online tool which produces a procedurally generated fantasy maps. You may either use an auto-generated maps or create you own map manually or with a help of templates or image converter. Check out the wiki for guidance.

+

This is a Demo version, project is still under development. For older versions see the changelog. Some details are covered in my blog. To track the current progress see the devboard.

+

Please report bugs and suggest new features here. You may also send me an email.

- -
Map sizeMap size w: @@ -251,7 +300,7 @@ - +
Graph sizeGraph size - + 1 @@ -361,7 +410,7 @@ - +
`; + for (var i=0; i < data.length && i < manors.length; i++) { + const v = data[i]; + if (v === "" || v === undefined) {continue;} + if (v === manors[i].name) {continue;} + change.push({i, name: v}); + message += ``; + } + message += `
IdCurrent nameNew Name
${i}${manors[i].name}${v}
`; + alertMessage.innerHTML = message; + $("#alert").dialog({title: "Burgs bulk renaming", position: {my: "center", at: "center", of: "svg"}, + buttons: { + Cancel: function() {$(this).dialog("close");}, + Confirm: function() { + for (var i=0; i < change.length; i++) { + const id = change[i].i; + manors[id].name = change[i].name; + labels.select("#manorLabel"+id).text(change[i].name); + } + $(this).dialog("close"); + updateCountryEditors(); + } + } + }); } - voronoi = d3.voronoi().extent([[0, 0], [mapWidth, mapHeight]]); - oceanPattern.select("rect").attr("width", mapWidth).attr("height", mapHeight); - oceanLayers.select("rect").attr("width", mapWidth).attr("height", mapHeight); - scX = d3.scaleLinear().domain([0, mapWidth]).range([0, mapWidth]); - scY = d3.scaleLinear().domain([0, mapHeight]).range([0, mapHeight]); - lineGen = d3.line().x(function(d) {return scX(d.scX);}).y(function(d) {return scY(d.scY);}); - zoom.translateExtent([[0, 0], [mapWidth, mapHeight]]); + fileReader.readAsText(fileToLoad, "UTF-8"); + }); + + // just apply map size that was already set, apply graph size! + function applyMapSize() { + svgWidth = graphWidth = +mapWidthInput.value; + svgHeight = graphHeight = +mapHeightInput.value; + svg.attr("width", svgWidth).attr("height", svgHeight); + voronoi = d3.voronoi().extent([[0, 0], [graphWidth, graphHeight]]); + initView = [1, 0, 0]; + zoom.translateExtent([[0, 0], [graphWidth, graphHeight]]).scaleExtent([1, 20]).scaleTo(svg, 1); + viewbox.attr("transform", null); + ocean.selectAll("rect").attr("x", 0).attr("y", 0).attr("width", "100%").attr("height", "100%"); + } + + // change svg size on manual size change or window resize, do not change graph size + function changeMapSize() { + svgWidth = +mapWidthInput.value; + svgHeight = +mapHeightInput.value; + svg.attr("width", svgWidth).attr("height", svgHeight); + zoom.translateExtent([[0, 0], [svgWidth, svgHeight]]); + fitScaleBar(); + fitStatusBar(); + } + + // fit full-screen map if window is resized + $(window).resize(function(e) { + // trick to prevent resize on download bar opening + if (allowResize === false) {allowResize = true; return;} + mapWidthInput.value = window.innerWidth; + mapHeightInput.value = window.innerHeight; + changeMapSize(); + }); + + // fit ScaleBar to map size + function fitScaleBar() { if (d3.select("#scaleBar").size()) { var bbox = d3.select("#scaleBar").node().getBBox(); - var tr = [mapWidth - 10 - bbox.width, mapHeight - 10 - bbox.height]; + var tr = [svgWidth - 10 - bbox.width, svgHeight - 10 - bbox.height]; d3.select("#scaleBar").attr("transform", "translate(" + rn(tr[0]) + "," + rn(tr[1]) + ")"); - localStorage.removeItem("scaleBar"); + sessionStorage.removeItem("scaleBar"); } - $("#statusbar").css("top", mapHeight + 8); - if ($("body").hasClass("fullscreen")) {$("#statusbar").css("top", mapHeight - 20);} + } + + // fit Statusbar to map size + function fitStatusBar() { + var el = $("#statusbar"); + el.css("top", svgHeight - 20); + if (toggleStatusbar.checked) {el.show();} + } + + // restore initial style + function applyDefaultStyle() { + viewbox.on("touchmove mousemove", moved); + landmass.attr("opacity", 1).attr("fill", "#eef6fb"); + coastline.attr("opacity", .5).attr("stroke", "#1f3846").attr("stroke-width", .7).attr("filter", "url(#dropShadow)"); + regions.attr("opacity", .55); + stateBorders.attr("opacity", .8).attr("stroke", "#56566d").attr("stroke-width", .5).attr("stroke-dasharray", "1.2 1.5").attr("stroke-linecap", "butt"); + neutralBorders.attr("opacity", .8).attr("stroke", "#56566d").attr("stroke-width", .3).attr("stroke-dasharray", "1 1.5").attr("stroke-linecap", "butt"); + cults.attr("opacity", .6); + rivers.attr("opacity", 1).attr("fill", "#5d97bb"); + lakes.attr("opacity", 1).attr("fill", "#a6c1fd").attr("stroke", "#477794").attr("stroke-width", .3); + burgs.attr("opacity", 1).attr("fill", "#ffffff").attr("stroke", "#3e3e4b"); + roads.attr("opacity", .8).attr("stroke", "#d06324").attr("stroke-width", .4).attr("stroke-dasharray", "1 2").attr("stroke-linecap", "round"); + trails.attr("opacity", .8).attr("stroke", "#d06324").attr("stroke-width", .1).attr("stroke-dasharray", ".5 1").attr("stroke-linecap", "round"); + searoutes.attr("opacity", .8).attr("stroke", "#ffffff").attr("stroke-width", .2).attr("stroke-dasharray", "1 2").attr("stroke-linecap", "round"); + grid.attr("opacity", 1).attr("stroke", "#808080").attr("stroke-width", .1); + ruler.attr("opacity", 1).style("display", "none").attr("filter", "url(#dropShadow)"); + overlay.attr("opacity", .8).attr("stroke", "#808080").attr("stroke-width", .5); + ocean.select("#oceanBase").attr("opacity", 1).attr("fill", "#53679f"); + labels.attr("opacity", 1); + size = rn(8 - capitalsCount / 20); + if (size < 3) {size = 3;} + capitals.attr("fill", "#3e3e4b").attr("opacity", 1).attr("font-family", "Almendra SC").attr("data-font", "Almendra+SC").attr("font-size", size).attr("data-size", size); + towns.attr("fill", "#3e3e4b").attr("opacity", 1).attr("font-family", "Almendra SC").attr("data-font", "Almendra+SC").attr("font-size", 3).attr("data-size", 4); + size = rn(16 - capitalsCount / 6); + if (size < 6) {size = 6;} + countries.attr("fill", "#3e3e4b").attr("opacity", 1).attr("font-family", "Almendra SC").attr("data-font", "Almendra+SC").attr("font-size", size).attr("data-size", size); } // Options handlers $("input, select").on("input change", function() { var id = this.id; + if (id === "hideLabels") {invokeActiveZooming();} if (id === "styleElementSelect") { var sel = this.value; var el = viewbox.select("#"+sel); $("#styleInputs div").hide(); + // opacity + $("#styleOpacity, #styleFilter").css("display", "block"); + var opacity = el.attr("opacity") || 1; + styleOpacityInput.value = styleOpacityOutput.value = opacity; + // filter + if (sel == "oceanBase") {el = oceanLayers;} + styleFilterInput.value = el.attr("filter") || ""; if (sel === "rivers" || sel === "oceanBase" || sel === "lakes" || sel === "landmass" || sel === "burgs") { $("#styleFill").css("display", "inline-block"); styleFillInput.value = styleFillOutput.value = el.attr("fill"); @@ -5692,11 +6531,11 @@ function fantasyMap() { var id = this.id; var r = +id.replace("regionColor", ""); states[r].color = this.value; - regions.selectAll(".region"+r).attr("fill", this.value).attr("stroke", this.value); + regions.selectAll(".region"+r).attr("fill", this.value).attr("stroke", this.value); }); } - if (sel === "terrs") {$("#styleScheme").css("display", "block");} - if (sel === "heightmap") {$("#styleScheme").css("display", "block");} + if (sel === "terrs") {$("#styleScheme").css("display", "block");} + if (sel === "heightmap") {$("#styleScheme").css("display", "block");} if (sel === "cults") { $("#styleMultiple").css("display", "inline-block"); $("#styleMultiple input").remove(); @@ -5721,7 +6560,7 @@ function fantasyMap() { if (sel === "labels") { $("#styleFill, #styleFontSize").css("display", "inline-block"); styleFillInput.value = styleFillOutput.value = el.select("g").attr("fill"); - } + } if (sel === "burgs") { $("#styleSize").css("display", "block"); $("#styleStroke").css("display", "inline-block"); @@ -5730,13 +6569,6 @@ function fantasyMap() { if (sel === "overlay") { $("#styleOverlay").css("display", "block"); } - // opacity - $("#styleOpacity, #styleFilter").css("display", "block"); - var opacity = el.attr("opacity") || 1; - styleOpacityInput.value = styleOpacityOutput.value = opacity; - // filter - if (sel == "oceanBase") {el = oceanLayers;} - styleFilterInput.value = el.attr("filter") || ""; return; } if (id === "styleFillInput") { @@ -5782,6 +6614,7 @@ function fantasyMap() { if (sel == "oceanBase") {sel = "oceanLayers";} var el = svg.select("#"+sel); el.attr('filter', this.value); + invokeActiveZooming(); return; } if (id === "styleSchemeInput") { @@ -5802,8 +6635,16 @@ function fantasyMap() { toggleOverlay(); } } - if (id === "mapWidthInput" || id === "mapHeightInput") {changeMapSize();} - if (id === "sizeInput") {graphSize = sizeOutput.value = this.value;} + if (id === "mapWidthInput" || id === "mapHeightInput") { + changeMapSize(); + sessionStorage.setItem("screenSize", [+mapWidthInput.value, +mapHeightInput.value]); + } + if (id === "sizeInput") { + graphSize = sizeOutput.value = +this.value; + if (graphSize === 3) {sizeOutput.style.color = "red";} + if (graphSize === 2) {sizeOutput.style.color = "yellow";} + if (graphSize === 1) {sizeOutput.style.color = "green";} + } if (id === "randomizeInput") {randomizeOutput.innerHTML = +this.value ? "✓" : "✕";} if (id === "manorsInput") { if (randomizeInput.value === "1") { @@ -5816,7 +6657,7 @@ function fantasyMap() { if (randomizeInput.value === "1") { randomizeInput.value = 0; randomizeOutput.innerHTML = "✕"; - } + } capitalsCount = regionsOutput.value = this.value; var size = rn(6 - capitalsCount / 20); if (size < 3) {size = 3;} @@ -5886,16 +6727,21 @@ function fantasyMap() { $("#scaleBar").removeClass("hidden"); drawScaleBar(); } + if (id === "barLabel") { + $("#scaleBar").removeClass("hidden"); + drawScaleBar(); + } }); $("#rescaler").change(function() { var change = rn((+this.value - 5) / 10, 2); modifyHeights("all", change, 1); - mockHeightmap(); + updateHeightmap(); + updateHistory(); rescaler.value = 5; }); - $("#layoutPreset").on("change", function() { + $("#layoutPreset").on("change", function() { var preset = this.value; $("#mapLayers li").not("#toggleOcean, #toggleLandmass").addClass("buttonoff"); $("#toggleOcean, #toggleLandmass").removeClass("buttonoff"); @@ -5946,4 +6792,43 @@ function fantasyMap() { if (id === "customizeTab") {$("#customizeContent").show();} if (id === "aboutTab") {$("#aboutContent").show();} }); -} \ No newline at end of file + + // Pull request from @evyatron + // https://github.com/Azgaar/Fantasy-Map-Generator/pull/49 + function addDragToUpload() { + document.addEventListener('dragover', function(e) { + e.stopPropagation(); + e.preventDefault(); + $('#map-dragged').show(); + }); + + document.addEventListener('dragleave', function(e) { + $('#map-dragged').hide(); + }); + + document.addEventListener('drop', function(e) { + e.stopPropagation(); + e.preventDefault(); + $('#map-dragged').hide(); + // no files or more than one + if (e.dataTransfer.items == null || e.dataTransfer.items.length != 1) {return;} + var file = e.dataTransfer.items[0].getAsFile(); + // not a .map file + if (file.name.indexOf('.map') == -1) { + alertMessage.innerHTML = 'Please upload a .map file you have previously downloaded'; + $("#alert").dialog({ + resizable: false, title: "Invalid file format", + width: 400, buttons: { + Close: function() { $(this).dialog("close"); } + }, position: {my: "center", at: "center", of: "svg"} + }); + return; + } + // all good - show uploading text and load the map + $("#map-dragged > p").text("Uploading..."); + uploadFile(file, function onUploadFinish() { + $("#map-dragged > p").text("Drop to upload"); + }); + }); + } +}