- Adding purchase restrictions for Quest Pet based on the user's level

This commit is contained in:
Sol
2014-09-17 03:04:52 +00:00
parent 6d0f1364be
commit ba3b6cbce0
8 changed files with 32 additions and 11 deletions

View File

@@ -144,7 +144,14 @@ public class ViewStall extends JPanel {
} }
final QuestAssets qS = qData.getAssets(); final QuestAssets qS = qData.getAssets();
this.lblStats.setText("Credits: " + qS.getCredits() + " Life: " + qS.getLife(qData.getMode())); StringBuilder sb = new StringBuilder();
sb.append("Credits: ");
sb.append(qS.getCredits());
sb.append(" Life: ");
sb.append(qS.getLife(qData.getMode()));
sb.append(" Level: ");
sb.append(qData.getLevel());
this.lblStats.setText(sb.toString());
final List<IQuestBazaarItem> items = qData.getBazaar().getItems(qData, this.stall.getName()); final List<IQuestBazaarItem> items = qData.getBazaar().getItems(qData, this.stall.getName());

View File

@@ -302,7 +302,7 @@ public class QuestController {
* @return the rank * @return the rank
*/ */
public String getRank() { public String getRank() {
return getRank(this.model.getAchievements().getLevel()); return getRank(getLevel());
} }
public String getRank(int level) { public String getRank(int level) {
@@ -312,6 +312,10 @@ public class QuestController {
return QuestController.RANK_TITLES[level]; return QuestController.RANK_TITLES[level];
} }
public int getLevel() {
return this.model.getAchievements().getLevel();
}
/** /**
* TODO: Write javadoc for this method. * TODO: Write javadoc for this method.
* *

View File

@@ -17,6 +17,7 @@
*/ */
package forge.quest.bazaar; package forge.quest.bazaar;
import forge.quest.QuestController;
import forge.quest.data.QuestAssets; import forge.quest.data.QuestAssets;
/** /**
@@ -78,7 +79,7 @@ public interface IQuestBazaarItem extends Comparable<Object> {
* <code>false</code> if the item should not be displayed in store * <code>false</code> if the item should not be displayed in store
* since, for example, prerequisites are not met * since, for example, prerequisites are not met
*/ */
boolean isAvailableForPurchase(QuestAssets questAssets); boolean isAvailableForPurchase(QuestAssets questAssets, QuestController qCtrl);
/** /**
* Executed when the item is bought. * Executed when the item is bought.

View File

@@ -164,7 +164,7 @@ public class QuestBazaarManager {
QuestAssets qA = FModel.getQuest().getAssets(); QuestAssets qA = FModel.getQuest().getAssets();
for (final IQuestBazaarItem purchasable : itemsOnStalls.get(stallName)) { for (final IQuestBazaarItem purchasable : itemsOnStalls.get(stallName)) {
if (purchasable.isAvailableForPurchase(qA)) { if (purchasable.isAvailableForPurchase(qA, qCtrl)) {
ret.add(purchasable); ret.add(purchasable);
} }
} }

View File

@@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import forge.assets.FSkinProp; import forge.assets.FSkinProp;
import forge.quest.QuestController;
import forge.quest.data.QuestAssets; import forge.quest.data.QuestAssets;
/** /**
@@ -118,11 +119,13 @@ public class QuestItemBasic implements IQuestBazaarItem {
* isAvailableForPurchase. * isAvailableForPurchase.
* </p> * </p>
* *
*
* @param qA the q a * @param qA the q a
* @param qCtrl
* @return a boolean. * @return a boolean.
*/ */
@Override @Override
public boolean isAvailableForPurchase(final QuestAssets qA) { public boolean isAvailableForPurchase(final QuestAssets qA, QuestController qCtrl) {
return qA.getItemLevel(itemType) < maxLevel; return qA.getItemLevel(itemType) < maxLevel;
} }

View File

@@ -17,6 +17,7 @@
*/ */
package forge.quest.bazaar; package forge.quest.bazaar;
import forge.quest.QuestController;
import forge.quest.data.QuestAssets; import forge.quest.data.QuestAssets;
/** /**
@@ -39,8 +40,8 @@ public class QuestItemCharmOfVigor extends QuestItemBasic {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final boolean isAvailableForPurchase(QuestAssets qA) { public final boolean isAvailableForPurchase(QuestAssets qA, QuestController qCtrl) {
return super.isAvailableForPurchase(qA); return super.isAvailableForPurchase(qA, qCtrl);
} }

View File

@@ -17,6 +17,7 @@
*/ */
package forge.quest.bazaar; package forge.quest.bazaar;
import forge.quest.QuestController;
import forge.quest.data.QuestAssets; import forge.quest.data.QuestAssets;
/** /**
@@ -39,8 +40,8 @@ public class QuestItemZeppelin extends QuestItemBasic {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final boolean isAvailableForPurchase(QuestAssets qA) { public final boolean isAvailableForPurchase(QuestAssets qA, QuestController qCtrl) {
return super.isAvailableForPurchase(qA) && qA.hasItem(QuestItemType.MAP); return super.isAvailableForPurchase(qA, qCtrl) && qA.hasItem(QuestItemType.MAP);
} }

View File

@@ -25,6 +25,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import forge.item.PaperToken; import forge.item.PaperToken;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.quest.QuestController;
import forge.quest.data.QuestAssets; import forge.quest.data.QuestAssets;
/** /**
@@ -234,12 +235,15 @@ public class QuestPetController implements IQuestBazaarItem {
* <p> * <p>
* isAvailableForPurchase. * isAvailableForPurchase.
* </p> * </p>
*
* @param qA quest assets * @param qA quest assets
* @param qCtrl
* @return a boolean. * @return a boolean.
*/ */
@Override @Override
public boolean isAvailableForPurchase(final QuestAssets qA) { public boolean isAvailableForPurchase(final QuestAssets qA, QuestController qCtrl) {
return this.getPetLevel(qA) < this.getMaxLevel(); return this.getPetLevel(qA) < this.getMaxLevel() &&
(qCtrl == null || qCtrl.getLevel() >= this.getPetLevel(qA));
} }
/** /**