This commit is contained in:
Azgaar 2019-09-12 23:24:32 +03:00
parent cbc702bfde
commit a3256e6726
17 changed files with 187 additions and 116 deletions

View file

@ -253,7 +253,7 @@ function editBiomes() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "biomes_data" + Date.now() + ".csv";
link.download = getFileName("Biomes") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -252,7 +252,7 @@ function editBurgs() {
}
function downloadBurgsData() {
let data = "Id,Burg,State,Culture,Population,Capital,Port,Longitude,Latitude,Elevation\n"; // headers
let data = "Id,Burg,State,Culture,Population,Longitude,Latitude,Elevation ("+heightUnit.value+"),Capital,Port\n"; // headers
const valid = pack.burgs.filter(b => b.i && !b.removed); // all valid burgs
valid.forEach(b => {
@ -261,20 +261,22 @@ function editBurgs() {
data += pack.states[b.state].name + ",";
data += pack.cultures[b.culture].name + ",";
data += rn(b.population * populationRate.value * urbanization.value) + ",";
data += b.capital ? "capital," : ",";
data += b.port ? "port," : ",";
// add geography data
data += mapCoordinates.lonW + (b.x / graphWidth) * mapCoordinates.lonT + ",";
data += mapCoordinates.latN - (b.y / graphHeight) * mapCoordinates.latT + ","; // this is inverted in QGIS otherwise
data += parseInt(getFriendlyHeight(pack.cells.h[b.cell])) + "\n";
data += parseInt(getHeight(pack.cells.h[b.cell])) + ",";
// add status data
data += b.capital ? "capital," : ",";
data += b.port ? "port\n" : "\n";
});
const dataBlob = new Blob([data], {type: "text/plain"});
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "burgs_data" + Date.now() + ".csv";
link.download = getFileName("Burgs") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -477,7 +477,7 @@ function editCultures() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "cultures_data" + Date.now() + ".csv";
link.download = getFileName("Cultures") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -204,7 +204,7 @@ function editDiplomacy() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "state_relations_history" + Date.now() + ".txt";
link.download = getFileName("Relations history") + ".txt";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);
@ -252,7 +252,7 @@ function editDiplomacy() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "state_relations_data" + Date.now() + ".csv";
link.download = getFileName("Relations") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -145,15 +145,18 @@ function updateCellInfo(point, i, g) {
// get user-friendly (real-world) height value from map data
function getFriendlyHeight(p) {
const packH = pack.cells.h[findCell(p[0], p[1])];
const gridH = grid.cells.h[findGridCell(p[0], p[1])];
const h = packH < 20 ? gridH : packH;
return getHeight(h);
}
function getHeight(h) {
const unit = heightUnit.value;
let unitRatio = 3.281; // default calculations are in feet
if (unit === "m") unitRatio = 1; // if meter
else if (unit === "f") unitRatio = 0.5468; // if fathom
const packH = pack.cells.h[findCell(p[0], p[1])];
const gridH = grid.cells.h[findGridCell(p[0], p[1])];
const h = packH < 20 ? gridH : packH;
let height = -990;
if (h >= 20) height = Math.pow(h - 18, +heightExponentInput.value);
else if (h < 20 && h > 0) height = (h - 20) / h * 50;

View file

@ -1150,19 +1150,30 @@ function getHeight(h) {
document.body.insertBefore(canvas, optionsContainer);
ctx.drawImage(img, 0, 0, svgWidth, svgHeight);
// const imageData = ctx.getImageData(0, 0, svgWidth, svgHeight);
// for (let i=0; i < imageData.data.length; i+=4) {
// const v = Math.min(rn(imageData.data[i] * gauss(1, .05, .9, 1.1, 3)), 255);
// imageData.data[i] = v;
// imageData.data[i+1] = v;
// imageData.data[i+2] = v;
// }
// ctx.putImageData(imageData, 0, 0);
const simplex = new SimplexNoise(); // SimplexNoise by Jonas Wagner
const noise = (nx, ny) => simplex.noise2D(nx, ny) / 2 + .5;
const imageData = ctx.getImageData(0, 0, svgWidth, svgHeight);
for (let i=0; i < imageData.data.length; i+=4) {
const v = imageData.data[i];
if (v < 51) {
// water
imageData.data[i] = imageData.data[i+1] = imageData.data[i+2] = 46;
continue;
}
const x = i / 4 % svgWidth, y = Math.floor(i / 4 / svgWidth);
const nx = x / svgWidth - .5, ny = y / svgHeight - .5;
const n = noise(4 * nx, 4 * ny) / 4 + noise(16 * nx, 16 * ny) / 16;
const nv = Math.max(Math.min((v + 255 * n) / 2, 255), 51);
imageData.data[i] = imageData.data[i+1] = imageData.data[i+2] = nv;
}
ctx.putImageData(imageData, 0, 0);
const imgBig = canvas.toDataURL("image/png");
const link = document.createElement("a");
link.target = "_blank";
link.download = "heightmap_" + Date.now() + ".png";
link.download = getFileName("Heightmap") + ".png";
link.href = imgBig;
document.body.appendChild(link);
link.click();

View file

@ -143,7 +143,7 @@ function editNamesbase() {
const dataBlob = new Blob([data.join("\r\n")], {type:"text/plain"});
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
link.download = "namesbase" + Date.now() + ".txt";
link.download = getFileName("Namesbase") + ".txt";
link.href = url;
link.click();
}

View file

@ -108,7 +108,7 @@ function editNotes(id, name) {
const dataBlob = new Blob([legendString],{type:"text/plain"});
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
link.download = "notes" + Date.now() + ".txt";
link.download = getFileName("Notes") + ".txt";
link.href = url;
link.click();
}

View file

@ -482,7 +482,7 @@ function editProvinces() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "provinces_data" + Date.now() + ".csv";
link.download = getFileName("Provinces") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -540,7 +540,7 @@ function editReligions() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "religions_data" + Date.now() + ".csv";
link.download = getFileName("Religions") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -692,7 +692,7 @@ function editStates() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "states_data" + Date.now() + ".csv";
link.download = getFileName("States") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);

View file

@ -345,10 +345,10 @@ function editZones() {
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
document.body.appendChild(link);
link.download = "zones_data" + Date.now() + ".csv";
link.download = getFileName("Zones") + ".csv";
link.href = url;
link.click();
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);
window.setTimeout(function() {window.URL.revokeObjectURL(url);}, 2000);
}
function toggleEraseMode() {