The camera always wears the turn-taker's eyes, and knows whose turn zero is
Eric's rule, applied everywhere: every reel — moment, catch-up, whole tale — follows the wizard whose turn it is, the pov switching at each handover as boundaries scroll past. And the J8LL mystery dies with it: turn zero's opening boundary lives in the DEAL, before any command, so scanning a moment's steps found the NEXT turn's start instead and put the camera in the wrong wizard's head. momentSteps now names the owner from the very boundary that opened the turn — counted through the deal — and carries it to the client and the share page, where it also fixes the same latent mis-titling. Also aboard: the cutaway shot. When the eyes aim at something they cannot see — a wraith summoned across the maze, a spell through walls — the camera cuts to the target's cell for that beat, standing back down its deepest corridor, and cuts home on the next step. The wraith no longer materializes off-screen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
6788de2f6e
commit
a28d27eedc
@@ -314,8 +314,9 @@ class Net {
|
||||
onFx: ((events: GameEvent[]) => void) | null = null;
|
||||
/** A catch-up reel delivered by the server. */
|
||||
catchUp = $state<{ seq: number; actor: string; events: GameEvent[]; view: GameView; chat?: { player: string; text: string }[] }[] | null>(null);
|
||||
/** One turn's reel, summoned from a chronicle line's instant-replay eye. */
|
||||
moment = $state<{ seq: number; actor: string; events: GameEvent[]; view: GameView; chat?: { player: string; text: string }[] }[] | null>(null);
|
||||
/** One turn's reel, summoned from a chronicle line's instant-replay
|
||||
* eye — steps plus the wizard whose eyes the camera wears. */
|
||||
moment = $state<{ steps: { seq: number; actor: string; events: GameEvent[]; view: GameView; chat?: { player: string; text: string }[] }[]; owner: string } | null>(null);
|
||||
/** Turns witnessed so far: counts the same boundary events the server
|
||||
* counts, so a chronicle line can name the turn it belongs to. */
|
||||
private turnCounter = -1;
|
||||
@@ -424,7 +425,7 @@ class Net {
|
||||
this.catchUp = msg.steps;
|
||||
break;
|
||||
case "moment":
|
||||
this.moment = msg.steps;
|
||||
this.moment = { steps: msg.steps, owner: msg.owner };
|
||||
break;
|
||||
case "share":
|
||||
this.shareResolve?.(`${location.origin}/watch/${msg.id}`);
|
||||
|
||||
Reference in New Issue
Block a user