|
|
@@ -8,6 +8,7 @@ import java.awt.GridBagConstraints;
|
|
|
import java.awt.Color;
|
|
|
import javax.swing.border.LineBorder;
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.config.Constants;
|
|
|
import org.leumasjaffe.charsheet.model.Ability;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
|
import org.leumasjaffe.charsheet.observer.helper.AbilModStringify;
|
|
|
@@ -33,6 +34,7 @@ public class InitiativeLine extends JPanel {
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
IndirectObservableListener<JTextField, DDCharacter> ttlObserver;
|
|
|
ObservableListener<JTextField, Ability.Scores> dexObserver;
|
|
|
+ ObservableListener<JTextField, DDCharacter> tempObserver;
|
|
|
|
|
|
public InitiativeLine() {
|
|
|
setOpaque(false);
|
|
|
@@ -127,16 +129,28 @@ public class InitiativeLine extends JPanel {
|
|
|
ttlObserver = new IndirectObservableListener<>(total,
|
|
|
(c, v) -> {
|
|
|
final int adex = v.getAbilities().getDex().modifier();
|
|
|
- c.setText(StringHelper.toString( adex ));
|
|
|
+ final int miscValue = getInitiativeBonuses(v);
|
|
|
+ c.setText(StringHelper.toString( adex + miscValue ));
|
|
|
});
|
|
|
dexObserver = new ObservableListener<>(dex,
|
|
|
new AbilModStringify());
|
|
|
+ tempObserver = new ObservableListener<>(misc, (c, v) -> {
|
|
|
+ final int miscValue = getInitiativeBonuses(v);
|
|
|
+ c.setText(StringHelper.toString(miscValue));
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getInitiativeBonuses(DDCharacter v) {
|
|
|
+ // FIXME
|
|
|
+ return v.getFeatureBonuses(Constants.INITIATIVE).stream()
|
|
|
+ .mapToInt(f -> (Integer) f.value()).sum();
|
|
|
}
|
|
|
|
|
|
public void setModel(DDCharacter model) {
|
|
|
final Ability.Scores dex = model.getAbilities().getDex();
|
|
|
- ttlObserver.setObserved(model, dex);
|
|
|
+ ttlObserver.setObserved(model, model, dex);
|
|
|
dexObserver.setObserved(dex);
|
|
|
+ tempObserver.setObserved(model);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -144,5 +158,6 @@ public class InitiativeLine extends JPanel {
|
|
|
super.removeNotify();
|
|
|
ObserverDispatch.unsubscribeAll(ttlObserver);
|
|
|
ObserverDispatch.unsubscribeAll(dexObserver);
|
|
|
+ ObserverDispatch.unsubscribeAll(tempObserver);
|
|
|
}
|
|
|
}
|