Improve summit terrain, mobile HUD and multiplayer night equipment

Add the Blender flashlight asset with a 600 lm beam and reduced bloom, shared-mode self badge, and compact phone controls. Relocate the summit marker, blend terrain seams, widen walking routes, and align local server configuration on port 2027.
This commit is contained in:
2026-10-31 23:14:44 +09:00
parent 18dfb63350
commit eb49ea4b84
40 changed files with 402 additions and 64 deletions
+7 -1
View File
@@ -11,12 +11,13 @@ class Field extends EventTarget {
attributes = new Map<string, string>();
textContent = '';
setAttribute(name: string, value: string) { this.attributes.set(name, value); }
getAttribute(name: string) { return this.attributes.get(name) ?? null; }
matches() { return this.disabled; }
closest() { return this; }
}
test('live ticks preserve date edits; custom freezes; live and visibility resync wall clock', (t) => {
const fields = new Map(['#date', '#date-display', '#time-slider', '#time-output', '#live-button'].map(id => [id, new Field()]));
const fields = new Map(['#date', '#date-display', '#time-slider', '#time-output', '#live-button', '#time-toggle', '#compact-time'].map(id => [id, new Field()]));
let dialogOpen = false;
const doc = Object.assign(new EventTarget(), {
activeElement: null as Field | null,
@@ -31,6 +32,11 @@ test('live ticks preserve date edits; custom freezes; live and visibility resync
const controller = new TimeController((date, mode) => calls.push({ date, mode }));
assert.equal(fields.get('#live-button')!.attributes.get('aria-pressed'), 'true');
assert.equal(fields.get('#date-display')!.textContent, '2026년 10월 29일');
assert.equal(fields.get('#compact-time')!.textContent, '09:00');
fields.get('#time-toggle')!.dispatchEvent(new Event('click'));
assert.equal(fields.get('#time-toggle')!.getAttribute('aria-expanded'), 'true');
fields.get('#time-toggle')!.dispatchEvent(new Event('click'));
assert.equal(fields.get('#time-toggle')!.getAttribute('aria-expanded'), 'false');
const arrow = (key: string) => {
const event = Object.assign(new Event('keydown', { cancelable: true }), { key });
window.dispatchEvent(event);