diff --git a/Fantasy Map Generator.lnk b/Fantasy Map Generator.lnk new file mode 100644 index 000000000..1e1f20124 Binary files /dev/null and b/Fantasy Map Generator.lnk differ diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 000000000..6760d7eb6 --- /dev/null +++ b/Readme.txt @@ -0,0 +1,5 @@ +Azgaar's Fantasy Map Generator +This is an open-source software available under MIT license +https://github.com/Azgaar/Fantasy-Map-Generator + +To run the tool unzip ALL files and open index.html in browser \ No newline at end of file diff --git a/icons.css b/icons.css index b3c0e0748..eab23067c 100644 --- a/icons.css +++ b/icons.css @@ -250,7 +250,6 @@ .icon-smooth:before {font-weight: bold;content:'∼';} .icon-disrupt:before {font-weight: bold;content:'⥄';} .icon-if:before {font-style: italic; font-weight: bold;content:'if';} -/* .icon-coa:before {content: '⚜'; font-size: 1.1em; margin: -2px;} */ .icon-coa:before {content:'\f3ed'; font-size: .9em; color: #999;} /* '' */ .icon-half:before {font-weight: bold;content:'½';} .icon-curve:before {content: 'C';} @@ -263,4 +262,37 @@ margin-left: 1px; width: .6em; font-family: monospace; -} \ No newline at end of file +} +.icon-die:before {content:'🎲';} +.icon-button-die:before {content:'🎲'; padding-right: .4em;} +.icon-button-power:before {content:'💪'; padding-right: .6em;} + +.icon-button-melee:before {content:'⚔️'; padding-right: .4em;} +.icon-button-skirmish:before {content:'🎯'; padding-right: .4em;} +.icon-button-pursue:before {content:'🐎'; padding-right: .4em;} +.icon-button-retreat:before {content:'🏳️'; padding-right: .4em;} +.icon-button-shelling:before {content:'💣'; padding-right: .4em;} +.icon-button-boarding:before {content:'⚔️'; padding-right: .4em;} +.icon-button-chase:before {content:'⛵'; padding-right: .4em;} +.icon-button-withdrawal:before {content:'🏳️'; padding-right: .4em;} +.icon-button-bombardment:before {content:'💣'; padding-right: .4em;} +.icon-button-blockade:before {content:'⏳'; padding-right: .4em;} +.icon-button-sheltering:before {content:'🔒'; padding-right: .4em;} +.icon-button-sortie:before {content:'🚪'; padding-right: .4em;} +.icon-button-defense:before {content:'🛡️'; padding-right: .4em;} +.icon-button-storming:before {content:'⚔️'; padding-right: .4em;} +.icon-button-looting:before {content:'☠️'; padding-right: .4em;} +.icon-button-surrendering:before {content:'🏳️'; padding-right: .4em;} +.icon-button-surprise:before {content:'⚡'; padding-right: .4em;} +.icon-button-shock:before {content:'💫'; padding-right: .4em;} +.icon-button-flee:before {content:'⛵'; padding-right: .4em;} +.icon-button-waiting:before {content:'⌛'; padding-right: .4em;} +.icon-button-maneuvering:before {content:'💢'; padding-right: .4em;} +.icon-button-dogfight:before {content:'🐕'; padding-right: .4em;} + +.icon-button-field:before {content:'🗡️'; padding-right: .4em;} +.icon-button-naval:before {content:'🌊'; padding-right: .4em;} +.icon-button-siege:before {content:'🏰'; padding-right: .4em;} +.icon-button-ambush:before {content:'🌳'; padding-right: .4em;} +.icon-button-landing:before {content:'⚓'; padding-right: .4em;} +.icon-button-air:before {content:'💨'; padding-right: .4em;} \ No newline at end of file diff --git a/images/icon.ico b/images/icon.ico new file mode 100644 index 000000000..78e496d03 Binary files /dev/null and b/images/icon.ico differ diff --git a/index.css b/index.css index ffe0ca044..57d0df7ff 100644 --- a/index.css +++ b/index.css @@ -101,7 +101,7 @@ button, select, a, .pointer { fill-rule: evenodd; } -#lakes, #coastline, #armies { +#lakes, #coastline, #armies, #ice { cursor: pointer; } @@ -114,7 +114,7 @@ button, select, a, .pointer { fill-rule: evenodd; } -#oceanLayers { +#oceanLayers, #terrs { fill-rule: evenodd; } @@ -123,7 +123,7 @@ button, select, a, .pointer { stroke-linejoin: round; } -#regions, #cults, #relig, #biomes, #provs, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass { +#regions, #cults, #relig, #biomes, #provs, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass, #fogging { pointer-events: none; } @@ -333,13 +333,13 @@ div.tab > button#optionsHide { .tab { overflow: hidden; border-bottom: 1px solid #5d4651; - height: 2.3em; + height: 2.2em; } #options p { font-style: italic; font-weight: bold; - margin-bottom: 0; + margin: .8em 0 0 0; } #aboutContent { @@ -353,6 +353,7 @@ div.tab > button#optionsHide { #aboutContent a { color: #1d1b1c; font-weight: bold; + text-decoration: underline; } #optionsContent span { @@ -482,7 +483,6 @@ input[type="color"]::-webkit-color-swatch-wrapper { width: 100%; background-color: white; text-align: left; - height: 1.5em; } #optionsContent input[type="range"] { @@ -579,10 +579,9 @@ input[type="color"]::-webkit-color-swatch-wrapper { } .tab > button.options { - /* width: 23.25%; */ width: 18.6%; height: 100%; - padding: 7px 0px; + padding: 6px 0px; } button.options { @@ -590,6 +589,7 @@ button.options { font-weight: bold; float: left; border: none; + border-radius: 0; padding: 8px 10px; transition: 0.2s; } @@ -949,19 +949,80 @@ body button.noicon { stroke: #2c0808; } +#battleBody > table { + padding: .2em .6em .2em .6em; + border: 1px solid #ccc; + margin: .2em 0 .4em 0; + display: block; + overflow: auto; + max-height: 34vh; + width: 100%; +} + +#battleBody > table .regiment { + width: 13em; + font-weight: bold; +} + +tr.battleCasualties, tr.battleSurvivors { + font-style: italic; + font-size: .9em; +} + +#battleBody div.battlePhases, +#battleBottom div.battleTypes { + position: fixed; + background-color: #ffffff30; +} + +#battleBody div.battlePhases > button, +#battleBottom div.battleTypes > button { + width: 3.2em; + display: block; + margin: .2em 0; +} + +div#regimentSelectorBody { + max-height: 50vh; + font-size: .9em; +} + +div#regimentSelectorBody > div { + padding: .1em; + border: 1px solid #fff; +} + +div#regimentSelectorBody > div:hover { + border: 1px solid #ccc; +} + +div#regimentSelectorBody > div.selected { + border: 1px solid #b28585; +} + +div#regimentSelectorBody > div.inactive { + background-color: #eee; + color: #aaa; +} + +div#regimentSelectorBody > div > div { + display: inline-block; + pointer-events: none; +} + .drag-trigger { - border-left: 12px solid transparent; - border-right: 12px solid #916e7f; - border-top: 12px solid transparent; + border-left: 1em solid transparent; + border-right: 1em solid #000; + border-top: 1em solid transparent; position: absolute; - right: 0; - top: 100%; - margin-top: -12px; + right: -1px; + bottom: -1px; + opacity: .3; } .drag-trigger:hover { cursor: move; - border-right-color: #5e4fa2; + opacity: .6; } .tint { @@ -969,10 +1030,10 @@ body button.noicon { } .color-div { - width: 2.7em; - height: 1.1em; + width: 3em; + height: 1em; display: inline-block; - margin: .1em .2em; + margin: 0 .16em; border: 1px #c5c5c5 groove; cursor: pointer; } @@ -1151,10 +1212,21 @@ div.slider .ui-slider-handle { .table { max-height: 75vh; + max-width: 75vw; overflow-x: hidden; overflow-y: auto; } +.overflow { + max-width: 93vw; + overflow: auto; + max-height: 75vh; +} + +.overflow > div { + width: max-content; +} + div.header > div { font-weight: bold; font-size: .9em; @@ -1657,7 +1729,6 @@ rect.fillRect { #militaryOptionsTable input { width: 9em; - padding-left: 3px; border: 1px solid #d4d4d4; } @@ -1665,6 +1736,10 @@ rect.fillRect { width: 4em; } +#militaryOptionsTable button { + width: 100%; +} + #gridOverlay { fill: none; } @@ -1691,7 +1766,7 @@ ul.share-buttons li { } ul.share-buttons img { - width: 18px; + width: 2em; } input[type="checkbox"] { @@ -1760,24 +1835,6 @@ div.textual span, .textual legend { vertical-align: top; } -#markerIconTable { - font-size: 1.6em; - cursor: pointer; -} - -#markerIconTable td:hover { - transition: .1s; - color: #3c3ca9; -} - -#markerIconTable td:active { - transform: translate(0px, 1px); -} - -#markerIconTable td.selected { - outline: 1px solid #9b9b9b; -} - .highlighted { outline-width: 2px; outline-style: dashed; @@ -1808,7 +1865,9 @@ div#notesHeader { } div#notesBody { - padding: 0 10px; + padding: 0 1em; + max-height: 80vh; + overflow: auto; } svg.button { @@ -2025,7 +2084,7 @@ svg.button { left: 50%; top: 50%; transform: translate(-50%, -50%); - max-width: 21em; + max-width: 22em; background-color: #fff; padding: 1.2em; border: solid 1px #000; @@ -2056,6 +2115,16 @@ svg.button { text-shadow: 0px 1px 4px #4c3a35; } +.epgrid line { + stroke: lightgrey; + stroke-opacity: .7; + shape-rendering: crispEdges; +} + +.epgrid path { + stroke-width: 0; +} + #debug { font-size: 1px; opacity: .8; diff --git a/index.html b/index.html index 2cbce7f57..eaf4bf580 100644 --- a/index.html +++ b/index.html @@ -34,11 +34,11 @@ #loading-text span:nth-child(3), #mapOverlay > span:nth-child(3) {animation-delay: 2s;} @keyframes blink {0% {opacity: 0;} 20% {opacity: 1;} 100% {opacity: .1;}} - - + + - - + + @@ -214,8 +214,8 @@ - - + + @@ -899,7 +899,7 @@
Azgaar's
Fantasy Map Generator
-
v. 1.3
+
v. 1.4

