package uulm.teamname.marvelous.gamelibrary.entities; import java.util.Objects; /** Represents a stat property of a {@link Character}. */ public class Stat { /** The {@link StatType} of the stat */ public final StatType type; /** The maximum value of the stat */ public final int max; /** The current value of the stat */ private int value; /** * Constructs a new {@link Stat} with the initial value set to the maximum value. * @param type The {@link StatType} of the stat * @param max The maximum value of the stat */ public Stat(StatType type, int max) { this.type = type; this.max = max; this.value = max; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public void increaseValue(int value) { this.value += value; } public void decreaseValue(int value) { this.value -= value; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Stat stat = (Stat) o; return max == stat.max && value == stat.value && type == stat.type; } @Override public int hashCode() { return Objects.hash(type, max, value); } @Override public String toString() { return "Stat{" + "type=" + type + ", max=" + max + ", value=" + value + '}'; } }