import type { Game } from '../core/Game';

/**
 * Контракт любого рендера. Игровая логика про него ничего не знает —
 * рендер только ЧИТАЕТ состояние Game и рисует его.
 *
 * Хочешь другой рендер (чистый Canvas2D, пиксель-арт, настоящий 3D) —
 * реализуй этот интерфейс и подмени в main.ts. Ядро менять не нужно.
 */
export interface Renderer {
  /**
   * Нарисовать кадр.
   * @param game  текущее состояние игры (только чтение).
   * @param alpha доля времени до следующего шага [0..1) для интерполяции
   *              позиций между prevX/prevY и x/y (плавность на >60 Гц).
   */
  render(game: Game, alpha: number): void;

  /** Освободить ресурсы GPU/DOM. */
  dispose(): void;
}
