{#each artwork.centers as _, n}{@const rect = tile(n)}
{/each}
{#each artwork.centers as _, n}{@const rect = tile(n)}{@const info = ocaCell(n)} {#if info.kind !== 'normal'}
{ if (e.pointerType === 'mouse') hovered = n; }} onpointerleave={() => (hovered = null)} onfocus={() => (hovered = n)} onblur={() => (hovered = null)} onclick={() => (selected = selected === n ? null : n)} onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); selected = selected === n ? null : n; } else if (e.key === 'Escape') dismiss(); }} >
{/if} {/each} {#if inspected !== null}{@const rect = tile(inspected)}
{/if} {#each displayed as cell, seat (seat)}{@const point = position(cell)}
t }} data-player={seat} data-cell={cell} style:display={room.players[seat]?.withdrawnAt ? 'none' : undefined} > {#key seat === hopPlayer ? hop : 0}
0} class:bonus={seat === arrivalPlayer && arrival === 'bonus'} class:penalty={seat === arrivalPlayer && arrival === 'penalty'} class:goal={seat === arrivalPlayer && arrival === 'goal'} style={`--hop-duration:${stepDuration}ms;--arrival-duration:${room.definition?.animations?.[arrival ?? 'move']?.duration ?? 450}ms`} >
{seat + 1}
{/key}
{/each}
{#if inspected !== null}
{/if}
a.type === 'roll')} onroll={() => onaction({ type: 'roll' })} onresultclose={(id) => playback.release(Number(id))} />
{#if room.state?.rolled}
{feedback.title}
{/if}{feedback.next}
{room.state?.note}
{#each room.players as player}
{player.nick}{player.seat === room.seat ? ' · tú' : ''}
{#if player.withdrawnAt}Se ha retirado{:else}Casilla {room.state ?.positions?.[player.seat] ?? 0}{room.state?.skips?.[ player.seat ] ? ` · ${room.state.skips[player.seat]} descansos` : ''}{/if}
{/each}