from turtle import Screen, Turtle
from snake import Snake
from food import Food
import time

class GameManager:

    BOARD_WIDTH=600
    BOARD_HEIGHT=600

    def __init__(self):
        self.screen = Screen()

        self.screen.setup(width=self.BOARD_WIDTH, height=self.BOARD_HEIGHT)
        self.screen.bgcolor("black")
        self.screen.title("Snake game")
        self.screen.tracer(0)
        self.snake = Snake()
        self.screen.update()

        self.food_on_screen = False

        self.game_on = True

    def control_snake(self):
        self.screen.listen()        
        self.screen.onkey(self.snake.up, "Up")
        self.screen.onkey(self.snake.right, "Right")
        self.screen.onkey(self.snake.down, "Down")
        self.screen.onkey(self.snake.left, "Left")
        self.snake.move()
        self.screen.update()

    def check_collision(self):
        x, y = self.snake.get_head_position()
        wall_collision =  x >= self.BOARD_WIDTH/2 or x <= -self.BOARD_WIDTH/2 or y >= self.BOARD_HEIGHT/2 or y <= -self.BOARD_HEIGHT/2
        snake_collision = self.snake.tailbite()

        return wall_collision or snake_collision
    
    def is_food_eaten(self):
        snake_x, snake_y = self.snake.get_head_position()
        food_x, food_y = self.food.get_position()

        if int(snake_x) == int(food_x) and int(snake_y) == int(food_y):
            print("Yihaa")
            self.food.hide()
            self.snake.extend()
            self.food_on_screen = False
        
    def game_round(self):
        if not self.food_on_screen:
            self.food = Food(self.BOARD_WIDTH, self.BOARD_HEIGHT)
            self.food_on_screen = True

        self.control_snake()
        if self.check_collision():
            self.game_on = False
            self.game_over()

        self.is_food_eaten()
        time.sleep(0.1)

    def get_screen(self):
        return self.screen
    
    def game_over(self):
        turtle = Turtle()
        turtle.color("yellow")
        turtle.write("Game over!", move=False, align='center', font=('Arial', 32, 'normal')) 

