package net.puzzlemc.gui.screen.widget;


import net.minecraft.client.gui.components.AbstractSliderButton;
import net.minecraft.network.chat.Component;

public class PuzzleSliderWidget extends AbstractSliderButton {
    private final int min;
    private final int max;
    private final PuzzleWidget.TextAction setComponentAction;
    private final PuzzleWidget.ChangeSliderValueAction changeAction;

    public PuzzleSliderWidget(int min, int max, int x, int y, int width, int height, float defaultValue, PuzzleWidget.TextAction setComponentAction, PuzzleWidget.ChangeSliderValueAction changeAction) {
        super(x,y,width,height, Component.empty(),(defaultValue-min) / (max - min));

        this.min = min;
        this.max = max;

        this.setComponentAction = setComponentAction;
        this.changeAction = changeAction;
        try {
            this.updateMessage();
        } catch (Exception e) {e.fillInStackTrace(); this.visible = false;}
    }
    public int getInt() {
        int difference = max - min;
        int r = (int) (value * difference);
        return r + min;
    }
    public void setInt(int v) {
        value = value / v - value * min;
    }

    @Override
    protected void updateMessage() {
        this.setComponentAction.setTitle(this);
    }

    @Override
    protected void applyValue() {
        this.changeAction.onChange(this);
    }
}
