package fr.whyt.item.extend;
import java.util.List;
import fr.whyt.item.Item;
import fr.whyt.item.components.Currency;
import fr.whyt.item.enums.ConsumableType;
import fr.whyt.item.enums.Flag;
import fr.whyt.item.enums.GameType;
import fr.whyt.item.enums.Rarity;
import fr.whyt.item.enums.Type;
import fr.whyt.item.enums.UnlockType;
import fr.whyt.persona.enums.Restriction;
/**
* H�rite de {@link Item}.<br>
* Repr�sente un objet de type consommable dans le jeu.<br>
* Poss�de un type de consommable, une description, une dur�e, un type de d�v�rouillage,
* un id de couleur et un id de recette.<br>
* @see ConsumableType
* @see UnlockType
* @author WhyT
*/
public class Consumable extends Item {
private final ConsumableType consumableType;
private final String consumableDescription;
private Integer duration;
private final UnlockType unlockType;
private final Long colorID;
private final Long recipeID;
/**
* Cr�e un {@link Item} de type consommable</b>.<br>
* @param id identifiant unique de l'item
* @param name nom de l'item
* @param consumableDescription consumableDescription de l'item
* @param type type de l'item ({@link Type})
* @param rarity raret� de l'item ({@link Rarity})
* @param level niveau de l'item
* @param basePrice prix de l'item � l'achat/vente chez un marchand ({@link Currency})
* @param blPrice prix de l'item � l'achat/vente au lion noir ({@link Currency})
* @param iconFileID id de l'image de l'item
* @param iconFileSignature signature de l'image de l'item
* @param gameType type de jeu de l'item ({@link GameType})
* @param flags drapeaux de l'item ({@link Flag})
* @param restrictions restrictions de personnages de l'item ({@link Restriction})
* @param consumableType type du consommable ({@link ConsumableType})
* @param consumableDescription description du consommable
* @param duration dur�e d'effet du consommable
* @param unlockType type de d�v�rouillage ({@link UnlockType})
* @param colorID ID de la couleur
* @param recipeID ID de la recette
*/
public Consumable(
// Item fields
Long id, String name, String description, Type type, Integer level, Rarity rarity,
Integer basePrice, Integer blPrice, Long iconFileID, String iconFileSignature,
List<GameType> gameType, List<Flag> flags, List<Restriction> restrictions,
// Consumable fields
ConsumableType consumableType, String consumableDescription, Integer duration, UnlockType unlockType,
Long colorID, Long recipeID) {
super(id, name, description, type, level, rarity, basePrice, blPrice,
iconFileID, iconFileSignature, gameType, flags, restrictions);
this.consumableType = consumableType;
this.consumableDescription = consumableDescription;
this.duration = duration;
this.unlockType = unlockType;
this.colorID = colorID;
this.recipeID = recipeID;
}
/* ** Getters ** */
public UnlockType getUnlockType() { return this.unlockType; }
public Long getColorID() { return this.colorID; }
public Long getRecipeID() { return this.recipeID; }
public String getConsumableDescription() { return consumableDescription; }
public Integer getDuration() { return duration; }
public ConsumableType getConsumableType() { return consumableType; }
/* ** Setters ** */
public void setDuration(Integer duration) { this.duration = duration; }
/* ** Overrides ** */
@Override public boolean equals(Object o) { return super.equals(o); }
@Override public String toString() {
return super.toString()
+ "|-----------------------------------"
+ "| " + consumableType + "\n"
+ "| " + consumableDescription + "\n"
+ "| " + duration + "\n"
+ "| " + unlockType + "\n"
+ "| " + colorID + "\n"
+ "| " + recipeID + "\n";
}
}