Files
MindMotion/src/main/java/net/fretux/mindmotion/player/SanityCapability.java
T

63 lines
1.5 KiB
Java

package net.fretux.mindmotion.player;
public class SanityCapability implements ISanity {
private float sanity = 80f;
private float insanity = 0f;
// Base + bonus so Ascend can modify max
private float baseMaxSanity = 80f;
private float bonusMaxSanity = 0f; // from Ascend willpower etc.
@Override
public float getSanity() {
return sanity;
}
@Override
public void setSanity(float sanity) {
float max = getMaxSanity();
this.sanity = Math.max(0, Math.min(max, sanity));
}
@Override
public float getInsanity() {
return insanity;
}
@Override
public void setInsanity(float insanity) {
float max = getMaxSanity();
this.insanity = Math.max(0, Math.min(max, insanity));
}
@Override
public float getMaxSanity() {
return baseMaxSanity + bonusMaxSanity;
}
@Override
public void addSanity(float amount) {
setSanity(this.sanity + amount);
}
@Override
public void reduceSanity(float amount) {
setSanity(this.sanity - amount);
}
public void setBaseMaxSanity(float baseMaxSanity) {
this.baseMaxSanity = baseMaxSanity;
setSanity(this.sanity);
setInsanity(this.insanity);
}
public void setBonusMaxSanity(float bonusMaxSanity) {
this.bonusMaxSanity = Math.max(0f, bonusMaxSanity);
setSanity(this.sanity);
setInsanity(this.insanity);
}
public float getBonusMaxSanity() {
return bonusMaxSanity;
}
}