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

57 lines
1.9 KiB
Java
Raw Normal View History

2021-11-14 15:37:01 +01:00
package io.gitlab.jfronny.respackopts.model.tree;
2021-06-10 13:10:12 +02:00
import io.gitlab.jfronny.commons.serialize.databind.api.SerializeWithAdapter;
2023-09-22 19:19:55 +02:00
import io.gitlab.jfronny.libjf.config.api.v2.dsl.CategoryBuilder;
2023-02-23 18:15:37 +01:00
import io.gitlab.jfronny.muscript.data.dynamic.DBool;
2021-10-21 18:06:09 +02:00
import io.gitlab.jfronny.respackopts.Respackopts;
2022-08-28 20:06:59 +02:00
import io.gitlab.jfronny.respackopts.RespackoptsConfig;
import io.gitlab.jfronny.respackopts.gson.entry.BooleanEntrySerializer;
import io.gitlab.jfronny.respackopts.gson.entry.ConfigBranchSerializer;
import java.util.Objects;
@SerializeWithAdapter(adapter = BooleanEntrySerializer.class)
2023-08-14 17:04:59 +02:00
public class ConfigBooleanEntry extends ConfigEntry<Boolean> implements DBool {
2021-06-10 13:10:12 +02:00
public ConfigBooleanEntry(boolean v) {
2021-10-21 18:45:31 +02:00
super(Boolean.class);
2021-06-10 14:55:03 +02:00
setValue(v);
setDefault(v);
2021-06-10 14:55:03 +02:00
}
2021-06-10 19:26:59 +02:00
@Override
public ConfigEntry<Boolean> clone() {
2021-06-10 19:26:59 +02:00
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
2022-08-28 20:06:59 +02:00
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());
}
2021-06-10 13:10:12 +02:00
}