update BuyButton for RewardScene

This commit is contained in:
Anthony Calosa
2023-07-29 07:41:44 +08:00
parent f6537fdb1a
commit b1ff117026

View File

@@ -47,6 +47,7 @@ public class RewardScene extends UIScene {
} }
private boolean showTooltips = false; private boolean showTooltips = false;
public enum Type { public enum Type {
Shop, Shop,
Loot, Loot,
@@ -87,6 +88,7 @@ public class RewardScene extends UIScene {
super.disconnected(controller); super.disconnected(controller);
updateDetailButton(); updateDetailButton();
} }
private void updateDetailButton() { private void updateDetailButton() {
detailButton.setVisible(Controllers.getCurrent() != null); detailButton.setVisible(Controllers.getCurrent() != null);
detailButton.layout(); detailButton.layout();
@@ -98,24 +100,16 @@ public class RewardScene extends UIScene {
if (selectable == null) if (selectable == null)
return; return;
RewardActor actor; RewardActor actor;
if(selectable.actor instanceof BuyButton) if (selectable.actor instanceof BuyButton) {
{ actor = ((BuyButton) selectable.actor).rewardActor;
actor= ((BuyButton) selectable.actor).reward; } else if (selectable.actor instanceof RewardActor) {
}
else if (selectable.actor instanceof RewardActor)
{
actor = (RewardActor) selectable.actor; actor = (RewardActor) selectable.actor;
} } else {
else
{
return; return;
} }
if(actor.toolTipIsVisible()) if (actor.toolTipIsVisible()) {
{
actor.hideTooltip(); actor.hideTooltip();
} } else {
else
{
if (!actor.isFlipped()) if (!actor.isFlipped())
actor.showTooltip(); actor.showTooltip();
} }
@@ -144,13 +138,16 @@ public class RewardScene extends UIScene {
} }
Forge.switchToLast(); Forge.switchToLast();
} }
public void reactivateInputs() { public void reactivateInputs() {
Gdx.input.setInputProcessor(stage); Gdx.input.setInputProcessor(stage);
doneButton.toFront(); doneButton.toFront();
} }
public boolean done() { public boolean done() {
return done(false); return done(false);
} }
boolean done(boolean skipShowLoot) { boolean done(boolean skipShowLoot) {
GameHUD.getInstance().getTouchpad().setVisible(false); GameHUD.getInstance().getTouchpad().setVisible(false);
if (!skipShowLoot) { if (!skipShowLoot) {
@@ -174,6 +171,7 @@ public class RewardScene extends UIScene {
quitScene(); quitScene();
return true; return true;
} }
void clearGenerated() { void clearGenerated() {
for (Actor actor : new Array.ArrayIterator<>(generated)) { for (Actor actor : new Array.ArrayIterator<>(generated)) {
if (!(actor instanceof RewardActor)) { if (!(actor instanceof RewardActor)) {
@@ -187,7 +185,8 @@ public class RewardScene extends UIScene {
reward.clearHoldToolTip(); reward.clearHoldToolTip();
try { try {
stage.getActors().removeValue(reward, true); stage.getActors().removeValue(reward, true);
} catch (Exception e) {} } catch (Exception e) {
}
} }
} }
@@ -298,17 +297,25 @@ public class RewardScene extends UIScene {
loadRewards(rewards, type, shopActor); loadRewards(rewards, type, shopActor);
} }
void updateCollectionPool() {
if (Type.Shop != this.type)
return;
if (this.collectionPool == null)
this.collectionPool = new ItemPool<>(PaperCard.class);
else
this.collectionPool.clear();
this.collectionPool.addAllFlat(AdventurePlayer.current().getCollectionCards(true).toFlatList());
}
public void loadRewards(Array<Reward> newRewards, Type type, ShopActor shopActor) { public void loadRewards(Array<Reward> newRewards, Type type, ShopActor shopActor) {
clearSelectable(); clearSelectable();
this.type = type; this.type = type;
doneClicked = false; doneClicked = false;
updateCollectionPool();
if (type == Type.Shop) { if (type == Type.Shop) {
this.shopActor = shopActor; this.shopActor = shopActor;
this.changes = shopActor.getMapStage().getChanges(); this.changes = shopActor.getMapStage().getChanges();
if (this.collectionPool == null) {
this.collectionPool = new ItemPool<>(PaperCard.class);
this.collectionPool.addAllFlat(AdventurePlayer.current().getCollectionCards(true).toFlatList());
}
} }
for (Actor actor : new Array.ArrayIterator<>(generated)) { for (Actor actor : new Array.ArrayIterator<>(generated)) {
actor.remove(); actor.remove();
@@ -325,9 +332,7 @@ public class RewardScene extends UIScene {
shopNameLabel.setVisible(true); shopNameLabel.setVisible(true);
shopNameLabel.setText("[%?SHINY]{GRADIENT}" + shopName + "{ENDGRADIENT}"); shopNameLabel.setText("[%?SHINY]{GRADIENT}" + shopName + "{ENDGRADIENT}");
shopNameLabel.skipToTheEnd(); shopNameLabel.skipToTheEnd();
} } else {
else
{
shopNameLabel.setVisible(false); shopNameLabel.setVisible(false);
} }
Actor background = ui.findActor("market_background"); Actor background = ui.findActor("market_background");
@@ -367,8 +372,7 @@ public class RewardScene extends UIScene {
if (shopActor.canRestock()) { if (shopActor.canRestock()) {
restockButton.setVisible(true); restockButton.setVisible(true);
} } else {
else{
restockButton.setVisible(false); restockButton.setVisible(false);
restockButton.setDisabled(true); restockButton.setDisabled(true);
} }
@@ -464,21 +468,12 @@ public class RewardScene extends UIScene {
if (currentRow != ((i + 1) / numberOfColumns)) if (currentRow != ((i + 1) / numberOfColumns))
yOff += doneButton.getHeight(); yOff += doneButton.getHeight();
BuyButton buyCardButton = new BuyButton(shopActor.getObjectId(), i, actor, doneButton, shopActor.getPriceModifier()); BuyButton buyCardButton = new BuyButton(shopActor.getObjectId(), i, actor, reward, doneButton, shopActor.getPriceModifier());
generated.add(buyCardButton); generated.add(buyCardButton);
if (!skipCard) { if (!skipCard) {
stage.addActor(buyCardButton); stage.addActor(buyCardButton);
addToSelectable(buyCardButton); addToSelectable(buyCardButton);
} }
if (this.collectionPool != null && Reward.Type.Card.equals(reward.getType())) {
int count = collectionPool.count(reward.getCard());
String text = buyCardButton.getTextraLabel().storedText;
buyCardButton.setText("[%75]" + text + "\n" + Forge.getLocalizer().getMessage("lblOwned") + ": " + count);
} else if (Reward.Type.Item.equals(reward.getType())) {
int count = AdventurePlayer.current().countItem(reward.getItem().name);
String text = buyCardButton.getTextraLabel().storedText;
buyCardButton.setText("[%75]" + text + "\n" + Forge.getLocalizer().getMessage("lblOwned") + ": " + count);
}
} else { } else {
addToSelectable(actor); addToSelectable(actor);
} }
@@ -502,21 +497,37 @@ public class RewardScene extends UIScene {
} }
} }
} }
private class BuyButton extends TextraButton { private class BuyButton extends TextraButton {
private final int objectID; private final int objectID;
private final int index; private final int index;
public RewardActor reward; public RewardActor rewardActor;
private Reward reward;
int price; int price;
void update() { void update() {
setDisabled(WorldSave.getCurrentSave().getPlayer().getGold() < price); setDisabled(WorldSave.getCurrentSave().getPlayer().getGold() < price);
updateOwned();
} }
public BuyButton(int id, int i, RewardActor actor, TextraButton style, float shopModifier) { void updateOwned() {
if (Type.Shop != type)
return;
if (collectionPool != null && Reward.Type.Card.equals(reward.getType())) {
int count = collectionPool.count(reward.getCard());
setText("[%75]" + price + " [+Gold]\n" + Forge.getLocalizer().getMessage("lblOwned") + ": " + count);
} else if (Reward.Type.Item.equals(reward.getType())) {
int count = AdventurePlayer.current().countItem(reward.getItem().name);
setText("[%75]" + price + " [+Gold]\n" + Forge.getLocalizer().getMessage("lblOwned") + ": " + count);
}
}
public BuyButton(int id, int i, RewardActor actor, Reward reward, TextraButton style, float shopModifier) {
super("", style.getStyle(), Controls.getTextraFont()); super("", style.getStyle(), Controls.getTextraFont());
this.objectID = id; this.objectID = id;
this.index = i; this.index = i;
reward = actor; rewardActor = actor;
this.reward = reward;
setHeight(style.getHeight()); setHeight(style.getHeight());
setWidth(actor.getWidth()); setWidth(actor.getWidth());
setX(actor.getX()); setX(actor.getX());
@@ -525,6 +536,7 @@ public class RewardScene extends UIScene {
price *= Current.player().goldModifier(); price *= Current.player().goldModifier();
price *= shopModifier; price *= shopModifier;
setText(price + " [+Gold]"); setText(price + " [+Gold]");
updateOwned();
addListener(new ClickListener() { addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@@ -533,17 +545,18 @@ public class RewardScene extends UIScene {
changes.buyCard(objectID, index); changes.buyCard(objectID, index);
Current.player().takeGold(price); Current.player().takeGold(price);
Current.player().addReward(reward.getReward()); Current.player().addReward(rewardActor.getReward());
Gdx.input.vibrate(5); Gdx.input.vibrate(5);
SoundSystem.instance.play(SoundEffectType.FlipCoin, false); SoundSystem.instance.play(SoundEffectType.FlipCoin, false);
updateBuyButtons();
if (changes == null) if (changes == null)
return; return;
setDisabled(true); setDisabled(true);
reward.sold(); rewardActor.sold();
getColor().a = 0.5f; getColor().a = 0.5f;
updateCollectionPool();
updateBuyButtons();
setText("SOLD"); setText("SOLD");
removeListener(this); removeListener(this);
} }