feat: add optional AI-based name generation for map entities

This commit is contained in:
Lupus 2026-03-15 02:22:15 +01:00
parent 3f9a7702d4
commit 5b98f55bc7
20 changed files with 1393 additions and 7 deletions

View file

@ -542,6 +542,8 @@ function editProvinces() {
byId("provinceNameEditorShortRandom").on("click", regenerateShortNameRandom);
byId("provinceNameEditorAddForm").on("click", addCustomForm);
byId("provinceNameEditorFullRegenerate").on("click", regenerateFullName);
byId("provinceNameEditorShortAi").on("click", regenerateShortNameAi);
byId("provinceNameEditorFullAi").on("click", regenerateFullNameAi);
function regenerateShortNameCulture() {
const province = +provinceNameEditor.dataset.province;
@ -576,6 +578,31 @@ function editProvinces() {
}
}
async function regenerateShortNameAi() {
const province = +provinceNameEditor.dataset.province;
const culture = pack.cells.culture[pack.provinces[province].center];
try {
const name = await AiNames.generateName("province", culture, {form: pack.provinces[province].formName});
byId("provinceNameEditorShort").value = name;
} catch (err) {
tip("AI generation failed: " + err.message, true, "error", 4000);
}
}
async function regenerateFullNameAi() {
const short = byId("provinceNameEditorShort").value;
const form = byId("provinceNameEditorSelectForm").value;
if (!form || !short) { regenerateFullName(); return; }
try {
const province = +provinceNameEditor.dataset.province;
const culture = pack.cells.culture[pack.provinces[province].center];
const fullName = await AiNames.generateName("provinceFullName", culture, {form, stateName: short});
byId("provinceNameEditorFull").value = fullName;
} catch (err) {
tip("AI generation failed: " + err.message, true, "error", 4000);
}
}
function applyNameChange(p) {
p.name = byId("provinceNameEditorShort").value;
p.formName = byId("provinceNameEditorSelectForm").value;