diff --git a/index.html b/index.html index 0a40e776..02898ad4 100644 --- a/index.html +++ b/index.html @@ -268,6 +268,7 @@ + @@ -298,6 +299,7 @@
  • Population
  • Ice
  • Precipitation
  • +
  • Resources
  • Emblems
  • Labels
  • Icons
  • diff --git a/main.js b/main.js index 881ecdde..54913408 100644 --- a/main.js +++ b/main.js @@ -57,8 +57,8 @@ let coastline = viewbox.append("g").attr("id", "coastline"); let ice = viewbox.append("g").attr("id", "ice").style("display", "none"); let prec = viewbox.append("g").attr("id", "prec").style("display", "none"); let population = viewbox.append("g").attr("id", "population"); -let emblems = viewbox.append("g").attr("id", "emblems").style("display", "none"); let goods = viewbox.append("g").attr("id", "goods"); +let emblems = viewbox.append("g").attr("id", "emblems").style("display", "none"); let labels = viewbox.append("g").attr("id", "labels"); let icons = viewbox.append("g").attr("id", "icons"); let burgIcons = icons.append("g").attr("id", "burgIcons"); @@ -557,7 +557,6 @@ function generate() { defineBiomes(); Resources.generate(); - Resources.draw(); rankCells(); Cultures.generate(); diff --git a/modules/resources-generator.js b/modules/resources-generator.js index 9a4d6535..89505fb6 100644 --- a/modules/resources-generator.js +++ b/modules/resources-generator.js @@ -6,8 +6,10 @@ // TO-DO // apply logic on heightmap edit - // apply logic on burgs regenearation + // apply logic on burgs regeneration // apply logic on population recalculation + // apply logic on save + // apply logic on load let cells; @@ -57,15 +59,6 @@ ] } - const chance = v => { - if (v < .01) return false; - if (v > 99.99) return true; - return v / 100 > Math.random(); - } - - const temp = i => grid.cells.temp[pack.cells.g[i]]; - const group = i => pack.features[cells.f[i]].group; - const models = { forest: i => [6, 7, 8].includes(cells.biome[i]), forestAndTaiga: i => [5, 6, 7, 8, 9].includes(cells.biome[i]), @@ -95,9 +88,14 @@ colderWaters: i => cells.t[i] < 0 && temp(i) < 8, } - // Biomes: 0: Marine, 1: Hot desert, 2: Cold desert, 3: Savanna, 4: Grassland, - // 5: Tropical seasonal forest, 6: Temperate deciduous forest, 7: Tropical rainforest, - // 8: Temperate rainforest, 9: Taiga, 10: Tundra, 11: Glacier, 12: Wetland + const chance = v => { + if (v < .01) return false; + if (v > 99.99) return true; + return v / 100 > Math.random(); + } + + const temp = i => grid.cells.temp[pack.cells.g[i]]; + const group = i => pack.features[cells.f[i]].group; const generate = function() { console.time("generateResources"); @@ -133,23 +131,6 @@ console.table(pack.resources); } - const draw = function() { - console.time("drawResources"); - let resourcesHTML = ""; - for (const i of cells.i) { - if (!cells.resource[i]) continue; - const resource = pack.resources.find(resource => resource.i === cells.resource[i]); - const [x, y] = cells.p[i]; - resourcesHTML += ` - - - `; - } - - goods.html(resourcesHTML); - console.timeEnd("drawResources"); - } - -return {generate, getDefault, draw}; +return {generate, getDefault}; }))); diff --git a/modules/save-and-load.js b/modules/save-and-load.js index f71fbc99..e82fa257 100644 --- a/modules/save-and-load.js +++ b/modules/save-and-load.js @@ -739,6 +739,7 @@ function parseLoadedData(data) { coastline = viewbox.select("#coastline"); prec = viewbox.select("#prec"); population = viewbox.select("#population"); + goods = viewbox.select("#goods"); emblems = viewbox.select("#emblems"); labels = viewbox.select("#labels"); icons = viewbox.select("#icons"); @@ -830,6 +831,7 @@ function parseLoadedData(data) { if (hasChild(population, "line")) turnOn("togglePopulation"); if (hasChildren(ice)) turnOn("toggleIce"); if (hasChild(prec, "circle")) turnOn("togglePrec"); + if (hasChildren(goods)) turnOn("toggleResources"); if (notHidden(emblems) && hasChild(emblems, "use")) turnOn("toggleEmblems"); if (notHidden(labels)) turnOn("toggleLabels"); if (notHidden(icons)) turnOn("toggleIcons"); @@ -1202,6 +1204,11 @@ function parseLoadedData(data) { gridOverlay.attr("size", null); } + if (version < 1.7) { + // v 1.7 added resources layer + goods = viewbox.append("g").attr("id", "goods"); + } + void function checkDataIntegrity() { const cells = pack.cells; diff --git a/modules/ui/general.js b/modules/ui/general.js index 9ebfce4a..a36f164a 100644 --- a/modules/ui/general.js +++ b/modules/ui/general.js @@ -531,6 +531,7 @@ document.addEventListener("keyup", event => { else if (key === 78) togglePopulation(); // "N" to toggle Population layer else if (key === 74) toggleIce(); // "J" to toggle Ice layer else if (key === 65) togglePrec(); // "A" to toggle Precipitation layer + else if (key === 81) toggleResources(); // "Q" to toggle Resources layer else if (key === 89) toggleEmblems(); // "Y" to toggle Emblems layer else if (key === 76) toggleLabels(); // "L" to toggle Labels layer else if (key === 73) toggleIcons(); // "I" to toggle Icons layer diff --git a/modules/ui/layers.js b/modules/ui/layers.js index 0b640309..a373c0fd 100644 --- a/modules/ui/layers.js +++ b/modules/ui/layers.js @@ -14,6 +14,7 @@ function getDefaultPresets() { "heightmap": ["toggleHeight", "toggleRivers"], "physical": ["toggleCoordinates", "toggleHeight", "toggleIce", "toggleRivers", "toggleScaleBar"], "poi": ["toggleBorders", "toggleHeight", "toggleIce", "toggleIcons", "toggleMarkers", "toggleRivers", "toggleRoutes", "toggleScaleBar"], + "economical": ["toggleResources", "toggleBiomes", "toggleBorders", "toggleIcons", "toggleIce", "toggleLabels", "toggleRivers", "toggleRoutes", "toggleScaleBar"], "military": ["toggleBorders", "toggleIcons", "toggleLabels", "toggleMilitary", "toggleRivers", "toggleRoutes", "toggleScaleBar", "toggleStates"], "emblems": ["toggleBorders", "toggleIcons", "toggleIce", "toggleEmblems", "toggleRivers", "toggleRoutes", "toggleScaleBar", "toggleStates"], "landmass": ["toggleScaleBar"] @@ -1311,6 +1312,35 @@ function drawEmblems() { TIME && console.timeEnd("drawEmblems"); } +function toggleResources(event) { + if (!layerIsOn("toggleResources")) { + turnButtonOn("toggleResources"); + $('#goods').fadeIn(); + if (!goods.selectAll("*").size()) drawResources(); + if (event && isCtrlClick(event)) editStyle("goods"); + } else { + if (event && isCtrlClick(event)) {editStyle("goods"); return;} + $('#goods').fadeOut(); + turnButtonOff("toggleResources"); + } +} + +function drawResources() { + console.time("drawResources"); + let resourcesHTML = ""; + for (const i of pack.cells.i) { + if (!pack.cells.resource[i]) continue; + const resource = pack.resources.find(resource => resource.i === pack.cells.resource[i]); + const [x, y] = pack.cells.p[i]; + resourcesHTML += ` + + + `; + } + goods.html(resourcesHTML); + console.timeEnd("drawResources"); +} + function layerIsOn(el) { const buttonoff = document.getElementById(el).classList.contains("buttonoff"); return !buttonoff; @@ -1356,6 +1386,7 @@ function getLayer(id) { if (id === "togglePopulation") return $("#population"); if (id === "toggleIce") return $("#ice"); if (id === "toggleTexture") return $("#texture"); + if (id === "toggleResources") return $("#goods"); if (id === "toggleEmblems") return $("#emblems"); if (id === "toggleLabels") return $("#labels"); if (id === "toggleIcons") return $("#icons");