import pygame 
from kierunek import Kierunek
from segment import segment
import copy 

class Waz(pygame.sprite.Sprite):
    def __init__(self):
        self.orginalny_obraz = pygame.image.load("images/head.png")
        
        self.obraz = pygame.transform.rotate(self.orginalny_obraz,0)

        self.rect = self.obraz.get_rect(center=(12*32+16,9*32+16))
        self.kierunek = Kierunek.GORA
        self.nowy_kierunek  = Kierunek.GORA
        self.ostatnia_pozycja = self.rect
        self.dodaj_segment = False
        self.segmenty = []

    def zmien_kierunke(self,kierunek):
        zmiana_mozliwa = True
        if kierunek == Kierunek.GORA and self.kierunek == Kierunek.DOL:
            zmiana_mozliwa = False
        if kierunek == Kierunek.DOL and self.kierunek == Kierunek.GORA:
            zmiana_mozliwa = False
        if kierunek == Kierunek.PRAWO and self.kierunek == Kierunek.LEWO:
            zmiana_mozliwa = False
        if kierunek == Kierunek.LEWO and self.kierunek == Kierunek.PRAWO:
            zmiana_mozliwa = False
        if zmiana_mozliwa:
            self.nowy_kierunek = kierunek 


    def aktualizuj(self):
        self.kierunek = self.nowy_kierunek 
        self.obraz  = pygame.transform.rotate(self.orginalny_obraz,(self.kierunek.value*-90))
        self.ostatnia_pozycja = copy.deepcopy(self.rect)
        if self.kierunek == Kierunek.GORA:
            self.rect.move_ip(0,- 32)
        if self.kierunek == Kierunek.DOL:
            self.rect.move_ip(0, 32)    
        if self.kierunek == Kierunek.LEWO:
            self.rect.move_ip(-32, 0)    
        if self.kierunek == Kierunek.PRAWO:
            self.rect.move_ip(32, 0)    

        for i in range (len(self.segmenty)):
            if i == 0:
                self.segmenty[i].przesun(self.ostatnia_pozycja)
            else:
                self.segmenty[i].przesun(self.segmenty[-1].ostatnia_pozycja)


        if self.dodaj_segment:
            nowy_segment = segment()
            nowa_pozycja =None
            if len(self.segmenty)  >0 :
                nowa_pozycja = copy.deepcopy(self.segmenty[-1].pozycja)
            else:
                nowa_pozycja = copy.deepcopy(self.ostatnia_pozycja)        
            
            nowy_segment.pozycja = nowa_pozycja
            self.segmenty.append(nowy_segment)
            self.dodaj_segment = False
    
    def rysuj_swegmenty(self,ekran):
        for segment in self.segmenty:
            ekran.blit(segment.obraz,segment.pozycja)

    def zjed_jabl(self):
        self.dodaj_segment = True        
    
    def sprawdz_kolizje(self):
        for segment in self.segmenty:
            if self.rect.topleft == segment.pozycja.topleft:
                return True 
        
        if self.rect.top < 0 or self.rect.top >= 608:
            return  True
        if self.rect.left <0 or self.rect.left >= 800:
            return True
        
        return False