import os

import pygame

from common_func import get_base_path
from zombie.Zombie import Zombie


class ZombieLz(Zombie):
    def __init__(self):
        super(ZombieLz, self).__init__()
        self.image = pygame.image.load(os.path.join(get_base_path(), 'images/Zombie/lz/Zombie_000.png')).convert_alpha()
        self.images_lz = [pygame.image.load(
            os.path.join(get_base_path(), 'images/Zombie/lz/Zombie_0{:02d}.png'.format(i))).convert_alpha()
                          for i in range(0, 47)]
        self.attack_lz = [pygame.image.load(
            os.path.join(get_base_path(), 'images/Zombie/lz/Zombie_{:03d}.png'.format(i))).convert_alpha()
                          for i in range(94, 134)]
        self.energy = 27

    def update(self, *args, **kwargs) -> None:
        if self.energy > 10:
            if self.GO:
                self.image = self.attack_lz[args[0] % len(self.attack_lz)]
            else:
                self.image = self.images_lz[args[0] % len(self.images_lz)]
            if self.rect.left > -120 and not self.GO:
                self.rect.left -= self.speed
        elif 0 < self.energy <= 10:
            if self.GO:
                self.image = self.attack_images[args[0] % len(self.attack_images)]
            else:
                self.image = self.images[args[0] % len(self.images)]
            if self.rect.left > -120 and not self.GO:
                self.rect.left -= self.speed
        else:
            if self.die_times < 38:
                self.image = self.die_images[self.die_times]
                self.die_times += 1
            else:
                if self.die_times == 38:
                    self.Alive = False
                    self.kill()
