package com.lateensoft.pathfinder.toolkit.model.character.items; import android.os.Parcel; import android.os.Parcelable; public class Weapon extends Item implements Parcelable { private int totalAttackBonus; private String damage; private String critical; private int range; private String specialProperties; private int ammunition; private WeaponType type; private Size size; public Weapon() { super(); totalAttackBonus = 0; damage = ""; critical = "x2"; range = 5; specialProperties = ""; ammunition = 0; type = WeaponType.SLASHING; size = Size.MEDIUM; } public Weapon(String name) { super(name); } public Weapon(Parcel in) { super(in); totalAttackBonus = in.readInt(); damage = in.readString(); critical = in.readString(); range = in.readInt(); specialProperties = in.readString(); ammunition = in.readInt(); type = WeaponType.forKey(in.readString()); size = Size.forKey(in.readString()); } @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeInt(totalAttackBonus); out.writeString(damage); out.writeString(critical); out.writeInt(range); out.writeString(specialProperties); out.writeInt(ammunition); out.writeString(type.getKey()); out.writeString(size.getKey()); } public int getTotalAttackBonus() { return totalAttackBonus; } public void setTotalAttackBonus(int totalAttackBonus) { this.totalAttackBonus = totalAttackBonus; } public String getDamage() { return damage; } public void setDamage(String damage) { this.damage = damage; } public String getCritical() { return critical; } public void setCritical(String critical) { this.critical = critical; } public int getRange() { return range; } public void setRange(int range) { this.range = range; } public String getSpecialProperties() { return specialProperties; } public void setSpecialProperties(String specialProperties) { this.specialProperties = specialProperties; } public int getAmmunition() { return ammunition; } public void setAmmunition(int ammunition) { this.ammunition = ammunition; } public WeaponType getType() { return type; } public void setType(WeaponType type) { this.type = type; } public Size getSize() { return size; } public void setSize(Size size) { this.size = size; } public static final Parcelable.Creator<Weapon> CREATOR = new Parcelable.Creator<Weapon>() { public Weapon createFromParcel(Parcel in) { return new Weapon(in); } public Weapon[] newArray(int size) { return new Weapon[size]; } }; @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Weapon)) return false; if (!super.equals(o)) return false; Weapon weapon = (Weapon) o; if (ammunition != weapon.ammunition) return false; if (range != weapon.range) return false; if (totalAttackBonus != weapon.totalAttackBonus) return false; if (critical != null ? !critical.equals(weapon.critical) : weapon.critical != null) return false; if (damage != null ? !damage.equals(weapon.damage) : weapon.damage != null) return false; if (size != null ? !size.equals(weapon.size) : weapon.size != null) return false; if (specialProperties != null ? !specialProperties.equals(weapon.specialProperties) : weapon.specialProperties != null) return false; if (type != null ? !type.equals(weapon.type) : weapon.type != null) return false; return true; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + totalAttackBonus; result = 31 * result + (damage != null ? damage.hashCode() : 0); result = 31 * result + (critical != null ? critical.hashCode() : 0); result = 31 * result + range; result = 31 * result + (specialProperties != null ? specialProperties.hashCode() : 0); result = 31 * result + ammunition; result = 31 * result + (type != null ? type.hashCode() : 0); result = 31 * result + (size != null ? size.hashCode() : 0); return result; } }