package inf112.fiasko.roborally.objects;

import com.badlogic.gdx.graphics.g2d.TextureRegion;

/**
 * This interface describes an object drawable using libgdx
 */
public interface IDrawableObject {

    /**
     * Gets the texture to use for drawing the object
     * @return The texture of the object
     */
    TextureRegion getTexture();

    /**
     * Gets the x position the object should be drawn on
     *
     * The x position should be in terms of the actual pixel position on the rendered game, not the position according
     * to the game tile. E.g. (128,64) not (2,1).
     *
     * @return An x position libgdx
     */
    int getXPosition();

    /**
     * Gets the y position the object should be drawn on
     *
     * The y position should be in terms of the actual pixel position on the rendered game, not the position according
     * to the game tile. E.g. (128,64) not (2,1).
     *
     * @return An x position libgdx
     */
    int getYPosition();

    /**
     * Gets the width of the object
     * @return A positive integer
     */
    int getWidth();

    /**
     * Gets the height of the object
     * @return A positive integer
     */
    int getHeight();

    /**
     * Gets the number of degrees to rotate the texture counterclockwise when rendering
     * @return An integer
     */
    int getRotation();

    /**
     * Whether to flip the texture on the x-axis when rendering
     * @return True if the texture is to be flipped. False otherwise
     */
    boolean flipX();

    /**
     * Whether to flip the texture on the y-axis when rendering
     * @return True if the texture is to be flipped. False otherwise
     */
    boolean flipY();

}
