This commit is contained in:
33333-33333 2026-06-26 12:46:32 +09:00
commit 86226ccc94
97 changed files with 5790 additions and 2307 deletions

View file

@ -174,14 +174,8 @@ function bindUI() {
const id = node.getAttribute("data-family-tarinai-id");
const t = world.tarinai.find(x => (x.id === id || x.familyKey === id) && !x.dead);
if (!t) { showToast("\u305d\u306e\u500b\u4f53\u306f\u3082\u3046\u9078\u629e\u3067\u304d\u307e\u305b\u3093\u3002"); return; }
world.selected = t;
t.focusPulseTimer = Math.max(t.focusPulseTimer || 0, 1.15);
window.TarinaiCommands?.dispatch?.(world, { type: "selection.focus", target: t, options: { pulse: 1.15 } });
selectTool("observe");
if (Number.isFinite(t.x) && Number.isFinite(t.y)) {
world.cameraX = t.x - (world.visibleWorldW ? world.visibleWorldW() : (world.viewportW || world.w)) / 2;
world.cameraY = t.y - (world.visibleWorldH ? world.visibleWorldH() : (world.viewportH || world.h)) / 2;
world.clampCamera?.();
}
renderStats();
showToast(`${t.name}\u3092\u9078\u629e\u3057\u307e\u3057\u305f\u3002`);
});
@ -216,11 +210,12 @@ function bindUI() {
}
const btn = e.target.closest("[data-selected-action=\"favorite\"]");
if (!btn || !world.selected || world.selected.dead) return;
world.selected.favorite = !world.selected.favorite;
const favResult = window.TarinaiCommands?.dispatch?.(world, { type: "selection.favorite.toggle" });
if (!favResult?.ok) return;
uiCache.selectedSnapshot = "";
renderSelected();
render();
showToast(world.selected.favorite ? "\u304a\u6c17\u306b\u5165\u308a\u306b\u3057\u307e\u3057\u305f\u3002" : "\u304a\u6c17\u306b\u5165\u308a\u3092\u89e3\u9664\u3057\u307e\u3057\u305f\u3002");
showToast(favResult.favorite ? "\u304a\u6c17\u306b\u5165\u308a\u306b\u3057\u307e\u3057\u305f\u3002" : "\u304a\u6c17\u306b\u5165\u308a\u3092\u89e3\u9664\u3057\u307e\u3057\u305f\u3002");
});
ui.selectedInfo?.addEventListener("change", (e) => {
const input = e.target.closest("[data-selected-name]");
@ -234,7 +229,7 @@ function bindUI() {
if (e.key === "Escape") { e.preventDefault(); input.value = world.selected?.name || ""; input.blur(); }
});
ui.selectedCloseBtn?.addEventListener("click", () => {
world.selected = null;
window.TarinaiCommands?.dispatch?.(world, { type: "selection.clear" });
uiCache.showSelectedEmpty = false;
uiCache.selectedSnapshot = "";
uiCache.selectedEmpty = false;
@ -244,9 +239,10 @@ function bindUI() {
ui.pauseBtn?.addEventListener("click", () => {
audio.uiClick?.();
world.paused = !world.paused;
const pauseResult = window.TarinaiCommands?.dispatch?.(world, { type: "simulation.paused.toggle" });
const paused = pauseResult?.ok ? pauseResult.paused : world.paused;
const archiveStale = uiCache.archiveFamilyVersion !== (world.familyVersion || 0);
if (archiveAutoUpdateEnabled() && world.paused && (uiCache.archivePendingWhileRunning || archiveStale)) {
if (archiveAutoUpdateEnabled() && paused && (uiCache.archivePendingWhileRunning || archiveStale)) {
uiCache.archivePendingWhileRunning = false;
scheduleArchiveWindowRender();
}
@ -254,9 +250,7 @@ function bindUI() {
});
ui.speedBtn?.addEventListener("click", () => {
audio.uiClick?.();
const speeds = [1, 2, 4];
const i = speeds.indexOf(world.speed);
world.speed = speeds[(i + 1) % speeds.length];
window.TarinaiCommands?.dispatch?.(world, { type: "simulation.speed.cycle", speeds: [1, 2, 4] });
syncTopButtons();
});
ui.ecologyBtn?.addEventListener("click", () => { audio.uiClick?.(); openEcologyDialog(); });