package com.lateensoft.pathfinder.toolkit.model.character.stats; import android.os.Parcel; import android.os.Parcelable; public class Save implements TypedStat<SaveType>, Parcelable, Comparable<Save> { private final SaveType type; private int m_baseSave; private AbilityType ability; private int m_magicMod; private int m_miscMod; private int m_tempMod; public Save(SaveType saveType) { this(saveType, saveType.getDefaultAbility()); } public Save(SaveType saveKey, AbilityType abilityKey) { this(saveKey, 0, abilityKey, 0, 0, 0); } public Save(SaveType saveKey, int baseSave, AbilityType abilityKey, int magicMod, int miscMod, int tempMod) { type = saveKey; ability = abilityKey; m_baseSave = baseSave; m_magicMod = magicMod; m_miscMod = miscMod; m_tempMod = tempMod; } public Save(Parcel in) { type = SaveType.forKey(in.readInt()); m_baseSave = in.readInt(); ability = AbilityType.forKey(in.readInt()); m_magicMod = in.readInt(); m_miscMod = in.readInt(); m_tempMod = in.readInt(); } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(type.getKey()); out.writeInt(m_baseSave); out.writeInt(ability.getKey()); out.writeInt(m_magicMod); out.writeInt(m_miscMod); out.writeInt(m_tempMod); } @Override public SaveType getType() { return type; } public int getBaseSave() { return m_baseSave; } public void setBaseSave(int baseSave) { m_baseSave = baseSave; } public AbilityType getAbilityType() { return ability; } public int getMagicMod() { return m_magicMod; } public int getMiscMod() { return m_miscMod; } public int getTempMod() { return m_tempMod; } public int getTotal(AbilitySet abilitySet, int maxDex) { int total = 0; total += m_baseSave; total += abilitySet.getTotalAbilityMod(ability, maxDex); total += m_magicMod; total += m_miscMod; total += m_tempMod; return total; } public void setAbilityType(AbilityType abilityType) { ability = abilityType; } public void setMagicMod(int magicMod) { m_magicMod = magicMod; } public void setMiscMod(int miscMod) { m_miscMod = miscMod; } public void setTempMod(int tempMod) { m_tempMod = tempMod; } @Override public int describeContents() { return 0; } public static final Parcelable.Creator<Save> CREATOR = new Parcelable.Creator<Save>() { public Save createFromParcel(Parcel in) { return new Save(in); } public Save[] newArray(int size) { return new Save[size]; } }; @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Save)) return false; Save save = (Save) o; if (ability != save.ability) return false; if (m_baseSave != save.m_baseSave) return false; if (m_magicMod != save.m_magicMod) return false; if (m_miscMod != save.m_miscMod) return false; if (type != save.type) return false; if (m_tempMod != save.m_tempMod) return false; return true; } @Override public int hashCode() { int result = type.hashCode(); result = 31 * result + m_baseSave; result = 31 * result + ability.hashCode(); result = 31 * result + m_magicMod; result = 31 * result + m_miscMod; result = 31 * result + m_tempMod; return result; } @Override public int compareTo(Save another) { return this.getType().compareTo(another.getType()); } }