import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame_widgets
import pygame
from pygame_widgets.button import Button
from pygame_widgets.dropdown import Dropdown
import random

win_width = 600
win_height = 480
win_bg_color = (0, 0, 0)
dice_results = []
text_color = (221, 221, 221)

def draw_results(clicked: bool = False):
    if len(dice_results) == 0: return
    my_string = "Results: "
    for index, element in enumerate(dice_results):
        my_string += str(element)
        if index != len(dice_results) - 1:
            my_string += ", "
    if clicked: print(my_string)
    font_size = 50
    while True:
        arail_20 = pygame.font.SysFont('bauhaus 93', font_size)
        results_text = arail_20.render(my_string, True, text_color)
        if results_text.get_width() < win_width:
            break
        font_size = font_size - 5
    text_x = (win_width // 2) - (results_text.get_width() // 2)
    text_y = win_height - 25 - results_text.get_height() 
    window.blit(results_text,(text_x, text_y))
    
def roll_dice():
    global dice_results
    print("Type of dice: D", side_dropdown.getSelected())
    print("Number of dice: ", numdice_dropdown.getSelected())
    dice_results = []
    for dice in range(0, numdice_dropdown.getSelected()):
        dice_results.append(random.randint(1, side_dropdown.getSelected()))
    draw_results(True)

pygame.init()
window = pygame.display.set_mode((win_width, win_height))
pygame.display.set_caption('Dice Roll')
icon = pygame.image.load(os.path.join("icon", "dieicon_64x.png"))
icon.convert_alpha()
pygame.display.set_icon(icon)

side_dropdown = Dropdown(
    window, 120, 10, 150, 50, name='How many sides',
    choices=[
        'D4',
        'D6',
        'D8',
        'D10',
        'D12',
        'D20',
    ],
    borderRadius=3, colour=pygame.Color(200, 200, 200), values=[4, 6, 8, 10, 12, 20], direction='down', textHAlign='left'
)

numdice_dropdown = Dropdown(
    window, 320, 10, 150, 50, name='Number of Dice',
    choices=[
        '1',
        '2',
        '8',
    ],
    borderRadius=3, colour=pygame.Color(200, 200, 200), values=[1, 2, 8], direction='down', textHAlign='left'
)

button = Button(
    window, 200, 300, 200, 50, text='Roll', fontSize=50, textColor=("red"),
    margin=20, inactiveColour=(243, 243, 243), pressedColour=(0, 255, 0),
    radius=5, onClick=roll_dice, font=pygame.font.SysFont('calibri', 30),
    textVAlign='bottom', 
)

run = True
while run:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            run = False
    window.fill(win_bg_color)
    draw_results()

    pygame_widgets.update(events)
    pygame.display.update()

pygame.quit()
quit()