mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-16 17:31:24 +01:00
feat: Update main.js and modules/io/load.js versions to 1.99.00
This commit is contained in:
parent
06c4f78c35
commit
66004de6f4
5 changed files with 98 additions and 28 deletions
|
|
@ -8134,7 +8134,7 @@
|
|||
|
||||
<script src="modules/ui/general.js?v=1.98.01"></script>
|
||||
<script src="modules/ui/options.js?v=1.98.04"></script>
|
||||
<script src="main.js?v=1.98.05"></script>
|
||||
<script src="main.js?v=1.99.00"></script>
|
||||
|
||||
<script defer src="modules/relief-icons.js"></script>
|
||||
<script defer src="modules/ui/style.js?v=1.96.00"></script>
|
||||
|
|
@ -8176,7 +8176,7 @@
|
|||
<script defer src="libs/rgbquant.min.js"></script>
|
||||
<script defer src="libs/jquery.ui.touch-punch.min.js"></script>
|
||||
<script defer src="modules/io/save.js?v=1.99.00"></script>
|
||||
<script defer src="modules/io/load.js?v=1.98.01"></script>
|
||||
<script defer src="modules/io/load.js?v=1.99.00"></script>
|
||||
<script defer src="modules/io/cloud.js?v=1.96.00"></script>
|
||||
<script defer src="modules/io/export.js?v=1.98.05"></script>
|
||||
|
||||
|
|
|
|||
63
main.js
63
main.js
|
|
@ -311,35 +311,48 @@ async function checkLoadParameters() {
|
|||
}
|
||||
|
||||
function debugGrids() {
|
||||
debug
|
||||
.selectAll("circle.grid")
|
||||
.data(grid.points)
|
||||
.enter()
|
||||
.append("circle")
|
||||
.attr("data-id", (d, i) => "point-" + i)
|
||||
.attr("cx", d => d[0])
|
||||
.attr("cy", d => d[1])
|
||||
.attr("r", 0.5)
|
||||
.attr("fill", "blue");
|
||||
// debug
|
||||
// .selectAll("circle.grid")
|
||||
// .data(grid.points)
|
||||
// .enter()
|
||||
// .append("circle")
|
||||
// .attr("data-id", (d, i) => "point-" + i)
|
||||
// .attr("cx", d => d[0])
|
||||
// .attr("cy", d => d[1])
|
||||
// .attr("r", 0.5)
|
||||
// .attr("fill", "blue");
|
||||
|
||||
let path = "";
|
||||
grid.cells.i.forEach(i => (path += "M" + getGridPolygon(i)));
|
||||
debug.append("path").attr("fill", "none").attr("stroke", "blue").attr("stroke-width", 0.3).attr("d", path);
|
||||
|
||||
debug
|
||||
.selectAll("circle.boundary")
|
||||
.data(grid.boundary)
|
||||
.enter()
|
||||
.append("circle")
|
||||
.attr("cx", d => d[0])
|
||||
.attr("cy", d => d[1])
|
||||
.attr("r", 0.3)
|
||||
.attr("fill", "white");
|
||||
// debug
|
||||
// .selectAll("circle.boundary")
|
||||
// .data(grid.boundary)
|
||||
// .enter()
|
||||
// .append("circle")
|
||||
// .attr("cx", d => d[0])
|
||||
// .attr("cy", d => d[1])
|
||||
// .attr("r", 0.3)
|
||||
// .attr("fill", "white");
|
||||
|
||||
zoom.translateExtent([
|
||||
[-graphWidth / 2, -graphHeight / 2],
|
||||
[graphWidth * 1.5, graphHeight * 1.5]
|
||||
]);
|
||||
|
||||
const text = debug
|
||||
.append("g")
|
||||
.style("font-size", "0.5px")
|
||||
.attr("text-anchor", "middle")
|
||||
.attr("dominant-baseline", "central");
|
||||
|
||||
for (let x = 0; x < 100; x++) {
|
||||
for (let y = 0; y < 100; y++) {
|
||||
const cellId = findGridCell(x, y, grid);
|
||||
text.append("text").attr("x", x).attr("y", y).text(cellId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function generateMapOnLoad() {
|
||||
|
|
@ -1068,12 +1081,12 @@ function generatePrecipitation() {
|
|||
|
||||
// define wind directions based on cells latitude and prevailing winds there
|
||||
d3.range(0, cells.i.length, cellsX).forEach(function (cellId, i) {
|
||||
debug
|
||||
.append("circle")
|
||||
.attr("cx", grid.points[cellId][0])
|
||||
.attr("cy", grid.points[cellId][1])
|
||||
.attr("r", 2)
|
||||
.attr("fill", "blue");
|
||||
// debug
|
||||
// .append("circle")
|
||||
// .attr("cx", grid.points[cellId][0])
|
||||
// .attr("cy", grid.points[cellId][1])
|
||||
// .attr("r", 2)
|
||||
// .attr("fill", "blue");
|
||||
|
||||
const lat = mapCoordinates.latN - (i / cellsY) * mapCoordinates.latT;
|
||||
const latBand = ((Math.abs(lat) - 1) / 5) | 0;
|
||||
|
|
|
|||
|
|
@ -120,6 +120,8 @@ function showMapTooltip(point, e, i, g) {
|
|||
const subgroup = path[path.length - 8].id;
|
||||
const land = pack.cells.h[i] >= 20;
|
||||
|
||||
// console.log(findGridCell(point[0], point[1], grid));
|
||||
|
||||
// specific elements
|
||||
if (group === "armies") return tip(e.target.parentNode.dataset.name + ". Click to edit");
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,61 @@ function calculateVoronoi(points, boundary) {
|
|||
|
||||
// return cell index on a regular square grid
|
||||
function findGridCell(x, y, grid) {
|
||||
if (grid.type === "hexFlat") return findHexCellIndex(x, y, false, grid.spacing, grid.cellsX);
|
||||
if (grid.type === "hexPointy") return findHexCellIndex(x, y, true, grid.spacing, grid.cellsX);
|
||||
return findSquareGridCell(x, y, grid);
|
||||
}
|
||||
|
||||
const hexRatio = Math.sqrt(3) / 2;
|
||||
function findHexCellIndex(x, y, isPointy, spacing, cellsX) {
|
||||
const spacingX = isPointy ? spacing / hexRatio : spacing * 2;
|
||||
const spacingY = isPointy ? spacing : spacing / hexRatio / 2;
|
||||
|
||||
let col = Math.floor(x / spacingX);
|
||||
let row = Math.floor((y + spacingY * 1.5) / spacingY);
|
||||
|
||||
if (isPointy) {
|
||||
if (row % 2 === 1 && x < col * spacingX + spacingX / 2) col -= 1;
|
||||
} else {
|
||||
if (col % 2 === 1 && y < row * spacingY + spacingY / 2) row -= 1;
|
||||
}
|
||||
|
||||
const suspect = row * cellsX + col;
|
||||
const candidates = isPointy
|
||||
? [
|
||||
suspect,
|
||||
suspect - cellsX - 1,
|
||||
suspect - cellsX,
|
||||
suspect - 1,
|
||||
suspect + 1,
|
||||
suspect + cellsX - 1,
|
||||
suspect + cellsX
|
||||
]
|
||||
: [
|
||||
suspect,
|
||||
suspect - cellsX,
|
||||
suspect - cellsX * 2,
|
||||
suspect - cellsX + 1,
|
||||
suspect + cellsX,
|
||||
suspect + cellsX + 1,
|
||||
suspect + cellsX * 2
|
||||
];
|
||||
|
||||
const closest = candidates.reduce(
|
||||
(acc, candidate) => {
|
||||
const point = grid.points[candidate];
|
||||
if (!point) return acc;
|
||||
const dist2 = Math.abs(x - point[0]) + Math.abs(y - point[1]);
|
||||
if (dist2 < acc.dist2) return {dist2, cell: candidate};
|
||||
return acc;
|
||||
},
|
||||
{dist2: Infinity, cell: suspect}
|
||||
);
|
||||
|
||||
return closest.cell;
|
||||
}
|
||||
|
||||
function findSquareGridCell(x, y, grid) {
|
||||
return (
|
||||
Math.floor(Math.min(y / grid.spacing, grid.cellsY - 1)) * grid.cellsX +
|
||||
Math.floor(Math.min(x / grid.spacing, grid.cellsX - 1))
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
// version and caching control
|
||||
const version = "1.98.05"; // generator version, update each time
|
||||
const version = "1.99.00"; // generator version, update each time
|
||||
|
||||
{
|
||||
document.title += " v" + version;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue