# (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
# Magie-Klasse
# Autor: Johannes Tümler
# Letzte Änderung: 12.08.2022
# Zweck: Magie ist das, mit dem der Held schießt (blau) oder der Boss schießt (rosa). Magie fliegt herum.


# 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
from screen import screen
from time import time
from KlasseLevelmanagement import LevelManagement
import sounds

class Magie:
    def __init__(self, x, y, richtung, farbe, geschw):
        print("Hier Klasse Magie in zwei Teile teilen: 1) neue Klasse Waffe erstellen, 2) neue Klasse Magie erbt von Waffe")        
        self.x = x
        self.y = y
        self.richtung = richtung
        self.zeit = time()
        self.geschw = geschw
        # falls das Spiel bei Ihnen zu langsam / zu schnell läuft, ändern Sie die nachfolgende Zeile:
        self.geschw_FPS_trick = self.geschw * (30 / LevelManagement.fpsTarget) # hier mit der "30" experimentieren, falls nötig
        self.waffeRec = pygame.Rect(self.x + 12 , self.y +12, 24, 24)
        self.bildbewegung = 2
        self.bildWaffe = []
        self.bewegung()
        sounds.soundMagie()                                                             #Sound beim Erschaffen von Magie
        self.bildWaffe = [pygame.image.load(f"Bilder/Magie/{farbe}1.png"),
                          pygame.image.load(f"Bilder/Magie/{farbe}2.png"),
                          pygame.image.load(f"Bilder/Magie/{farbe}3.png"),
                          pygame.image.load(f"Bilder/Magie/{farbe}2.png")]


    def bewegung(self):
        if self.richtung == 0:          #oben
            self.y -= self.geschw_FPS_trick

        elif self.richtung == 1:        #unten
            self.y += self.geschw_FPS_trick

        elif self.richtung == 2:        #rechts
            self.x += self.geschw_FPS_trick

        elif self.richtung == 3:        #links
            self.x -= self.geschw_FPS_trick



        elif self.richtung == 4:        #oben links   Bonus!!!!
            self.y -= self.geschw_FPS_trick
            self.x -= self.geschw_FPS_trick

        elif self.richtung == 5:        #oben rechts   Bonus!!!!
            self.y -= self.geschw_FPS_trick
            self.x += self.geschw_FPS_trick

        elif self.richtung == 6:        #unten links   Bonus!!!!
            self.y += self.geschw_FPS_trick
            self.x -= self.geschw_FPS_trick

        elif self.richtung == 7:        #unten rechts   Bonus!!!!
            self.y += self.geschw_FPS_trick
            self.x += self.geschw_FPS_trick

        self.zeichnen()

        if self.richtung == -1: # wir löschen uns selbst
            del(self)

    def zeichnen(self):                         # Bilder werden alle 0.1 Sekunden ausgetauscht
        if time() - self.zeit >= 0.25:
            self.zeit = time()
            self.bildbewegung += 1
            if self.bildbewegung >= 3:
                self.bildbewegung = 0

        if len(self.bildWaffe) > 0:
            screen.blit(self.bildWaffe[self.bildbewegung], (self.x, self.y))
        self.waffeRec = pygame.Rect(self.x + 12, self.y + 12, 24, 24)          #Axt ist halb so groß wie das Bild
        if LevelManagement.debug:        
            pygame.draw.rect(screen, (0,0,255), (self.x + 12, self.y + 12, 24, 24), 0)  # Zeile aktivieren, falls man die Kollisionsboxen der Monster sichtbar machen möchte
