PauseButton.java

package io.github.neonteam10.ui;

import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import io.github.neonteam10.GameLogic;

public class PauseButton extends Table {
    public ImageButton pause;
    private final UiAssets uiAssets;
    private final GameLogic gameLogic;
    private final Table pauseTable;

    public PauseButton(UiAssets uiAssets, GameLogic gameLogic, Table pauseTable) {
        this.uiAssets = uiAssets;
        this.gameLogic = gameLogic;

        this.pauseTable = pauseTable;
    }

    public void act(float delta) {
        super.act(delta);

        if (pause == null && uiAssets.hasSpritesheetLoaded()) {
            pause = new ImageButton(new TextureRegionDrawable(new TextureRegion(uiAssets.getSpritesheet(), 224, 254, 32, 32)));
            pause.getStyle().imageChecked = new TextureRegionDrawable(new TextureRegion(uiAssets.getSpritesheet(), 224, 224, 32, 32));
            pause.setTransform(true);
            pause.setOrigin(Align.center);
            pause.setScale(3);
            pause.setChecked(true);
            pause.addListener(new ClickListener() {
                  @Override
                  public void clicked(InputEvent event, float x, float y) {
                      gameLogic.setPaused(pause.isChecked());
                      pauseTable.setVisible(gameLogic.getPaused());

                  }
              });
            add(pause);
        }
    }

    public void setChecked(boolean checked) {
        if (pause != null) {
            pause.setChecked(checked);
        }
    }
}