# (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
# Figur-Klasse
# Autor: Viktor Lysow, Johannes Tümler
# Letzte Änderung: 12.04.2022
# Zweck: Figur-Entität definieren
#
# Harpyie erbt Alles von Monster
# können den Held bei Berührung töten
# Harpyie kann in alle 4 Himmelrichtungen schießen
# Harpyie kann seitwärts schießen
# Harpyie kann in alle Richtungen bewegen

# Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann.
# Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet.
if __name__=="__main__":
    import subprocess
    # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach:
    #subprocess.call("python3 main.py", shell=True)  # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
    subprocess.call("main.py", shell=True)  # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
    exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei.
# Ende "BLOCK1"

import pygame
import sounds
from KlasseMagie import Magie
from KlasseGeist import Geist
from time import time
from screen import screen

class Harpyie (Geist):                                                            #Harpyie soll in allen 4 Richtungen hin und wieder schießen
    def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
        super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
        self.zeitSchuss = zeitMonster
        self.bildExplo = [pygame.image.load(f"Bilder/Magie/E1.png"),
                     pygame.image.load(f"Bilder/Magie/E2.png")]
        self.roundfire = [0,0,0,0]


    def faehigkeit(self):                                                    #Fähigkeiten von Monstern werden mit den Fähigkeiten der Klasse überschrieben!!!
        self.toeten()
        self.duplizieren()        
        self.schiessen()

    def reset(self):
        super().reset()
        self.kugeln = []
        self.leben = True

    def schiessen(self):                    #Schießt in alle 4 Himmelsrichtungen
        diff = time() - self.zeitSchuss
        if diff >= 1 and self.roundfire[0] == 0:
            self.kugeln.append(Magie(self.x, self.y, 0, "R", 5))
            self.roundfire[0] = 1
        elif diff >= 1.1 and self.roundfire[1] == 0:
                self.kugeln.append(Magie(self.x, self.y, 1, "R", 5))
                self.roundfire[1] = 1
        elif diff >= 1.2 and self.roundfire[2] == 0:
            self.kugeln.append(Magie(self.x, self.y, 2, "R", 5))
            self.roundfire[2] = 1
        elif diff >= 1.3:
            self.kugeln.append(Magie(self.x, self.y, 3, "R", 5))
            self.roundfire = [0,0,0,0]
            self.zeitSchuss = time()

        for k in self.kugeln:
            if self.heldDaten.rechteck.colliderect(k.waffeRec):                                  # vergleicht ob eine Kugel den Helden trifft
                sounds.soundTot()
                screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y))
                self.heldTot = True

            if not self.hindernis(k.waffeRec):                                                   # vergleicht ob eine Kugel ein Hindernis trifft
                self.kugeln.remove(k)

        for k in self.kugeln:                                                                     # vergleicht ob eine Kugel eine feindliche Kugel trifft
            for m in self.heldDaten.kugeln:                                                       #(zwei Schleifen hier, weil bei dem Fall wenn Hindernis und feindliche Kugel sich treffen kommt ein Fehler)
                if k.waffeRec.colliderect(m.waffeRec):
                    sounds.soundKolMag()
                    if (k in self.kugeln):
                        self.kugeln.remove(k)
                        self.heldDaten.kugeln.remove(m)

            k.bewegung()                                                                           # Bewegung der einzelnen Kugeln
