package com.github.czyzby.lml.uedi.music.impl;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.math.MathUtils;
import com.github.czyzby.kiwi.util.gdx.preference.ApplicationPreferences;
import com.github.czyzby.lml.uedi.preferences.impl.AbstractPreference;
/** Allows to manage a float value in range of [0, 1].
*
* @author MJ */
public abstract class AbstractPercentPreference extends AbstractPreference {
private float percent;
/** Uses default preferences. */
public AbstractPercentPreference() {
this(ApplicationPreferences.getPreferences());
}
/** @param preferences will be used to store the setting. */
public AbstractPercentPreference(final Preferences preferences) {
super(preferences);
percent = MathUtils.clamp(Float.parseFloat(getValue()), 0f, 1f);
}
@Override
public String getDefault() {
return String.valueOf(1f);
}
@Override
public String setValue(final String value) {
percent = MathUtils.clamp(Float.parseFloat(value), 0f, 1f);
return super.setValue(String.valueOf(percent));
}
/** @param percent will become current setting value. */
public void setPercent(final float percent) {
this.percent = MathUtils.clamp(percent, 0f, 1f);
setValue(String.valueOf(this.percent));
}
/** @return current preference value. */
public float getPercent() {
return percent;
}
}