class Game:
    def __init__(self):
        pygame.init()
        
        # screen size
        root = tk.Tk()
        self.WIDTH = int(root.winfo_screenwidth()*0.58565)
        self.HEIGHT = int(root.winfo_screenheight()*0.78125)
        
        # movement booleans
        self.up_pressed = False
        self.down_pressed = False
        self.left_pressed = False
        self.right_pressed = False
        
        # pygame inits
        self.game_display = pygame.display.set_mode((self.WIDTH, self.HEIGHT))
        pygame.display.set_caption('Sneaky Santa')
        self.clock = pygame.time.Clock()
        self.gameExit = False

        # init game objects
        self.santa = Santa(50, 50)
        self.obstacles = [Obstacle(100, 100)]
        self.room = Room(self.obstacles, self.santa)

    def game_loop(self):
        stop = False
        while not self.gameExit:
            self.game_display.fill( (255, 255, 255) )
            self.game_display.blit(self.room.getimg(), (0, 0))
            for o in self.obstacles:
                self.game_display.blit(o.getimg(), o.getpos())
            self.game_display.blit(self.santa.getimg(), self.santa.getpos())
            if stop == False:
                count = 0 
                self.controls()
                self.santa.setvel(self.up_pressed, self.down_pressed, self.left_pressed, self.right_pressed)
                collision_status = self.room.check_collision(self.santa)
                stop = self.collision_handler(collision_status)
            
            count = count + 1
            if count == 15:
                stop = False

            self.santa.update()
            pygame.display.update()

    def controls(self):
        for event in pygame.event.get():
                                    
            if event.type == pygame.QUIT:
                self.gameExit = True

            # key pressed
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    self.up_pressed = True
                
                if event.key == pygame.K_DOWN:
                    self.down_pressed = True
                
                if event.key == pygame.K_LEFT:
                    self.left_pressed = True
                    
                if event.key == pygame.K_RIGHT:
                    self.right_pressed = True

            # key released
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_UP:
                    self.up_pressed = False
                
                if event.key == pygame.K_DOWN:
                    self.down_pressed = False
                
                if event.key == pygame.K_LEFT:
                    self.left_pressed = False
                    
                if event.key == pygame.K_RIGHT:
                    self.right_pressed = False

    def collision_handler(self, status):
        if status == "NO_COLLISION":
            return False
        elif status == "HARD_OBJECT":
            stop = self.santa.hard_object()