|
|
@@ -3,6 +3,7 @@ package org.leumasjaffe.charsheet.model.features;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
|
|
@@ -19,25 +20,26 @@ public interface DDPropertyChooser {
|
|
|
String getHeader();
|
|
|
default List<String> getChoices() { return Collections.emptyList(); }
|
|
|
public DDProperty get(int selectedIndex);
|
|
|
- default boolean applySideEffects(DDCharacterClass to, int selectedIndex) {
|
|
|
- to.addFeature(get(selectedIndex));
|
|
|
+ default boolean applySideEffects(DDCharacter to, DDCharacterClass toClass, int selectedIndex) {
|
|
|
+ toClass.addFeature(get(selectedIndex));
|
|
|
return true;
|
|
|
}
|
|
|
- default void undoSideEffects(DDCharacterClass to, int selectedIndex) {
|
|
|
- to.removeFeature(get(selectedIndex));
|
|
|
+ default void undoSideEffects(DDCharacter to, DDCharacterClass toClass, int selectedIndex) {
|
|
|
+ toClass.removeFeature(get(selectedIndex));
|
|
|
}
|
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public static class State {
|
|
|
- DDCharacterClass ddCharacter;
|
|
|
+ DDCharacter ddCharacter;
|
|
|
+ DDCharacterClass ddCharacterClass;
|
|
|
DDPropertyChooser chooser;
|
|
|
@NonFinal boolean hasApplied = false;
|
|
|
@NonFinal int previousIndex = -1;
|
|
|
|
|
|
public void apply(int selectedIndex) {
|
|
|
- if (hasApplied) { chooser.undoSideEffects(ddCharacter, previousIndex); }
|
|
|
- hasApplied = chooser.applySideEffects(ddCharacter, previousIndex = selectedIndex);
|
|
|
+ if (hasApplied) { chooser.undoSideEffects(ddCharacter, ddCharacterClass, previousIndex); }
|
|
|
+ hasApplied = chooser.applySideEffects(ddCharacter, ddCharacterClass, previousIndex = selectedIndex);
|
|
|
}
|
|
|
}
|
|
|
}
|