import pygame
import copy
from kierunki import Kierunek
from segment import Segment

class Waz(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.obrazek = pygame.image.load("head.png")
        self.obrocony = pygame.transform.rotate(self.obrazek, -90)
        self.rect = self.obrocony.get_rect(center=(12*32+16, 9*32+16))
        self.kierunek = Kierunek.PRAWO
        self.nowy_kierunek = Kierunek.PRAWO
        self.segmenty = []
        self.ostatnia_pozycja = self.rect
        self.dodaj_segment = False

    def skrec(self, kierunek):
        mozliwa_zmiana = True
        if(kierunek == Kierunek.GORA and self.kierunek == Kierunek.GORA):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.DOL and self.kierunek == Kierunek.DOL):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.LEWO and self.kierunek == Kierunek.LEWO):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.PRAWO and self.kierunek == Kierunek.PRAWO):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.GORA and self.kierunek == Kierunek.DOL):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.DOL and self.kierunek == Kierunek.GORA):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.LEWO and self.kierunek == Kierunek.PRAWO):
            mozliwa_zmiana = False
        if(kierunek == Kierunek.PRAWO and self.kierunek == Kierunek.LEWO):
            mozliwa_zmiana = False
        if(mozliwa_zmiana):
            self.nowy_kierunek = kierunek

    def odswiez(self):
        self.kierunek = self.nowy_kierunek
        self.obrocony = pygame.transform.rotate(self.obrazek, 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.PRAWO):
            self.rect.move_ip(32, 0)
        if(self.kierunek == Kierunek.LEWO):
            self.rect.move_ip(-32, 0)
        if(self.kierunek == Kierunek.DOL):
            self.rect.move_ip(0, 32)
        
        for i in range (len(self.segmenty)):
            if i == 0:
                self.segmenty[i].przesun(self.ostatnia_pozycja)
            else:
                self.segmenty[i].przesun(self.segmenty[i-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_segmenty(self, ekran):
        for segment in self.segmenty:
            ekran.blit(segment.obraz, segment.pozycja)

    def zjedz_jabko(self):
        self.dodaj_segment = True    

