PR pixi-reels
Building blocks

Win animations

When the reels land, you want the win to feel earned. pixi-reels ships a SymbolSpotlight that dims non-winners, promotes winners, and cycles through multiple lines automatically.

One win, one line

reelSet.events.on('spin:complete', async (result) => {
  const wins = detectWins(result.symbols);      // your logic
  if (wins.length === 0) return;

  await reelSet.spotlight.showLine({
    positions: wins[0].positions,                // [{reelIndex, rowIndex}, ...]
    duration: 1200,
  });
});

Multiple lines, cycled

await reelSet.spotlight.cycle({
  lines: wins.map((w) => ({ positions: w.positions })),
  perLine: 1000,
  dim: 0.3,        // non-winners fade to 30% alpha
  repeat: 1,
});

Play per-symbol animations

If your symbol class implements playWin() (Spine and AnimatedSprite do by default), pixi-reels calls it on each highlighted cell.

await reelSet.spotlight.showLine({
  positions: wins[0].positions,
  playWin: true,   // invoke symbol.playWin() on each
});

Events

Listen to spotlight:start and spotlight:end to gate the UI (disable the spin button while a win is being celebrated).