#include <inttypes.h>
#include "truco_interfaz_comun.h"

#include "str_helper.h"

void TCIC_turno_baza(uint8_t jugador_i, uint16_t partida_i){
    printf("Turno de jugador %" PRIu8 ".\n", jugador_i+1);
}

void TCIC_turno_canto(uint8_t jugador_i, uint8_t canto_i, uint16_t partida_i){
    printf("Jugador %" PRIu8 " responde a %s.\n", jugador_i+1, nombreCanto(canto_i));
}

void TCIC_turno_tantos(uint8_t jugador_i, uint16_t partida_i){
    printf("Turno de jugador %" PRIu8 " de cantar sus tantos.\n", jugador_i+1);
}

void TCIC_render_carta(uint8_t carta_i, uint16_t partida_i){
    printf("%" PRIu8 " de %s\n", 
    cartas[carta_i].valor_carta, 
    nombrePalo(cartas[carta_i].palo));
}

void TCIC_render_controles_carta(uint8_t carta_i, uint8_t carta_id, uint8_t control_i, uint16_t partida_i){
    printf("%u: ", control_i);
    TCIC_render_carta(carta_id, partida_i);
}

void TCIC_render_controles_canto(uint8_t canto_i, uint8_t control_i, uint16_t partida_i){
    printf("%u: %s\n", control_i, nombreCanto(canto_i));
}

void TCIC_render_controles_canto_tantos(uint8_t tantos, uint8_t control_i, uint16_t partida_i){
    printf("%u: %u\n", control_i, tantos);
}

void TCIC_render_jugada_invalida(uint8_t jugador_i, uint16_t partida_i){
    printf("Jugada inválida\n");
}

void TCIC_render_carta_jugada(uint8_t jugador_i, uint8_t carta_i, uint16_t partida_i){
    printf("Jugador %u jugó: ", jugador_i+1);
    TCIC_render_carta(carta_i, partida_i);
}

void TCIC_render_canto_realizado(uint8_t jugador_i, uint8_t canto_i, uint16_t partida_i){
    printf("Jugador %u cantó: %s\n", jugador_i+1, nombreCanto(canto_i));
}

void TCIC_render_tantos_cantados(uint8_t jugador_i, uint8_t tantos, uint16_t partida_i){
    printf("Jugador %u cantó: %u puntos de tantos.\n", jugador_i+1, tantos);
}

void TCIC_render_puntos_ganados(uint8_t numero_jugadores, uint8_t equipo_puntero, uint8_t puntos_ganados, uint16_t partida_i){
    printf("%s %u anotó %u puntos.\n", jugador_o_equipo(numero_jugadores), equipo_puntero+1, puntos_ganados);
}

void TCIC_render_puntaje(uint8_t numero_jugadores, uint8_t puntos_1, uint8_t puntos_2, uint16_t partida_i){
    printf("%s 1: %u puntos ======== %s 2: %u puntos\n", jugador_o_equipo(numero_jugadores), puntos_1,
    jugador_o_equipo(numero_jugadores), puntos_2);
}

void TCIC_render_victoria(uint8_t numero_jugadores, uint8_t equipo_i, uint16_t partida_i){
    printf("%s %u gana la partida.\n", jugador_o_equipo(numero_jugadores), equipo_i+1);
}

void TCIC_render_ronda_terminada(uint8_t numero_jugadores, uint8_t ganador_i, uint16_t partida_i){
    printf("%s %u gana la ronda.\n", jugador_o_equipo(numero_jugadores), ganador_i+1);
}

void TCIC_render_nueva_ronda(uint8_t jugador_mano, uint16_t partida_i){
    printf("Empieza una nueva ronda. Jugador %u es mano.\n", jugador_mano+1);
}

void TCIC_render_nueva_baza(uint8_t baza_i, uint16_t partida_i){
    printf("Comienza la baza %u\n", baza_i+1);
}

void TCIC_render_flag_activada(uint8_t flag_i, uint16_t partida_i){
    printf("Flag %u (%s) activada.\n", flag_i, nombreCanto(flag_i));
}

void TCIC_render_envido_no_disponible(uint16_t partida_i){
    printf("El envido ya no se encuentra disponible.\n");
}

void TCIC_render_envido_en_mesa(uint8_t mayor_tanto, uint16_t partida_i){
    printf("%u en mesa:\n", mayor_tanto);
}

void TCIC_render_carta_envido_en_mesa(uint8_t carta_i, uint16_t partida_i){
    TCIC_render_carta(carta_i, partida_i);
}

void TCIC_render_tiene_retruco(uint8_t equipo_i, uint16_t partida_i){
    printf("El %s %u tiene el retruco ahora.\n", jugador_o_equipo(equipo_i), equipo_i+1);
}

void TCIC_mostrando_controles_en_canto(EstadoPartida *partida, uint16_t partida_i){
    printf("Tus cartas son:\n");
    TCIC_render_cartas_disponibles_jugador(partida, obtener_jugador_turno_actual(partida), partida_i);
}

void TCIC_avisar_accion(uint16_t partida_i){
    printf("\nAcción: ");
}

uint8_t TCIC_recibir_input(uint16_t partida_i){
    TCIC_avisar_accion(partida_i);

    uint8_t accion = 0;
    scanf("%" SCNu8, &accion);
    return accion;
}