The helm grows tappable: chevron strips ride the pane's edges

Milestone two opens with touch. Faint chevrons live along the pane's
four edges — left and right strips quarter-turn the camera (always),
top and bottom stride forward and back (your turn only, through the
same commands, cautions, and wall-bounces as the keys). Quiet under a
resting eye, brighter under a pointer, generous under a thumb.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-24 00:14:16 -04:00
co-authored by Claude Fable 5
parent b8bb60cf6d
commit ffd2cc7a82
+32
View File
@@ -235,7 +235,12 @@
x={cam.x} y={cam.y} facing={cam.facing} width={960} height={400} x={cam.x} y={cam.y} facing={cam.facing} width={960} height={400}
fx={fpFx} posOverride={actorPos} /> fx={fpFx} posOverride={actorPos} />
<button class="live-fp-hide" onclick={onhide} title="hide (re-enable in preferences)"></button> <button class="live-fp-hide" onclick={onhide} title="hide (re-enable in preferences)"></button>
<!-- The helm, tappable: edge strips turn and stride. -->
<button class="drive drive-left" onclick={() => manualTurn(-1)} aria-label="turn left"></button>
<button class="drive drive-right" onclick={() => manualTurn(1)} aria-label="turn right"></button>
{#if canStride} {#if canStride}
<button class="drive drive-fwd" onclick={() => manualStride(false)} aria-label="step forward">︿</button>
<button class="drive drive-back" onclick={() => manualStride(true)} aria-label="step back"></button>
<div class="live-fp-hint">← → turn · ↑ ↓ walk</div> <div class="live-fp-hint">← → turn · ↑ ↓ walk</div>
{/if} {/if}
</div> </div>
@@ -268,4 +273,31 @@
font-size: 0.7rem; font-size: 0.7rem;
pointer-events: none; pointer-events: none;
} }
/* The helm: faint chevron strips along the pane's edges — always
* there for a thumb, louder under a pointer. */
.drive {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
background: none;
border: none;
cursor: pointer;
color: rgba(233, 225, 203, 0.35);
font-size: 2.2rem;
line-height: 1;
padding: 0;
text-shadow: 0 1px 4px rgba(0, 0, 0, 0.8);
}
.drive:hover {
color: rgba(233, 225, 203, 0.95);
background: linear-gradient(to right, rgba(0, 0, 0, 0.22), transparent);
}
.drive-left { left: 0; top: 15%; bottom: 15%; width: 13%; }
.drive-right { right: 0; top: 15%; bottom: 15%; width: 13%; }
.drive-right:hover { background: linear-gradient(to left, rgba(0, 0, 0, 0.22), transparent); }
.drive-fwd { top: 0; left: 20%; right: 20%; height: 16%; }
.drive-fwd:hover { background: linear-gradient(to bottom, rgba(0, 0, 0, 0.22), transparent); }
.drive-back { bottom: 0; left: 20%; right: 20%; height: 15%; }
.drive-back:hover { background: linear-gradient(to top, rgba(0, 0, 0, 0.22), transparent); }
</style> </style>