summaryrefslogtreecommitdiff
path: root/core/src/kz/ilotterytea/maxon/screens
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2024-06-10 00:04:33 +0500
committerilotterytea <iltsu@alright.party>2024-06-10 00:04:33 +0500
commit5bb8db06b01524bee613776cb9896a85ecbe2862 (patch)
tree035ea25b3c6ea6e0f793ec570805975ff9c0a147 /core/src/kz/ilotterytea/maxon/screens
parent8833419a56c090fc357ee483556428196d26ed67 (diff)
feat: render pet bros
Diffstat (limited to 'core/src/kz/ilotterytea/maxon/screens')
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java
index 49dc09e..0ff5eaf 100644
--- a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java
+++ b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java
@@ -9,6 +9,7 @@ import com.badlogic.gdx.graphics.g3d.decals.CameraGroupStrategy;
import com.badlogic.gdx.graphics.g3d.decals.Decal;
import com.badlogic.gdx.graphics.g3d.decals.DecalBatch;
import com.badlogic.gdx.math.Interpolation;
+import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
@@ -24,6 +25,7 @@ import kz.ilotterytea.maxon.anim.SpriteUtils;
import kz.ilotterytea.maxon.audio.Playlist;
import kz.ilotterytea.maxon.inputprocessors.CrossProcessor;
import kz.ilotterytea.maxon.pets.Pet;
+import kz.ilotterytea.maxon.pets.PetManager;
import kz.ilotterytea.maxon.player.DecalPlayer;
import kz.ilotterytea.maxon.player.MaxonItem;
import kz.ilotterytea.maxon.player.MaxonItemRegister;
@@ -83,6 +85,8 @@ public class GameScreen implements Screen, InputProcessor {
private ArrayList<Decal> decals;
private DecalPlayer decalPlayer;
+ private float elapsedTime = 0.0f;
+
private final ArrayList<Timer.Task> tasks = new ArrayList<>();
public GameScreen() {
@@ -190,6 +194,42 @@ public class GameScreen implements Screen, InputProcessor {
this.decalBatch.add(decal);
}
+ // - - - R E N D E R I N G P E T S - - -
+ ArrayList<Decal> petDecals = new ArrayList<>();
+
+ // Getting the pet decals
+ for (String id : savegame.getPurchasedPets().keySet()) {
+ PetManager petManager = game.getPetManager();
+ Optional<Pet> pet = petManager.getPet(id);
+
+ if (pet.isEmpty()) {
+ continue;
+ }
+
+ int amount = savegame.getPurchasedPets().get(id);
+
+ for (int i = 0; i < amount; i++) {
+ Decal decal = pet.get().getDecal();
+ petDecals.add(Decal.newDecal(decal.getWidth(), decal.getHeight(), decal.getTextureRegion()));
+ }
+ }
+
+ elapsedTime += delta;
+
+ // Rendering the pet decals
+ for (int i = 0; i < petDecals.size(); i++) {
+ Decal decal = petDecals.get(i);
+
+ float angle = elapsedTime + (i * MathUtils.PI2 / petDecals.size());
+ float radius = 2.0f;
+ float x = MathUtils.cos(angle) * radius;
+ float z = MathUtils.sin(angle) * radius;
+
+ decal.setPosition(decalPlayer.getDecal().getX() + x, 0.5f, decalPlayer.getDecal().getZ() + z);
+ decal.lookAt(this.camera.position, this.camera.up);
+ this.decalBatch.add(decal);
+ }
+
this.decalBatch.flush();
stage.act(delta);