"""
Programa principal juego para taller de programacion 2024 Orís
ModoComún

"""

from taller_programacion import *                   # Cargamos todo lo necesario para nuestro juego


async def main():                                   # Este es el inicio del programa principal

    logger.info(f"Iniciamos programa")              # Informamos de que comenzamos nuestro programa               
    tablero = Tablero(casillas_totales=50)          # Cargamos el tablero de juego con X posiciones que son la cantidad de leds

    while True:                                     # Bucle infinito principal, este trozo se repetira siempre
                                                    # El programa irá pasando por diferentes fases dependiendo del momento en que esté
        if tablero.__fase == "brillo":              # En esta fase los jugadores pueden elegir el brillo de los leds
            await asyncio.wait_for(tablero.seleccionarBrillo(),600)
        elif tablero.__fase == "puntos":            # En esta fase los jugadores pueden elegir los puntos de la partida
            await asyncio.wait_for(tablero.seleccionarPuntos(),600)
        elif tablero.__fase == "color":             # En esta fase los jugadores pueden elegir el color de su portería
            await asyncio.wait_for(tablero.seleccionarColor(),600)
        elif tablero.__fase == "largo":             # En esta fase los jugadores pueden elegir el largo de su porteria
            await asyncio.wait_for(tablero.seleccionarLargo(),600)
        elif tablero.__fase == "inicio":            # En esta fase empieza el jugador que primero pulse su botón
            await asyncio.wait_for(tablero.inicio(),600)
        elif tablero.__fase == "juego":             # En esta fase los jugadores juegan hasta que se consigan los puntos de la partida
            await asyncio.wait_for(tablero.juegoPrincipal(),3600)
        elif tablero.__fase == "final":             # Esta fase no está definida aún
            tablero.actualizar()
        else:
            tablero.__fase = "brillo"               # Si no hay ninguna fase seleccionada nos vamos a brillo
        await asyncio.sleep_ms(0)                   # Esperamos 0 segundos, esto se hace para que el programa pueda atender otras cosas antes de volver a revisar las fases

asyncio.run(main())                                 # Ejecutamos la función de main (La de aquí arriba)

 