import pygame
from Kirunek import Kierunek
from Segment import Segment
import copy

class Waz(pygame.sprite.Sprite):
    def __init__(self):
        super(Waz,self).__init__()
        self.obraz = pygame.image.load("images/head.png")
        self.obrotowyObraz = pygame.transform.rotate(self.obraz, 0)
        self.rect = self.obrotowyObraz.get_rect(x = 400-16, y = 304-16)
        self.kierunek = Kierunek.GORA
        self.segmenty = []
        self.dodajSegment = False

    def zmien_kierunek(self,nowy_kierunek):
        moznaZmienic = True
        if nowy_kierunek == Kierunek.GORA and self.kierunek == Kierunek.DOL:
            moznaZmienic = False
        if nowy_kierunek == Kierunek.DOL and self.kierunek == Kierunek.GORA:
            moznaZmienic = False
        if nowy_kierunek == Kierunek.PRAWO and self.kierunek == Kierunek.LEWO:
            moznaZmienic = False
        if nowy_kierunek == Kierunek.LEWO and self.kierunek == Kierunek.PRAWO:
            moznaZmienic = False
        if moznaZmienic:
            self.kierunek = nowy_kierunek

    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
    
    def aktualizuj(self):
        #1 Obrót głowy
        self.obrotowyObraz = pygame.transform.rotate(self.obraz, self.kierunek.value*90)
        #2 Dodanie segmentu
        if self.dodajSegment:
            nowySegment = Segment()
            nowaPozyja = None
            if bool(self.segmenty):
                nowaPozyja = copy.deepcopy(self.segmenty[-1].pozycja)
            else:
                nowaPozyja = copy.deepcopy(self.rect)
            nowySegment.pozycja = nowaPozyja
            self.segmenty.append(nowySegment)
            self.dodajSegment = False
        #Prosuzenie segmentamisz
        for i in range(len(self.segmenty)-1,-1,-1):
            if i == 0:
                self.segmenty[i].przesun(self.rect)
            else:
                self.segmenty[i].przesun(self.segmenty[i-1].pozycja)
        
        #3 Poruszanie glowy
        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)

    def rysujSegmenty(self,ekran):
        for i in self.segmenty:
            ekran.blit(i.obraz,i.pozycja)

    def jeJabko(self):
        self.dodajSegment = True
