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:
co-authored by
Claude Fable 5
parent
b8bb60cf6d
commit
ffd2cc7a82
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user