summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2024-06-11 21:35:55 +0500
committerilotterytea <iltsu@alright.party>2024-06-11 21:35:55 +0500
commit0ebab77637f3f09fb4d0dac50b52981e96c347ae (patch)
treeb2dbeb7c19dbd008a804df847dddf54a52607162 /core
parent8af98ac84fdcef1295fbc82137d6b65a703d4388 (diff)
feat: unlock pets
Diffstat (limited to 'core')
-rw-r--r--core/src/kz/ilotterytea/maxon/pets/PetWidget.java47
-rw-r--r--core/src/kz/ilotterytea/maxon/player/Savegame.java7
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java23
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());