// TODO: Available dots limit max. value public SpiritFormAttribute(IGenericTrait baseTrait, final ICharacterModelContext charContext) { ITraitContext context = charContext.getTraitContext(); ITraitTemplate template = SimpleTraitTemplate.createStaticLimitedTemplate(1, 12); TraitRules traitRules = new TraitRules(baseTrait.getType(), template, context.getLimitationContext()); IValueChangeChecker incrementChecker = new IValueChangeChecker() { @Override public boolean isValidNewValue(int value) { return value != spiritTrait.getCurrentValue() && !charContext.getBasicCharacterContext().isExperienced(); } }; spiritTrait = new DefaultTrait(traitRules, context, incrementChecker); spiritTrait.addCurrentValueListener( new IIntValueChangedListener() { @Override public void valueChanged(int newValue) { SpiritFormAttribute.this.newValue = newValue; } }); }
@Override public void recalculate() { spiritTrait.setCurrentValue(newValue); }