package com.brackeen.javagamebook.shooter3D;

import com.brackeen.javagamebook.math3D.*;
import com.brackeen.javagamebook.game.*;

/**
    Obiekt klasy GameObject, który może skakać.
*/
public class JumpingGameObject extends GameObject {

    public static final float DEFAULT_JUMP_HEIGHT = 64;

    protected float jumpVelocity;

    public JumpingGameObject(PolygonGroup group) {
        super(group);
        setJumpHeight(DEFAULT_JUMP_HEIGHT);
    }

    /**
        Ustawia wysokość, na jaką ten obiekt GameObject może podskoczyć.
    */
    public void setJumpHeight(float jumpHeight) {
        jumpVelocity =
            Physics.getInstance().getJumpVelocity(jumpHeight);
    }


    /**
        Powoduje skok tego obiektu GameObject, jeśli ustawiona jest jego
        flaga skakania i obiekt aktualnie nie skacze.
    */
    public void setJumping(boolean isJumping) {
        if (isJumping() != isJumping) {
            super.setJumping(isJumping);
            if (isJumping) {
                Physics.getInstance().jump(this, jumpVelocity);
            }
        }
    }


    public void notifyFloorCollision() {
        // obiekt wylądował
        setJumping(false);
    }

}
