package br.com.while42.rpgcs.model.equip.weapons.especial; import java.util.HashSet; import java.util.Set; import br.com.while42.rpgcs.R; import br.com.while42.rpgcs.model.HitDice; import br.com.while42.rpgcs.model.equip.weapons.BasicWeapon; import br.com.while42.rpgcs.model.equip.weapons.CategorieEncumbranceWeapon; import br.com.while42.rpgcs.model.equip.weapons.CategorieUsefulnessWeapon; import br.com.while42.rpgcs.model.equip.weapons.CategorieWeapon; import br.com.while42.rpgcs.model.equip.weapons.SizeWeapon; import br.com.while42.rpgcs.model.equip.weapons.TypeWeapon; public class BuilderEspecialWeapon { private String name; private Long cost; private Integer critical; private Integer range; private Double weight; private SizeWeapon size; private HitDice damage; private CategorieWeapon categorie; private Set<TypeWeapon> types = new HashSet<TypeWeapon>();; private CategorieEncumbranceWeapon categorieEncunbrance; private CategorieUsefulnessWeapon categorieUsefulness; public BuilderEspecialWeaponWithName setName(String name) { return new BuilderEspecialWeaponWithName(name); } public class BuilderEspecialWeaponWithName { private BuilderEspecialWeaponWithName(String n) { name = n; } public BuilderEspecialWeaponWithCost setCost(Long cost) { return new BuilderEspecialWeaponWithCost(cost); } } public class BuilderEspecialWeaponWithCost { private BuilderEspecialWeaponWithCost(Long c) { cost = c; } public BuilderEspecialWeaponWithCritical setCritical(Integer critical) { return new BuilderEspecialWeaponWithCritical(critical); } } public class BuilderEspecialWeaponWithCritical { private BuilderEspecialWeaponWithCritical(Integer c) { critical = c; } public BuilderEspecialWeaponWithRange setRangeIncrement(Integer range) { return new BuilderEspecialWeaponWithRange(range); } } public class BuilderEspecialWeaponWithRange { private BuilderEspecialWeaponWithRange(Integer r) { range = r; } public BuilderEspecialWeaponWithWeight setWeight(Double weight) { return new BuilderEspecialWeaponWithWeight(weight); } } public class BuilderEspecialWeaponWithWeight { private BuilderEspecialWeaponWithWeight(Double w) { weight = w; } public BuilderEspecialWeaponWithSize setSize(SizeWeapon size) { return new BuilderEspecialWeaponWithSize(size); } } public class BuilderEspecialWeaponWithSize { private BuilderEspecialWeaponWithSize(SizeWeapon s) { size = s; } public BuilderEspecialWeaponWithType setType(TypeWeapon type) { return new BuilderEspecialWeaponWithType(type); } public BuilderEspecialWeaponWithType setType(Set<TypeWeapon> types) { return new BuilderEspecialWeaponWithType(types); } } public class BuilderEspecialWeaponWithType { private BuilderEspecialWeaponWithType(TypeWeapon t) { types.add(t); } public BuilderEspecialWeaponWithType(Set<TypeWeapon> ts) { types.addAll(ts); } public BuilderEspecialWeaponWithDamage setDamage(HitDice damage) { return new BuilderEspecialWeaponWithDamage(damage); } } public class BuilderEspecialWeaponWithDamage { private BuilderEspecialWeaponWithDamage(HitDice d) { damage = d; } public BuilderEspecialWeaponWithCategorie setCategorie(CategorieWeapon categorie) { return new BuilderEspecialWeaponWithCategorie(categorie); } } public class BuilderEspecialWeaponWithCategorie { private BuilderEspecialWeaponWithCategorie(CategorieWeapon c) { categorie = c; } public BuilderEspecialWeaponWithEncumbrance setCategorieEncumbrance(CategorieEncumbranceWeapon categorieEncunbrance) { return new BuilderEspecialWeaponWithEncumbrance(categorieEncunbrance); } } public class BuilderEspecialWeaponWithEncumbrance { private BuilderEspecialWeaponWithEncumbrance(CategorieEncumbranceWeapon c) { categorieEncunbrance = c; } public BuilderEspecialWeaponWithUsefulness setCategorieUsefulness(CategorieUsefulnessWeapon categorieUsefulness) { return new BuilderEspecialWeaponWithUsefulness(categorieUsefulness); } } public class BuilderEspecialWeaponWithUsefulness { private BuilderEspecialWeaponWithUsefulness(CategorieUsefulnessWeapon c) { categorieUsefulness = c; } public EspecialWeapon toEspecialWeapon() { BasicWeapon base = new BasicWeapon(0, R.drawable.weapon_axe); base.setCost(cost); base.setCritical(critical); base.setRangeIncrement(range); base.setWeight(weight); base.addDamage(size, damage); base.addType(types); base.setCategorie(categorie); base.setCategorieEncumbrance(categorieEncunbrance); base.setCategorieUsefulness(categorieUsefulness); return new EspecialWeapon(name, base); } } }