/**
 * @fileoverview Utility module for config.js
 * 
 * @module games.semaforo.config.config
 */

export const gameConfig = {
  gameId: "semaforo",
  gameName: "Semáforo",
  type: "blocks",
  icon: "🚦",
  thumbnail: "/images/atividades/programacao/semaforo-thumbnail.png",
  descricao: "Controle o semáforo de carros e pedestres programando os blocos.",
  dificuldade: "Iniciante",
  categoria: "Lógica",
  tempoEstimado: "30-45 min",
  conceitos: ["Sequência", "Eventos", "Condicionais"],
  route: "/atividades/programacao/semaforo",
  component: "SemaforoGame",
  allowMultipleTopBlocks: true,
  objectives: [
    "Controlar o semáforo de carros",
    "Usar eventos para interação",
    "Aplicar lógica condicional para segurança",
  ],
  metadata: {
    lastUpdated: "2025-08-17",
    version: "1.0.0",
  },

  fases: [
    {
      id: 1,
      nome: "Controle básico do semáforo de carros",
      descricao:
        "Mude o semáforo dos carros na ordem correta: verde, depois amarelo e por fim vermelho.",
      allowedBlocks: ["mudar_semaforo"],
      temPedestre: false,
      timeout: 15,
      expectedSequence: ["verde", "amarelo", "vermelho"],
    },
    {
      id: 2,
      nome: "Controle básico do semáforo de carros",
      descricao:
        "Mude o semáforo na ordem verde, amarelo e vermelho, aguardando 5 segundos após cada mudança de cor.",
      allowedBlocks: ["mudar_semaforo", "aguardar_segundos"],
      temPedestre: false,
      timeout: 30,
      expectedCommands: [
        { tipo: "semaforo", cor: "verde" },
        { tipo: "aguardar", seg: 5 },
        { tipo: "semaforo", cor: "amarelo" },
        { tipo: "aguardar", seg: 5 },
        { tipo: "semaforo", cor: "vermelho" },
        { tipo: "aguardar", seg: 5 },
      ],
    },
    {
      id: 3,
      nome: "Controle do semáforo de pedestres",
      descricao:
        "Sincronize os dois semáforos: quando o de carros estiver verde, o de pedestres deve estar vermelho, e quando o de carros ficar vermelho, libere o pedestre (verde). O intervalo mantém-se o mesmo: 5 segundos para cada mudança.",
      allowedBlocks: [
        "mudar_semaforo",
        "aguardar_segundos",
        "mudar_semaforo_pedestre",
      ],
      temPedestre: true,
      timeout: 25,
      expectedCommandGroups: [
        [{ tipo: "semaforo", cor: "verde" }, { tipo: "pedestre", cor: "vermelho" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "semaforo", cor: "amarelo" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "pedestre", cor: "verde" }, { tipo: "semaforo", cor: "vermelho" }],
        [{ tipo: "aguardar", seg: 5 }],
      ],
    },
    {
      id: 4,
      nome: "Semáforo de pedestres com luz piscante",
      descricao:
        "Repita a fase anterior, mas após aguardar 5 segundos com o pedestre verde, faça a luz piscar em vermelho por 5 segundos para avisar que vai fechar.",
      allowedBlocks: [
        "mudar_semaforo",
        "aguardar_segundos",
        "mudar_semaforo_pedestre",
        "piscar_luz_pedestre",
      ],
      temPedestre: true,
      timeout: 35,
      expectedCommandGroups: [
        [{ tipo: "semaforo", cor: "verde" }, { tipo: "pedestre", cor: "vermelho" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "semaforo", cor: "amarelo" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "semaforo", cor: "vermelho" }, { tipo: "pedestre", cor: "verde" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "piscar", cor: "vermelho", seg: 5 }],
      ],
    },
    {
      id: 5,
      nome: "Semáforo com sons",
      descricao:
        "Complete a fase anterior adicionando o beep do semáforo quando o pedestre ficar verde e parando o beep após o piscar.",
      allowedBlocks: [
        "mudar_semaforo",
        "aguardar_segundos",
        "mudar_semaforo_pedestre",
        "piscar_luz_pedestre",
        "tocar_som",
        "parar_som",
      ],
      temPedestre: true,
      timeout: 35,
      expectedCommandGroups: [
        [{ tipo: "semaforo", cor: "verde" }, { tipo: "pedestre", cor: "vermelho" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "semaforo", cor: "amarelo" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "semaforo", cor: "vermelho" }, { tipo: "pedestre", cor: "verde" }],
        [{ tipo: "tocar", som: "beep_semaforo" }],
        [{ tipo: "aguardar", seg: 5 }],
        [{ tipo: "piscar", cor: "vermelho", seg: 5 }],
        [{ tipo: "parar", som: "beep_semaforo" }],
      ],
    },
  ],

  mensagens: {
    semComandos: "Você não executou nenhum comando! Use os blocos disponíveis.",
    sequenciaIncorreta:
      "A sequência de cores está incorreta. Verifique a ordem.",
    sequenciaIncompleta:
      "A sequência está incompleta. Certifique-se de mudar todas as cores necessárias.",
    faltaAguardar: "Você esqueceu de aguardar entre as mudanças de semáforo.",
    tempoErrado: "O tempo de espera está incorreto. Verifique os segundos.",
    pedestreErrado:
      "O semáforo de pedestres deve estar sincronizado com o de carros.",
    semPiscar:
      "Você esqueceu de fazer a luz do pedestre piscar antes de fechar.",
    piscarErrado:
      "O piscar da luz de pedestre está com cor ou tempo incorreto.",
    semSom: "Você não configurou os sons corretamente.",
    somErrado: "O som usado está incorreto ou fora de ordem.",
    erroGeral: "Algo deu errado. Verifique seu código.",
    sucessoGenerico: "Parabéns! Você completou o desafio!",
    timeoutExcedido: "O tempo de execução foi excedido.",
  },
};
