package br.com.while42.rpgcs.model.character;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import br.com.while42.rpgcs.model.equip.weapons.SizeWeapon;
import br.com.while42.rpgcs.model.equip.weapons.Weapon;
import br.com.while42.rpgcs.model.equip.weapons.especial.EspecialWeapon;
import br.com.while42.rpgcs.model.equip.weapons.munition.Munition;
public class Attacks implements Serializable {
private static final long serialVersionUID = 1L;
private Abilities abilities;
private List<Attack> attks = new ArrayList<Attack>();
private Set<Munition> munitions = new HashSet<Munition>();
public Attacks(Abilities abilities) {
this.abilities = abilities;
}
public void add(Weapon weapon, SizeWeapon size) {
attks.add(new Attack(weapon, size, abilities));
}
public void add(EspecialWeapon especialWeapon) {
attks.add(new Attack(especialWeapon, abilities));
}
public List<Attack> getAttacks() {
return attks;
}
public void add(Munition munition) {
munitions.add(munition);
}
public Set<Munition> getMunitions() {
return munitions;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof Attacks))
return false;
Attacks aks = (Attacks) o;
return abilities.equals(aks.abilities) &&
attks.equals(aks.attks) &&
munitions.equals(aks.munitions);
}
@Override
public int hashCode() {
return abilities.hashCode() + attks.hashCode() + munitions.hashCode();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" attaks: [");
for (Attack a: attks) {
sb.append(a);
}
sb.append("]");
sb.append(" munitions: [");
for (Munition m: munitions) {
sb.append(m);
}
sb.append("]");
return sb.toString();
}
}