diff options
| author | ilotterytea <iltsu@alright.party> | 2024-06-11 21:35:55 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2024-06-11 21:35:55 +0500 |
| commit | 0ebab77637f3f09fb4d0dac50b52981e96c347ae (patch) | |
| tree | b2dbeb7c19dbd008a804df847dddf54a52607162 /core | |
| parent | 8af98ac84fdcef1295fbc82137d6b65a703d4388 (diff) | |
feat: unlock pets
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/kz/ilotterytea/maxon/pets/PetWidget.java | 47 | ||||
| -rw-r--r-- | core/src/kz/ilotterytea/maxon/player/Savegame.java | 7 | ||||
| -rw-r--r-- | core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java | 23 |
3 files changed, 75 insertions, 2 deletions
diff --git a/core/src/kz/ilotterytea/maxon/pets/PetWidget.java b/core/src/kz/ilotterytea/maxon/pets/PetWidget.java index 41f25dc..1cd815f 100644 --- a/core/src/kz/ilotterytea/maxon/pets/PetWidget.java +++ b/core/src/kz/ilotterytea/maxon/pets/PetWidget.java @@ -1,8 +1,10 @@ package kz.ilotterytea.maxon.pets; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; @@ -16,7 +18,7 @@ public class PetWidget extends Table { private TextTooltip priceTooltip, nameTooltip; private final Pet pet; - private boolean isDisabled = false; + private boolean isDisabled = false, isLocked = false; private final Label.LabelStyle idleStyle, hoverStyle, disabledStyle, availablePriceStyle, disabledPriceStyle; @@ -91,7 +93,7 @@ public class PetWidget extends Table { } public void setPrice(double price) { - if (price == this.price) { + if (price == this.price || isLocked) { return; } @@ -122,6 +124,47 @@ public class PetWidget extends Table { super.setBackground(isDisabled ? "store_item_disabled" : "store_item"); } + public void setLocked(boolean locked) { + isLocked = locked; + + Color color; + String name, nameTooltipText; + + if (isLocked) { + color = Color.BLACK; + name = "???"; + nameTooltipText = "Pet Maxon more to unlock it..."; + + this.priceLabel.setText("???"); + this.priceLabel.clearListeners(); + } else { + color = Color.WHITE; + name = pet.getName(); + nameTooltipText = pet.getDescription(); + + double price = this.price; + this.price = 0; + + this.setPrice(price); + } + + if (color != this.pet.getIcon().getColor()) { + this.pet.getIcon().addAction(Actions.color(color, 0.5f)); + } + + this.nameLabel.setText(name); + + TextTooltip tooltip = new TextTooltip(nameTooltipText, skin); + tooltip.setInstant(true); + + this.nameLabel.clearListeners(); + this.nameLabel.addListener(tooltip); + } + + public boolean isLocked() { + return isLocked; + } + public Pet getPet() { return pet; } diff --git a/core/src/kz/ilotterytea/maxon/player/Savegame.java b/core/src/kz/ilotterytea/maxon/player/Savegame.java index 3e3a2d1..209732d 100644 --- a/core/src/kz/ilotterytea/maxon/player/Savegame.java +++ b/core/src/kz/ilotterytea/maxon/player/Savegame.java @@ -9,6 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; +import java.util.ArrayList; import java.util.HashMap; public class Savegame implements Serializable { @@ -26,6 +27,7 @@ public class Savegame implements Serializable { private double money, multiplier; private final HashMap<String, Integer> purchasedPets = new HashMap<>(); + private final ArrayList<String> unlockedPets = new ArrayList<>(); private String name; private long elapsedTime; private boolean isNewlyCreated; @@ -84,6 +86,7 @@ public class Savegame implements Serializable { money = 0.0f; multiplier = 0.0f; purchasedPets.clear(); + unlockedPets.clear(); name = System.getProperty("user.name", "Maxon"); elapsedTime = 0; isNewlyCreated = true; @@ -125,6 +128,10 @@ public class Savegame implements Serializable { return purchasedPets; } + public ArrayList<String> getUnlockedPets() { + return unlockedPets; + } + public String getName() { return name; } diff --git a/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java b/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java index 71af190..1ee7a90 100644 --- a/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java +++ b/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java @@ -292,6 +292,29 @@ public class ShopUI { private void updatePurchaseItems() { for (final PetWidget widget : this.petWidgets) { + if (!savegame.getUnlockedPets().contains(widget.getPet().getId())) { + double price = widget.getPrice() / 4.0f; + double price2 = widget.getPrice() / 1.5f; + + if (!widget.isLocked()) { + widget.setLocked(true); + } + + widget.setDisabled(true); + + if (price > savegame.getMoney()) { + widget.setVisible(false); + } else if (price < savegame.getMoney() && price2 > savegame.getMoney()){ + widget.setVisible(true); + } else { + widget.setVisible(true); + widget.setLocked(false); + savegame.getUnlockedPets().add(widget.getPet().getId()); + } + + continue; + } + int amount = savegame.getPurchasedPets().getOrDefault(widget.getPet().getId(), 0); double price = widget.getPet().getPrice() * java.lang.Math.pow(1.15f, amount + multiplier.getMultiplier()); |
