import pygame
import sas_pygame as sas


class Windrad:

    def __init__(self, xPos, yPos, breiteMastUnten, hoeheMast, farbe):
        self.drehPunktX = xPos + breiteMastUnten / 2
        self.drehPunktY = yPos - hoeheMast
        wmast = self.mast(xPos, yPos, breiteMastUnten, hoeheMast, farbe)
        self.windrad = sas.Sprite(wmast)
        radius = breiteMastUnten *2/5
        generator = sas.Circle (self.drehPunktX - radius, self.drehPunktY - radius, radius, "white");
        self.windrad.add(generator);
        self.rotor = self.rotor(self.drehPunktX, self.drehPunktY, hoeheMast / 2); 
        self.windrad.add(self.rotor);

    def mast(self, xP, yP, breiteU, hoehe, farbe):
        mast = sas.Polygon([(xP, yP)], farbe)
        mast.add(breiteU, 0);
        mast.add( 0.9 * breiteU, - hoehe)
        mast.add(0.1 * breiteU,  - hoehe)
        return mast

    
    def rotor(self, drehPunktX, drehPunktY, laenge):
        ellipse = sas.Ellipse(drehPunktX, drehPunktY - laenge / 20, laenge, laenge/10, "white")
        rotor = sas.Sprite(ellipse)
        ellipse1 = sas.Ellipse(drehPunktX, drehPunktY - laenge / 20, laenge, laenge/10, "white")
        ellipse1.turn(drehPunktX, drehPunktY ,120)
        rotor.add(ellipse1)
        ellipse2 = sas.Ellipse(drehPunktX, drehPunktY - laenge / 20, laenge, laenge/10, "white")
        ellipse2.turn(drehPunktX, drehPunktY, 240);
        rotor.add(ellipse2)
        return rotor
 
  
    def dreheRotor(self, geschwindigkeit):
        self.rotor.turn(self.drehPunktX, self.drehPunktY, geschwindigkeit); 


def main():
    geschwindigkeit = 1
    view = sas.createView(600, 400,"green", "Windpark")
    windrad1 = Windrad(150, 390, 20, 250, "red")
    windrad2 = Windrad(360, 350, 18, 200, "magenta")
    windrad3 = Windrad(520, 300, 10, 130, "yellow")
    while view.running:
        view.step()
        windrad1.dreheRotor(geschwindigkeit)
        windrad2.dreheRotor(geschwindigkeit)
        windrad3.dreheRotor(geschwindigkeit)
        if (view.keyRightPressed()):
            if (geschwindigkeit < 2.4):
                geschwindigkeit = geschwindigkeit+0.2
                view.keyBufferDelete()
        if (view.keyLeftPressed()):
            if (geschwindigkeit>=0.2):
                geschwindigkeit = geschwindigkeit-0.2
                view.keyBufferDelete();  
    view.quit()
        

main()


