Respackopts/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBooleanEntry.java

58 lines
1.7 KiB
Java

package io.gitlab.jfronny.respackopts.model.tree;
import io.gitlab.jfronny.muscript.data.dynamic.DBool;
import io.gitlab.jfronny.libjf.config.api.v1.dsl.CategoryBuilder;
import io.gitlab.jfronny.respackopts.Respackopts;
import io.gitlab.jfronny.respackopts.RespackoptsConfig;
import java.util.Objects;
public class ConfigBooleanEntry extends ConfigEntry<Boolean> {
public ConfigBooleanEntry(boolean v) {
super(Boolean.class);
setValue(v);
setDefault(v);
}
@Override
public ConfigEntry<Boolean> clone() {
ConfigBooleanEntry be = new ConfigBooleanEntry(getValue());
be.setDefault(getDefault());
return be;
}
@Override
public void buildShader(StringBuilder sb, String valueName) {
if (getValue()) {
sb.append("\n#define ");
sb.append(valueName);
}
}
@Override
public DBool getDynamic() {
return this::getValue;
}
@Override
public CategoryBuilder<?> buildEntry(GuiEntryBuilderParam args) {
return args.builder().value(args.name(), getDefault(), this::getValue, v -> {
if (getValue() != v) {
if (RespackoptsConfig.debugLogs) Respackopts.LOGGER.info("ConfigBooleanEntry SaveCallback");
args.saveCallback();
}
setValue(v);
});
}
@Override
public boolean equals(Object o) {
return super.equals(o) && o instanceof ConfigBooleanEntry cb && getValue().equals(cb.getValue()) && getDefault().equals(cb.getDefault());
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), getValue(), getDefault());
}
}