#include <stdio.h>

#include "../truco.h"
#include "../interfaces/truco_interfaz_comun.h"
#include "../interfaces/truco_interfaz_comun_menus.h"
#include "../interfaces/truco_stdio.h"

int main(){
    uint8_t jugadores = 2;    

    printf("\nInserte número de jugadores: ");
    scanf("%u", &jugadores);

    EstadoPartida partida;

    partida.numero_jugadores = jugadores;
    partida.max_puntos = 30;

    SET_BIT(partida.flags_partida, FLAG_PARTIDA_FLOR);

    if(!iniciar_partida(&partida)){
        printf("Número inválido de jugadores.\n");
        return 1;
    }

    for(uint8_t i = 0; i < 2; i++){
        for(uint8_t j = 0; j < 3; j++){
            // partida.jugadores_cartas[i][j] = 4;
            partida.jugadores_cartas[i][j] = 4;
        }
    }

    TCIC_dibujar_pantalla(&partida, JUGADOR_INVALIDO);

    while(1){
        
        TCIC_nuevo_turno(&partida);
        TCIC_mostrar_controles_a_jugador_actual_segun_estado(&partida);

        ResultadoJugada resultado_jugada = TCIC_manejar_accion_turno(&partida,
        TCIC_recibir_input(),
        obtener_jugador_turno_actual(&partida));
        
        TCIC_dibujar_pantalla(&partida, JUGADOR_INVALIDO);

        TCIC_render_mensaje_por_resultado(&resultado_jugada, &partida);
    }

    return 0;
}

ResultadoJugada TCIC_jugar_baza(EstadoPartida *partida, uint8_t jugador_i, uint8_t carta_i){
    return jugar_baza(partida, jugador_i, carta_i);
}

ResultadoJugada TCIC_cantar(EstadoPartida *partida, uint8_t jugador_i, uint8_t canto_i){
    return cantar(partida, jugador_i, canto_i);
}

ResultadoJugada TCIC_cantar_tanto(EstadoPartida *partida, uint8_t jugador_i){
    return cantar_tanto(partida, jugador_i, calcular_envido_o_flor_segun_estado(partida, jugador_i).valor_tantos);
}