#include <stdio.h>

#include "game.h"

const char* nombrePalo(uint8_t palo) {
    switch(palo) {

        case PALO_ESPADA:
            return "Espada";

        case PALO_BASTO:
            return "Basto";

        case PALO_ORO:
            return "Oro";

        case PALO_COPA:
            return "Copa";
    }

    return "?";
}

int main(){

    uint8_t jugadores = 2;

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

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

    while(1){
        uint8_t numero_jugador = jugador_turno_actual+1;
        printf("Turno de jugador %d \n", numero_jugador);

        for(uint8_t carta_i = 0; carta_i < 3; carta_i++){
            uint8_t carta = jugadores_cartas[jugador_turno_actual][carta_i];
            if(carta == CARTA_INVALIDA) continue;
            printf("%u: %u de %s\n",
                carta_i,
                cartas[carta].valor_carta,
                nombrePalo(cartas[carta].palo)
            );
        }

        printf("\nCarta a jugar: ");

        uint8_t carta_posicion_mano = 0;

        scanf("%u", &carta_posicion_mano);

        ResultadoJugada resultado_jugada = jugar_baza(jugador_turno_actual, carta_posicion_mano);

        uint8_t carta_jugada_i = resultado_jugada.carta;

        if(carta_jugada_i == EVENTO_JUGADA_INVALIDA){
            printf("\nJugada inválida\n");
            continue;
        } 

        printf("Jugador %u jugó: %u de %s\n\n", numero_jugador, cartas[carta_jugada_i].valor_carta, nombrePalo(cartas[carta_jugada_i].palo));

        if(resultado_jugada.evento == EVENTO_RONDA_TERMINADA){
            if(jugadores <= 2) printf("Jugador ");
            else printf("Equipo ");
            printf("%u gana la ronda.\n\n", resultado_jugada.equipo_ganador+1);
        }
    }

    return 0;
}