| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package org.leumasjaffe.charsheet.model.skill;
- import org.leumasjaffe.charsheet.model.observable.IntValue;
- import org.leumasjaffe.observer.Observable;
- import lombok.AccessLevel;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
- import lombok.Getter;
- import lombok.experimental.Delegate;
- import lombok.Setter;
- import lombok.experimental.FieldDefaults;
- @AllArgsConstructor @Data @EqualsAndHashCode(callSuper=false)
- @FieldDefaults(level=AccessLevel.PRIVATE)
- public class DDSkill extends Observable.Instance {
- final @Getter(AccessLevel.NONE) @Delegate DDSkillPrototype name;
- // boolean isClassSkill = false;
- @Setter(value=AccessLevel.PRIVATE) IntValue ranks = new IntValue(0); // CC skills are 2/1 point, you cannot have half-ranks
- // This would be 2x ranks if cross-class, 1x if class.
- // Unless you gain it as a class skill later, in which case it might be in-between
- @Setter(value=AccessLevel.PRIVATE) int pointsSpent = 0;
-
- public DDSkill(String name) {
- this(new DDSkillPrototype(name));
- }
-
- public DDSkill(DDSkillPrototype proto) {
- this.name = proto;
- }
-
- public void spendPoints(int ranks, boolean isCC) {
- this.ranks.value(this.ranks.value() + ranks);
- this.pointsSpent += (ranks * (isCC ? 2 : 1));
- }
- }
|