63 lines
1.5 KiB
Java
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;
|
|
}
|
|
} |