package forge.quest.data.pet;
import forge.AllZone;
import forge.Card;
import forge.quest.data.bazaar.QuestStallManager;
import forge.quest.data.bazaar.QuestStallPurchasable;
/**
* <p>Abstract QuestPetAbstract class.</p>
*
* @author Forge
* @version $Id: $
*/
public abstract class QuestPetAbstract implements QuestStallPurchasable {
int level;
private int maxLevel;
private String name;
private String description;
/**
* <p>getPetCard.</p>
*
* @return a {@link forge.Card} object.
*/
public abstract Card getPetCard();
/**
* <p>getAllUpgradePrices.</p>
*
* @return an array of int.
*/
public abstract int[] getAllUpgradePrices();
/**
* <p>getPrice.</p>
*
* @return a int.
*/
public int getPrice() {
return getAllUpgradePrices()[level];
}
/**
* <p>getAllUpgradeDescriptions.</p>
*
* @return an array of {@link java.lang.String} objects.
*/
public abstract String[] getAllUpgradeDescriptions();
/**
* <p>getUpgradeDescription.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getUpgradeDescription() {
return getAllUpgradeDescriptions()[level];
}
/**
* <p>getAllImageNames.</p>
*
* @return an array of {@link java.lang.String} objects.
*/
public abstract String[] getAllImageNames();
/**
* <p>getImageName.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getImageName() {
return getAllImageNames()[level];
}
/**
* <p>getAllStats.</p>
*
* @return an array of {@link java.lang.String} objects.
*/
public abstract String[] getAllStats();
/**
* <p>getStats.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getStats() {
return getAllStats()[level];
}
/**
* <p>getUpgradedStats.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getUpgradedStats() {
return getAllStats()[level + 1];
}
/**
* <p>Getter for the field <code>level</code>.</p>
*
* @return a int.
*/
public int getLevel() {
return level;
}
/**
* <p>incrementLevel.</p>
*/
public void incrementLevel() {
if (level < maxLevel) {
level++;
}
}
/**
* <p>Getter for the field <code>maxLevel</code>.</p>
*
* @return a int.
*/
public int getMaxLevel() {
return maxLevel;
}
/**
* <p>Constructor for QuestPetAbstract.</p>
*
* @param name a {@link java.lang.String} object.
* @param description a {@link java.lang.String} object.
* @param maxLevel a int.
*/
protected QuestPetAbstract(String name, String description, int maxLevel) {
this.description = description;
this.name = name;
this.maxLevel = maxLevel;
}
/**
* <p>Setter for the field <code>level</code>.</p>
*
* @param level a int.
*/
public void setLevel(int level) {
this.level = level;
}
/**
* <p>getPurchaseDescription.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getPurchaseDescription() {
return "<em>" + getDescription() + "</em><br>" + getUpgradeDescription() +
"<br><br><u>Current stats:</u> " + getStats() +
"<br><u>Upgraded stats:</u> " + getUpgradedStats();
}
/**
* <p>Getter for the field <code>description</code>.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getDescription() {
return description;
}
/**
* <p>Getter for the field <code>name</code>.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getName() {
return name;
}
/** {@inheritDoc} */
@Override
public String toString() {
return name;
}
/** {@inheritDoc} */
public int compareTo(Object o) {
return name.compareTo(o.toString());
}
/**
* <p>getPurchaseName.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getPurchaseName() {
return name;
}
/**
* <p>getStallName.</p>
*
* @return a {@link java.lang.String} object.
*/
public String getStallName() {
return QuestStallManager.PET_SHOP;
}
/**
* <p>isAvailableForPurchase.</p>
*
* @return a boolean.
*/
public boolean isAvailableForPurchase() {
QuestPetAbstract pet = AllZone.getQuestData().getPetManager().getPet(name);
if (pet == null) {
return true;
}
return pet.level < pet.getMaxLevel();
}
/**
* <p>onPurchase.</p>
*/
public void onPurchase() {
AllZone.getQuestData().getPetManager().addPetLevel(name);
}
}