/*----------------------------------------------------------------------------
 * Klasse:		    Fairway.java
 * Beschreibung:	Laufbahn auf der der Ball rollt
 * Autor:		    Jack Meyer
 * Datum:		    November, 1997
 * ---------------------------------------------------------------------------
 */


import java.awt.*;


class Fairway extends Hindernis {

    /**
     * Display Farbe der Laufbahn, Klassenkonstante!
     */
    static final Color colorFairway = new Color (102,153,102);
    /**
     * Reibungswiderstand, Betrag um den Geschwidigkeit abnimmt
     */
    final double myFriction = 0.5;


    /**
     *  Konstruktor der Laufbahn
     */
    Fairway (int x, int y, int w, int h) {
        super (x, y, w, h);
    };
    /**
     *  String Konstruktor der Laufbahn
     */
    Fairway (String aStringParameter)
    throws ParsingException,
           NumberFormatException,
           StringIndexOutOfBoundsException
    {
        this (0,0,0,0);
        double[] dArgs = Parser.ParseStringToDouble(aStringParameter);

        /* testen ob genau 4 Parameter vorhanden */
        if (dArgs.length != 4) throw new ParsingException ("Fairway muss genau 4 Parameter (X1,Y1, X2, Y2) haben");

        /* Parameter neu setzten */
        this.setPos ((int)dArgs[0], (int)dArgs[1]);
        this.setSize ((int)dArgs[2], (int)dArgs[3]);
    };


    /**
     * Zeichenmethode für die Laufbahn
     */
    void draw (Graphics g, int posX, int posY)
    {
        g.setColor(colorFairway);
        g.fillRect(posX+position.x, posY+position.y, size.x, size.y);

    };


    /**
     * Bewegung des Balls: Test ob Kollision
     */
    void collisionDetection (Ball aBall, int posX, int posY)
    {
//        System.out.println("Collision Detection in Fairway, Ball: ("+aBall.getPosX()+","+aBall.getPosY()+"), Faiway: ("+(posX+this.position.x)+","+(posY+this.position.y)+","+(posX+this.position.x+size.x)+","+(posY+this.position.y+size.y)+")");
        // test ob auf Grundboden, für Geschwindigkeit
        if ((aBall.getPosX() >= Math.min((posX+this.position.x),(posX+this.position.x+this.size.x))) &
            (aBall.getPosX() <= Math.max((posX+this.position.x),(posX+this.position.x+this.size.x))) &
            (aBall.getPosY() >= Math.min((posY+this.position.y),(posY+this.position.y+this.size.y))) &
            (aBall.getPosY() <= Math.max((posY+this.position.y),(posY+this.position.y+this.size.y)))
            ) {
            // reduziere Geschwindigkeit
//            System.out.println("Collision Detected in Fairway, Reduce speed");
            aBall.setSpeed (aBall.getSpeed() - myFriction);
        };
    };

};