from ansi import Ansi
from game_token import GameToken
from display_base import DisplayBase


class DisplayConsole(DisplayBase):
    def __init__(self):
        Ansi.clear_screen()

    def draw_token(self, x: int, y: int, token: GameToken = GameToken.EMPTY) -> None:
        row = 3 + (y * 2)  # y-position inside the grid

        col = 3 + (x * 5) # x-position inside the grid

        if x < 0 or x >= 7 or y < -1 or y >= 6:
            raise ValueError("Invalid position for token.")
        
        Ansi.gotoXY(col, row)
        
        if token == GameToken.RED:
            Ansi.set_foreground(1, True)
            token_str = "██"
        elif token == GameToken.YELLOW:
            Ansi.set_foreground(3, True)
            token_str = "██"
        else:
            token_str = "  "
        
        print(token_str, end="")
        Ansi.reset()

    def draw_grid(self) -> None:
        # YOUR CODE HERE
        Ansi.reset()
        Ansi.gotoXY(1, 2)

        print(f"┌────┬────┬────┬────┬────┬────┬────┐\n│    │    │    │    │    │    │    │\n├────┼────┼────┼────┼────┼────┼────┤\n│    │    │    │    │    │    │    │\n├────┼────┼────┼────┼────┼────┼────┤\n│    │    │    │    │    │    │    │\n├────┼────┼────┼────┼────┼────┼────┤\n│    │    │    │    │    │    │    │\n├────┼────┼────┼────┼────┼────┼────┤\n│    │    │    │    │    │    │    │\n├────┼────┼────┼────┼────┼────┼────┤\n│    │    │    │    │    │    │    │\n└────┴────┴────┴────┴────┴────┴────┘")


if __name__ == '__main__':
    Ansi.clear_screen()
    Ansi.reset()
    fc = DisplayConsole()
    fc.draw_grid()
    fc.draw_token(0, 0, GameToken.RED)
    fc.draw_token(5, 2, GameToken.YELLOW)
    #print(type(GameToken.RED))
    #print(GameToken.RED)
    Ansi.gotoXY(0,15)