This commit is contained in:
Azgaar 2019-10-03 23:17:17 +03:00
parent 8ff1fe46b8
commit 76a5ade3d0
12 changed files with 214 additions and 128 deletions

View file

@ -228,7 +228,7 @@ function editBurg(id) {
}
function generateNameRandom() {
const base = rand(nameBase.length-1);
const base = rand(nameBases.length-1);
burgName.value = Names.getBase(base);
changeName();
}
@ -305,10 +305,7 @@ function editBurg(id) {
const temple = +burg.temple;
const shanty = +burg.shanty;
const url = `http://fantasycities.watabou.ru/?
name=${name}&size=${size}&seed=${s}&hub=${hub}&random=0&continuous=0
&river=${river}&coast=${coast}
&citadel=${citadel}&plaza=${plaza}&temple=${temple}&walls=${walls}&shantytown=${shanty}`;
const url = `http://fantasycities.watabou.ru/?name=${name}&size=${size}&seed=${s}&hub=${hub}&random=0&continuous=0&river=${river}&coast=${coast}&citadel=${citadel}&plaza=${plaza}&temple=${temple}&walls=${walls}&shantytown=${shanty}`;
openURL(url);
}

View file

@ -947,7 +947,7 @@ function getHeight(h) {
void function createColorPallete() {
const container = d3.select("#colorScheme");
container.selectAll("div").data(d3.range(101)).enter().append("div").attr("data-color", i => i)
.style("background-color", i => color(1-i/100))
.style("background-color", i => color(1-(i < 20 ? i-5 : i) / 100))
.style("width", i => i < 20 || i > 70 ? ".2em" : ".1em")
.on("touchmove mousemove", showPalleteHeight).on("click", assignHeight);
}()
@ -1056,8 +1056,7 @@ function getHeight(h) {
function assignHeight() {
const height = +this.getAttribute("data-color");
const rgb = color(1 - height/100);
const rgb = color(1 - (height < 20 ? height-5 : height) / 100);
const selectedColor = imageConverter.querySelector("div.selectedColor");
selectedColor.style.backgroundColor = rgb;
selectedColor.setAttribute("data-color", rgb);
@ -1084,7 +1083,7 @@ function getHeight(h) {
const colorFrom = el.getAttribute("data-color");
const lab = d3.lab(colorFrom);
const normalized = type === "hue" ? rn(normalize(lab.b + lab.a / 2, -50, 200), 2) : rn(normalize(lab.l, -15, 100), 2);
const colorTo = color(1 - normalized);
const colorTo = color(1 - (normalized < .2 ? normalized-.05 : normalized));
const heightTo = normalized * 100;
terrs.selectAll("polygon[fill='" + colorFrom + "']").attr("fill", colorTo).attr("data-height", heightTo);

View file

@ -40,7 +40,7 @@ function editNamesbase() {
function updateInputs() {
const base = +document.getElementById("namesbaseSelect").value;
if (!nameBases[base]) {tip(`Namesbase ${base} is not defined`, false, "error"); return;}
document.getElementById("namesbaseTextarea").value = nameBase[base].join(", ");
document.getElementById("namesbaseTextarea").value = nameBases[base].b;
document.getElementById("namesbaseName").value = nameBases[base].name;
document.getElementById("namesbaseMin").value = nameBases[base].min;
document.getElementById("namesbaseMax").value = nameBases[base].max;
@ -66,13 +66,13 @@ function editNamesbase() {
function updateNamesData() {
const base = +document.getElementById("namesbaseSelect").value;
const data = document.getElementById("namesbaseTextarea").value.replace(/ /g, "").split(",");
if (data.length < 3) {
const b = document.getElementById("namesbaseTextarea").value.replace(/ /g, "");
if (b.split(",").length < 3) {
tip("The names data provided is not correct", false, "error");
document.getElementById("namesbaseTextarea").value = nameBase[base].join(", ");
document.getElementById("namesbaseTextarea").value = nameBases[base].b;
return;
}
nameBase[base] = data;
nameBases[base].b = b;
Names.updateChain(base);
}
@ -108,11 +108,11 @@ function editNamesbase() {
function namesbaseAdd() {
const base = nameBases.length;
nameBases.push({name: "Base" + base, min: 5, max: 12, d: "", m: 0});
nameBase[base] = ["This", "is", "an", "example", "data", "Please", "replace", "with", "an", "actual", "names", "data", "with", "at", "least", "100", "names"];
const b = "This,is,an,example,of,name,base,showing,correct,format,It,should,have,at,least,one,hundred,names,separated,with,comma";
nameBases.push({name: "Base" + base, min: 5, max: 12, d: "", m: 0, b});
document.getElementById("namesbaseSelect").add(new Option("Base" + base, base));
document.getElementById("namesbaseSelect").value = base;
document.getElementById("namesbaseTextarea").value = nameBase[base].join(", ");
document.getElementById("namesbaseTextarea").value = b;
document.getElementById("namesbaseName").value = "Base" + base;
document.getElementById("namesbaseMin").value = 5;
document.getElementById("namesbaseMax").value = 12;
@ -127,19 +127,18 @@ function editNamesbase() {
buttons: {
Restore: function() {
$(this).dialog("close");
Names.clearChains();
nameBases = Names.getNameBases();
nameBase = Names.getNameBase();
createBasesList();
updateInputs();
Names.updateChains();
},
Cancel: function() {$(this).dialog("close");}
}
});
});
}
function namesbaseDownload() {
const data = nameBases.map((b,i) => `${b.name}|${b.min}|${b.max}|${b.d}|${b.m}|${nameBase[i]}`);
const data = nameBases.map((b,i) => `${b.name}|${b.min}|${b.max}|${b.d}|${b.m}|${b.b}`);
const dataBlob = new Blob([data.join("\r\n")], {type:"text/plain"});
const url = window.URL.createObjectURL(dataBlob);
const link = document.createElement("a");
@ -158,18 +157,17 @@ function editNamesbase() {
const data = dataLoaded.split("\r\n");
if (!data || !data[0]) {tip("Cannot load a namesbase. Please check the data format", false, "error"); return;}
nameBases = [], nameBase = [];
Names.clearChains();
nameBases = [];
data.forEach(d => {
const e = d.split("|");
nameBases.push({name:e[0], min:e[1], max:e[2], d:e[3], m:e[4]});
nameBase.push(e[5].split(","));
nameBases.push({name:e[0], min:e[1], max:e[2], d:e[3], m:e[4], b:e[5]});
});
createBasesList();
updateInputs();
Names.updateChains();
};
fileReader.readAsText(fileToLoad, "UTF-8");
fileReader.readAsText(fileToLoad, "UTF-8");
}
}

View file

@ -45,7 +45,7 @@ function editProvinces() {
if (cl.contains("icon-trash-empty")) removeProvince(p);
});
body.addEventListener("input", function(ev) {
body.addEventListener("change", function(ev) {
const el = ev.target, cl = el.classList, line = el.parentNode, p = +line.dataset.id;
if (cl.contains("cultureBase")) changeCapital(p, line, el.value);
});
@ -395,7 +395,7 @@ function editProvinces() {
}
function regenerateShortNameRandom() {
const base = rand(nameBase.length-1);
const base = rand(nameBases.length-1);
const name = Names.getState(Names.getBase(base), undefined, base);
document.getElementById("provinceNameEditorShort").value = name;
}

View file

@ -120,7 +120,7 @@ function editReligions() {
body.querySelectorAll("div.states").forEach(el => el.addEventListener("click", selectReligionOnLineClick));
body.querySelectorAll("rect.zoneFill").forEach(el => el.addEventListener("click", religionChangeColor));
body.querySelectorAll("div > input.religionName").forEach(el => el.addEventListener("input", religionChangeName));
body.querySelectorAll("div > select.religionType").forEach(el => el.addEventListener("input", religionChangeType));
body.querySelectorAll("div > select.religionType").forEach(el => el.addEventListener("change", religionChangeType));
body.querySelectorAll("div > input.religionForm").forEach(el => el.addEventListener("input", religionChangeForm));
body.querySelectorAll("div > input.religionDeity").forEach(el => el.addEventListener("input", religionChangeDeity));
body.querySelectorAll("div > span.icon-arrows-cw").forEach(el => el.addEventListener("click", regenerateDeity));

View file

@ -53,10 +53,14 @@ function editStates() {
const el = ev.target, cl = el.classList, line = el.parentNode, state = +line.dataset.id;
if (cl.contains("stateCapital")) stateChangeCapitalName(state, line, el.value); else
if (cl.contains("cultureType")) stateChangeType(state, line, el.value); else
if (cl.contains("stateCulture")) stateChangeCulture(state, line, el.value); else
if (cl.contains("statePower")) stateChangeExpansionism(state, line, el.value);
});
body.addEventListener("change", function(ev) {
const el = ev.target, cl = el.classList, line = el.parentNode, state = +line.dataset.id;
if (cl.contains("stateCulture")) stateChangeCulture(state, line, el.value);
});
function refreshStatesEditor() {
BurgsAndStates.collectStatistics();
statesEditorAddLines();
@ -243,7 +247,7 @@ function editStates() {
}
function regenerateShortNameRandom() {
const base = rand(nameBase.length-1);
const base = rand(nameBases.length-1);
const name = Names.getState(Names.getBase(base), undefined, base);
document.getElementById("stateNameEditorShort").value = name;
}