import pygame
pygame.init()
from random import choice, randint

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

screen_surface = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
pygame.display.set_caption("Pierwsza Gra")

clock = pygame.time.Clock()

bonus_images = [
    'bonus_1.png',
    'bonus_2.png',
    'bonus_3.png'
]
bonus_objects = []

FRAMES_PER_SECOND = 60
frames_cnt = 0

def print_bonus_object():
    for obj in bonus_objects:
        print(obj)
        pass
    pass

def set_position_image(img_list, position):
    image,surface,rect = img_list
    rect = surface.get_rect(center=position)
    return [image, surface, rect]

def calculate_player_movement(keys):
    speed = 10
    delta_x = 0
    delta_y = 0

    if keys[pygame.K_c]:
        speed*=2
    if keys[pygame.K_w]:
        delta_y -= speed
    if keys[pygame.K_s]:
        delta_y += speed
    if keys[pygame.K_d]:
        delta_x += speed
    if keys[pygame.K_a]:
        delta_x -= speed
    return [delta_x,delta_y]


game_status = True

def load_image(img_path: str, position):
    image = pygame.image.load(img_path)
    surface = image.convert()

    transparent_color = (0,0,0)
    surface.set_colorkey(transparent_color)

    rect = surface.get_rect(center=position)
    return [image, surface, rect]

def generate_bonus_objects():
    image_name = choice(bonus_images)
    x = randint(0,SCREEN_WIDTH)
    y = randint(0,SCREEN_HEIGHT)
    positon = [x,y]
    new_obj = load_image(image_name,positon)
    bonus_objects.append(new_obj)
    pass

player_pos = [SCREEN_WIDTH//2,SCREEN_HEIGHT//2]
player = load_image("player.png",player_pos)
background_colour = [4,4,10]

def print_image(img_list)-> None:
    image, surface, rect = img_list
    screen_surface.blit(surface,rect)
    pass

def limit_position(position):
    x,y = position
    x = max(0,min(x,SCREEN_WIDTH))
    y = max(0,min(y,SCREEN_HEIGHT))
    return[x,y]


while game_status:
    events = pygame.event.get()
    for event in events:
        print(event)
        if event.type == pygame.QUIT:
            game_status = False
        pass
    pressed_keys = pygame.key.get_pressed()
    delta_x,delta_y = calculate_player_movement(pressed_keys)
    player_pos[0] += delta_x
    player_pos[1] += delta_y
    player = set_position_image(player,player_pos)
    player_pos = limit_position(player_pos)

    
    screen_surface.fill(background_colour)
    print_image(player)

    if frames_cnt % (FRAMES_PER_SECOND * 1) == 0:
        generate_bonus_objects()
        pass
    print_bonus_object()

    pygame.display.update()
    clock.tick(60)
    pass

pygame.quit()
quit()