package de.fau.cs.mad.fly.settings; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Slider; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import de.fau.cs.mad.fly.ui.SkinManager; /** * This class contains a Setting with a {@link Slider} to manage a float value. * * @author Lukas Hahmann <lukas.hahmann@gmail.com> * */ public class FloatSetting extends ChangeListener implements ISetting { private String id; private float value; private SettingManager settingManager; private Slider slider; private String description; private String helpingText; private boolean hidden; private Groups group; /** * Initializes the class with the {@link #id}. Also a {@link Slider} object * and a {@link Label} is created. * * @param settingManager * @param id * @param description * @param value */ public FloatSetting(SettingManager settingManager, String id, String description, float value, float minValue, float maxValue, float stepSize, String helpingText, boolean hidden, Groups group) { this.settingManager = settingManager; this.id = id; this.helpingText = helpingText; this.description = description; this.value = value; slider = new Slider(minValue, maxValue, stepSize, false, SkinManager.getInstance().getSkin()); slider.setValue(value); this.slider.addListener(this); this.hidden = hidden; this.group = group; } /** * Saves the current state in the {@link Preferences} object of * {@link #settingManager}. Also calls .flush() method to save the state * permanently. */ private void save() { settingManager.set(id, value); } @Override public void changed(ChangeEvent event, Actor actor) { value = slider.getValue(); save(); } @Override public String getDescription() { return description; } @Override public Actor getActor() { return slider; } @Override public String getHelpingText() { return helpingText; } @Override public boolean isHidden() { return hidden; } @Override public Groups group() { return group; } }