
# (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
# Hauptprogramm
# Autor: Viktor Lysow, Johannes Tümler
# Letzte Änderung: 12.03.2021
# Zweck: Steuerung des gesamten Spielablaufs - dieses Programm muss gestartet werden, um das Spiel zu spielen.
#
# Das Hauptprgramm
# hier wird der Held erstellt
# Hauptschleife greift auf alle Level zu


from KlassePrinzessin import Prinzessin
from KlasseLevelmanagement import LevelManagement
import pygame
import sys
import sounds
from screen import screen
from time import time
from hindernisse import feld
from startBild import start
from KlasseHeld import Held
from Level1 import Level1
from Level2 import Level2
from GameOver import gameOver
from GameWin import gameWin
import DatenSammeln as ds                               # Für den Matlab Beleg

zeitmax = 0                                                             #performance test
zeit_start_ges = 0

spieler1 = Held(x = 582, y = 476, geschw = 4, breite = feld, hoehe = feld, level = 1, bildFigur="Held")                    #Figuren erstellen
sounds.soundLevel()
LevelManagement.Level = 0

go = True
clock = pygame.time.Clock()

while go:      
    LevelManagement.deltaTime = clock.tick(LevelManagement.fpsTarget)
                                               # das Spiel soll mit 30-50 fps (Bilder pro Sekunde) laufen
                                               # Falls irgendwas komisch läuft (Monster in Wänden, nichts bewegt sich, oder ähnlich)
                                               # dann mal das fpsTarget mit kleineren/größeren Werten testen (siehe Klasse LevelManagement)
    LevelManagement.numFrames += 1
    LevelManagement.timeNeeded += LevelManagement.deltaTime
    zeit = time()
    for event in pygame.event.get():
        if event.type == pygame.QUIT: 
            sys.exit()
        elif event.type == pygame.KEYDOWN:	# Wenn Escape gedrueckt wird, posten wir ein QUIT-Event in Pygames Event-Warteschlange.
            if event.key == pygame.K_ESCAPE:
                pygame.event.post(pygame.event.Event(pygame.QUIT))
    screen.fill((0, 0, 0))

    if LevelManagement.Level == 0:                                                          #Startbildschrim
        LevelManagement.Level = start()
        zeit_start_ges =time()                                              #Zeit des Startes vom Spiel (für Matlab)

    elif LevelManagement.Level == 1:                                                         #Geist
        LevelManagement.Level = Level1(spieler1)

    elif LevelManagement.Level == 2:                                                         #Boss
        LevelManagement.Level = Level2(spieler1)

    elif LevelManagement.Level == 3:
        ds.daten_csv(10, round(time() - zeit_start_ges))                      
        LevelManagement.Level = gameOver(spieler1)
        spieler1.neu_Position(582, 476, 1) 

    elif LevelManagement.Level == 4:                                          #GameOver             
        ds.daten_csv(10, round(time() - zeit_start_ges))                      #Gesamt Spielzeit (für Matlab)
        LevelManagement.Level = gameWin(spieler1)
        spieler1.neu_Position(582, 476, 1)                                    #Held wird resetet für neues Spiel
    pygame.display.update()

    if zeitmax < time() - zeit:                                              #performance Test
        zeitmax = time() - zeit
        #print(zeitmax)

    