import type { ChatMessage, EngineEvent } from "../types.ts";

export type ActiveGame = {
  game_session_id: number;
  game: "quiz" | "motus" | "whoami" | "petitbac";
  state: "starting" | "playing" | "round";
};

export class GameRouter {
  private readonly active = new Map<number, ActiveGame>();

  sync(channelId: number, game: ActiveGame | null): void {
    if (game) this.active.set(channelId, game);
    else this.active.delete(channelId);
  }

  route(message: ChatMessage): EngineEvent | null {
    const game = this.active.get(message.channel_id);
    if (!game || !message.content.trim()) return null;
    return {
      id: `game:${game.game_session_id}:${message.event_id}`,
      channel_id: message.channel_id,
      type: "game.answer",
      payload: {
        game_session_id: game.game_session_id,
        game: game.game,
        answer: message.content.trim(),
        viewer: message.sender
      }
    };
  }
}

