Skip to content

Commit

Permalink
add dependency for individual strokes
Browse files Browse the repository at this point in the history
  • Loading branch information
Wyvest committed Jun 22, 2024
1 parent 967f488 commit 8579919
Showing 1 changed file with 25 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;

@Mixin(value = Config.class, remap = false)
public class ConfigMixin {
Expand All @@ -36,18 +35,41 @@ private void capture(Object instance, Class<?> targetClass, OptionPage page, Mod
@ModifyVariable(method = "generateOptionList(Ljava/lang/Object;Ljava/lang/Class;Lcc/polyfrost/oneconfig/config/elements/OptionPage;Lcc/polyfrost/oneconfig/config/data/Mod;Z)V", at = @At(value = "LOAD", ordinal = 0), name = "field")
private Field generate(Field field) {
if (field.isAnnotationPresent(ColorEntry.class)) {
addOptions(page, field, instance);
glintColorizer$addOptions(page, field, instance);
}
return field;
}

@Unique
private void addOptions(OptionPage page, Field field, Object instance) {
private void glintColorizer$addOptions(OptionPage page, Field field, Object instance) {
ColorEntry annotation = field.getAnnotation(ColorEntry.class);
ColorSettings colorSettings = (ColorSettings) ConfigUtils.getField(field, instance);
BasicOption strokeOne = null;
BasicOption strokeTwo = null;
BasicOption individualStrokes = null;
for (BasicOption option : glintColorizer$getClassOptions(colorSettings)) {
if (option.getField().getName().equals("strokeOneColor")) strokeOne = option;
if (option.getField().getName().equals("strokeTwoColor")) strokeTwo = option;
if (option.getField().getName().equals("individualStrokes")) individualStrokes = option;
ConfigUtils.getSubCategory(page, annotation.category(), option.subcategory).options.add(option);
}
if (strokeOne != null && strokeTwo != null && individualStrokes != null) {
BasicOption finalIndividualStrokes = individualStrokes;
strokeOne.addDependency(individualStrokes.name, () -> {
try {
return (boolean) finalIndividualStrokes.get();
} catch (IllegalAccessException ignored) {
return true;
}
});
strokeTwo.addDependency(individualStrokes.name, () -> {
try {
return (boolean) finalIndividualStrokes.get();
} catch (IllegalAccessException ignored) {
return true;
}
});
}
}

@Unique
Expand Down

0 comments on commit 8579919

Please sign in to comment.