package joshie.progression.player.data;
import joshie.progression.network.core.PacketNBT.INBTWritable;
import net.minecraft.nbt.NBTTagCompound;
import static joshie.progression.player.data.AbilityStats.SpeedType.*;
public class AbilityStats implements INBTWritable<AbilityStats> {
public enum SpeedType {
LAND, AIR, WATER;
}
private float airSpeed = 1F;
private float landSpeed = 1F;
private float waterSpeed = 1F;
private float stepAssist = 0.5F;
private int fallDamage;
public float getSpeed(SpeedType type) {
return type == LAND ? landSpeed : type == AIR ? airSpeed : waterSpeed;
}
public float getStepAssist() {
return stepAssist;
}
public void addStepAssist(float newStat) {
this.stepAssist = newStat;
}
public void setSpeed(SpeedType type, float speed) {
if (type == LAND) landSpeed = speed;
if (type == AIR) airSpeed = speed;
if (type == WATER) waterSpeed = speed;
}
public int getFallDamagePrevention() {
return fallDamage;
}
public void setFallDamagePrevention(int fallDamage) {
this.fallDamage = fallDamage;
}
@Override
public AbilityStats readFromNBT(NBTTagCompound tag) {
if (tag.hasKey("Speed")) landSpeed = tag.getFloat("Speed");
else landSpeed = tag.getFloat("SpeedLand");
airSpeed = tag.getFloat("SpeedAir");
waterSpeed = tag.getFloat("SpeedWater");
stepAssist = tag.getFloat("StepAssist");
fallDamage = tag.getInteger("FallDamage");
return this;
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
tag.setFloat("SpeedLand", landSpeed);
tag.setFloat("SpeedAir", airSpeed);
tag.setFloat("SpeedWater", waterSpeed);
tag.setFloat("StepAssist", stepAssist);
tag.setInteger("FallDamage", fallDamage);
return tag;
}
}