DDSkill.java 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package org.leumasjaffe.charsheet.model.skill;
  2. import org.leumasjaffe.charsheet.model.observable.IntValue;
  3. import org.leumasjaffe.observer.Observable;
  4. import lombok.AccessLevel;
  5. import lombok.AllArgsConstructor;
  6. import lombok.Data;
  7. import lombok.EqualsAndHashCode;
  8. import lombok.Getter;
  9. import lombok.experimental.Delegate;
  10. import lombok.Setter;
  11. import lombok.experimental.FieldDefaults;
  12. @AllArgsConstructor @Data @EqualsAndHashCode(callSuper=false)
  13. @FieldDefaults(level=AccessLevel.PRIVATE)
  14. public class DDSkill extends Observable.Instance {
  15. final @Getter(AccessLevel.NONE) @Delegate DDSkillPrototype name;
  16. // boolean isClassSkill = false;
  17. @Setter(value=AccessLevel.PRIVATE) IntValue ranks = new IntValue(0); // CC skills are 2/1 point, you cannot have half-ranks
  18. // This would be 2x ranks if cross-class, 1x if class.
  19. // Unless you gain it as a class skill later, in which case it might be in-between
  20. @Setter(value=AccessLevel.PRIVATE) int pointsSpent = 0;
  21. public DDSkill(String name) {
  22. this(new DDSkillPrototype(name));
  23. }
  24. public DDSkill(DDSkillPrototype proto) {
  25. this.name = proto;
  26. }
  27. public void spendPoints(int ranks, boolean isCC) {
  28. this.ranks.value(this.ranks.value() + ranks);
  29. this.pointsSpent += (ranks * (isCC ? 2 : 1));
  30. }
  31. }