LOADING...

@@ -960,6 +960,7 @@
  • Routes
  • Temperature
  • Population
  • +
  • Ice
  • Precipitation
  • Labels
  • Icons
  • @@ -1002,6 +1003,7 @@ + @@ -1022,7 +1024,6 @@ - @@ -1580,7 +1581,7 @@ - + @@ -1593,6 +1594,20 @@ + + + + + Year and era + + + + + + + + + @@ -1684,7 +1699,7 @@ - + @@ -1775,17 +1790,6 @@ - - - PNG/JPEG scale - - - - - - - - Zoom extent @@ -1796,7 +1800,8 @@ - + + @@ -1857,6 +1862,7 @@ + @@ -1877,8 +1883,8 @@ - - + +
    @@ -1910,22 +1916,21 @@

    Fantasy Map Generator is a free open source tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a new map from scratch. Check out the quick start tutorial, Q&A and hotkeys for guidance.

    -

    Join our Discord server and Reddit community to ask questions, get help and share created maps. You may support the project on Patreon.

    -

    The project is under active development. Creator and main maintainer: Azgaar. For older versions see the changelog. To track the development progress see the devboard. Please report bugs here. You can also contact me directly via email.

    -

    Special thanks to all supporters on Patreon!

    -

    Patreon Supporters: Aaron Meyer, Ahmad Amerih, AstralJacks, aymeric, Billy Dean Goehring, Branndon Edwards, - Chase Mayers, Curt Flood, cyninge, Dino Princip, E.M. White, es, Fondue, Fritjof Olsson, Gatsu, Johan Fröberg, Jonathan Moore, - Joseph Miranda, Kate, KC138, Luke Nelson, Markus Finster, Massimo Vella, Mikey, Nathan Mitchell, Paavi1, Pat, Ryan Westcott, - Sasquatch, Shawn Spencer, Sizz_TV, Timothée CALLET, UTG community, Vlad Tomash, Wil Sisney, William Merriott, Xariun, - Gun Metal Games, Scott Marner, Spencer Sherman, Valerii Matskevych, Alloyed Clavicle, Stewart Walsh, Ruthlyn Mollett (Javan), - Benjamin Mair-Pratt, Diagonath, Alexander Thomas, Ashley Wilson-Savoury, William Henry, Preston Brooks, JOSHUA QUALTIERI, - Hilton Williams, Katharina Haase, Hisham Bedri, Ian arless, Karnat, Bird, Kevin, Jessica Thomas, Steve Hyatt, Logicspren, - Alfred García, Jonathan Killstring, John Ackley, Invad3r233, Norbert Žigmund, Jennifer, PoliticsBuff, _gfx_, Maggie, - Connor McMartin, Jared McDaris, BlastWind, Franc Casanova Ferrer, Dead & Devil, Michael Carmody, Valerie Elise, naikibens220, - Jordon Phillips, William Pucs, The Dungeon Masters, Brady R Rathbun, J, Shadow, Matthew Tiffany, Huw Williams, Joseph Hamilton, - FlippantFeline, Tamashi Toh, kms, Stephen Herron, MidnightMoon, Whakomatic x, Barished, Aaron bateson, Brice Moss, Diklyquill, - PatronUser, Michael Greiner, Steven Bennett, Jacob Harrington, Miguel C., Reya C., Giant Monster Games, Noirbard, Brian Drennen, - Ben Craigie, Alex Smolin and many others!

    +

    Join our Discord server and Reddit community to ask questions, get help and share maps.

    +

    The project is under active development. Creator and main maintainer: Azgaar. To track the development progress see the devboard. For older versions see the changelog. Please report bugs here. You can also contact me directly via email.

    +
    + +
    +
    + + + + +
    SUPPORT ON PATREON +
    +
    +
    +

    Special thanks to all supporters on Patreon!

    + + + +
    @@ -2356,7 +2391,7 @@ - + @@ -2373,15 +2408,13 @@ @@ -2399,7 +2432,7 @@ - + -
    +
    + - +
    + + + + @@ -2581,32 +2752,33 @@
    - - - - + + + + + - +
    -
    Overlay opacity:
    - - +
    Overlay opacity:
    + +
    @@ -2776,7 +2948,7 @@ - + @@ -2813,6 +2985,7 @@
    + @@ -2839,7 +3012,7 @@
    Generated examples: @@ -3048,7 +3219,7 @@ - +
    @@ -3203,7 +3374,7 @@ -
    +
    Urbanization rate:
    @@ -3279,16 +3450,18 @@