package com.example.happy_bird;

import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.image.BufferedImage;

public class PipeTop {
    //global variables
    private Image topPipe;
    private int xLoc = 0, yLoc = 0;

    public PipeTop(int initialWidth, int initialHeight) {
        topPipe = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/tube_top.png"));
        scaleTopPipe(initialWidth, initialHeight);
    }

    /**
     * Methode zum Skalieren des topPipe-Sprites in die gewünschten Dimensionen
     * @param width Die gewünschte Breite der topPipe
     * @param height Die gewünschte Höhe der topPipe
     */
    public void scaleTopPipe(int width, int height) {
        topPipe = topPipe.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    }

    /**
     * Getter-Methode für das TopPipe-Objekt.
     * @return-Image
     */
    public Image getPipe() {
        return topPipe;
    }

    /**
     * Methode zum Abrufen der Breite des TopPipe-Objekts
     * @return int
     */
    public int getWidth() {
        return topPipe.getWidth(null);
    }

    /**
     * Methode, um die Höhe des TopPipe-Objekts zu erhalten
     * @return int
     */
    public int getHeight() {
        return topPipe.getHeight(null);
    }

    /**
     * Methode zum Festlegen der x-Position des TopPipe-Objekts
     * @param x
     */
    public void setX(int x) {
        xLoc = x;
    }

    /**
     * Methode zum Abrufen der x-Position des TopPipe-Objekts
     * @return int
     */
    public int getX() {
        return xLoc;
    }

    /**
     * Methode zum Festlegen der y-Position des TopPipe-Objekts
     * @param y
     */
    public void setY(int y) {
        yLoc = y;
    }

    /**
     * Methode zum Abrufen der y-Position des TopPipe-Objekts
     * @return int
     */
    public int getY() {
        return yLoc;
    }

    /**
     * Methode zum Erfassen eines Rechtecks, das das Bild der TopPipe umreißt
     * @return Rechteck, das die Position der TopPipe auf dem Bildschirm umreißt
     */
    public Rectangle getRectangle() {
        return (new Rectangle(xLoc, yLoc, topPipe.getWidth(null), topPipe.getHeight(null)));
    }

    /**
     * Methode zum Erfassen eines BufferedImage, das das Bildobjekt der TopPipe darstellt
     * @return BufferedImage-Objekt von TopPipe
     */
    public BufferedImage getBI() {
        BufferedImage bi = new BufferedImage(topPipe.getWidth(null), topPipe.getHeight(null), BufferedImage.TYPE_INT_ARGB);
        Graphics g = bi.getGraphics();
        g.drawImage(topPipe, 0, 0, null);
        g.dispose();
        return bi;
    }
}