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;
public enum Type {
Shop,
Loot,
@@ -87,6 +88,7 @@ public class RewardScene extends UIScene {
super.disconnected(controller);
updateDetailButton();
}
private void updateDetailButton() {
detailButton.setVisible(Controllers.getCurrent() != null);
detailButton.layout();
@@ -98,24 +100,16 @@ public class RewardScene extends UIScene {
if (selectable == null)
return;
RewardActor actor;
if(selectable.actor instanceof BuyButton)
{
actor= ((BuyButton) selectable.actor).reward;
}
else if (selectable.actor instanceof RewardActor)
{
if (selectable.actor instanceof BuyButton) {
actor = ((BuyButton) selectable.actor).rewardActor;
} else if (selectable.actor instanceof RewardActor) {
actor = (RewardActor) selectable.actor;
}
else
{
} else {
return;
}
if(actor.toolTipIsVisible())
{
if (actor.toolTipIsVisible()) {
actor.hideTooltip();
}
else
{
} else {
if (!actor.isFlipped())
actor.showTooltip();
}
@@ -144,13 +138,16 @@ public class RewardScene extends UIScene {
}
Forge.switchToLast();
}
public void reactivateInputs() {
Gdx.input.setInputProcessor(stage);
doneButton.toFront();
}
public boolean done() {
return done(false);
}
boolean done(boolean skipShowLoot) {
GameHUD.getInstance().getTouchpad().setVisible(false);
if (!skipShowLoot) {
@@ -174,6 +171,7 @@ public class RewardScene extends UIScene {
quitScene();
return true;
}
void clearGenerated() {
for (Actor actor : new Array.ArrayIterator<>(generated)) {
if (!(actor instanceof RewardActor)) {
@@ -187,7 +185,8 @@ public class RewardScene extends UIScene {
reward.clearHoldToolTip();
try {
stage.getActors().removeValue(reward, true);
} catch (Exception e) {}
} catch (Exception e) {
}
}
}
@@ -298,17 +297,25 @@ public class RewardScene extends UIScene {
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) {
clearSelectable();
this.type = type;
doneClicked = false;
updateCollectionPool();
if (type == Type.Shop) {
this.shopActor = shopActor;
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)) {
actor.remove();
@@ -325,9 +332,7 @@ public class RewardScene extends UIScene {
shopNameLabel.setVisible(true);
shopNameLabel.setText("[%?SHINY]{GRADIENT}" + shopName + "{ENDGRADIENT}");
shopNameLabel.skipToTheEnd();
}
else
{
} else {
shopNameLabel.setVisible(false);
}
Actor background = ui.findActor("market_background");
@@ -367,8 +372,7 @@ public class RewardScene extends UIScene {
if (shopActor.canRestock()) {
restockButton.setVisible(true);
}
else{
} else {
restockButton.setVisible(false);
restockButton.setDisabled(true);
}
@@ -464,21 +468,12 @@ public class RewardScene extends UIScene {
if (currentRow != ((i + 1) / numberOfColumns))
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);
if (!skipCard) {
stage.addActor(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 {
addToSelectable(actor);
}
@@ -502,21 +497,37 @@ public class RewardScene extends UIScene {
}
}
}
private class BuyButton extends TextraButton {
private final int objectID;
private final int index;
public RewardActor reward;
public RewardActor rewardActor;
private Reward reward;
int price;
void update() {
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());
this.objectID = id;
this.index = i;
reward = actor;
rewardActor = actor;
this.reward = reward;
setHeight(style.getHeight());
setWidth(actor.getWidth());
setX(actor.getX());
@@ -525,6 +536,7 @@ public class RewardScene extends UIScene {
price *= Current.player().goldModifier();
price *= shopModifier;
setText(price + " [+Gold]");
updateOwned();
addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
@@ -533,17 +545,18 @@ public class RewardScene extends UIScene {
changes.buyCard(objectID, index);
Current.player().takeGold(price);
Current.player().addReward(reward.getReward());
Current.player().addReward(rewardActor.getReward());
Gdx.input.vibrate(5);
SoundSystem.instance.play(SoundEffectType.FlipCoin, false);
updateBuyButtons();
if (changes == null)
return;
setDisabled(true);
reward.sold();
rewardActor.sold();
getColor().a = 0.5f;
updateCollectionPool();
updateBuyButtons();
setText("SOLD");
removeListener(this);
}