package br.com.while42.rpgcs.model.character;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import br.com.while42.rpgcs.model.HitDice;
import br.com.while42.rpgcs.model.equip.weapons.SizeWeapon;
import br.com.while42.rpgcs.model.equip.weapons.TypeWeapon;
import br.com.while42.rpgcs.model.equip.weapons.Weapon;
import br.com.while42.rpgcs.model.equip.weapons.especial.EspecialWeapon;
public class Attack implements Serializable {
private static final long serialVersionUID = 1L;
private Weapon weapon;
private SizeWeapon size;
private String observation;
public Attack(Weapon weapon, SizeWeapon size, Abilities abilities) {
this.weapon = weapon;
this.size = size;
this.observation = new String();
}
public Attack(EspecialWeapon especialWeapon, Abilities abilities) {
this.weapon = especialWeapon;
this.size = especialWeapon.getSize();
this.observation = new String();
}
public Weapon getWeapon() {
return weapon;
}
public List<HitDice> getDamage() {
return weapon.getDamage(size);
}
public Set<TypeWeapon> getType() {
return weapon.getType();
}
public String getObservation() {
return observation;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof Attack))
return false;
Attack attk = (Attack) o;
return weapon.equals(attk.weapon) &&
size.equals(attk.size) &&
observation.equals(attk.observation);
}
@Override
public int hashCode() {
return weapon.hashCode() + size.hashCode() + observation.hashCode();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" weapon: ").append(weapon.toString());
sb.append(" size: ").append(size);
sb.append(" observation: ").append(observation);
return sb.toString();
}
}