diff options
| author | ilotterytea <iltsu@alright.party> | 2024-06-08 16:30:25 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2024-06-09 19:27:32 +0500 |
| commit | 604832dddef852a0a874b9dfbf3540a8a56736c0 (patch) | |
| tree | 07604a0be9258f2c7568ad64d9dc0c7160b227f6 /core/src/kz/ilotterytea/maxon/screens | |
| parent | dc99bd738b1a4b38112f767c3253724d0ff0587c (diff) | |
feat/upd: new savegame loader + updated constructors
Diffstat (limited to 'core/src/kz/ilotterytea/maxon/screens')
5 files changed, 46 insertions, 62 deletions
diff --git a/core/src/kz/ilotterytea/maxon/screens/GameScreen.java b/core/src/kz/ilotterytea/maxon/screens/GameScreen.java index 649cd1e..6922077 100644 --- a/core/src/kz/ilotterytea/maxon/screens/GameScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/GameScreen.java @@ -26,11 +26,10 @@ import kz.ilotterytea.maxon.inputprocessors.CrossProcessor; import kz.ilotterytea.maxon.player.DecalPlayer; import kz.ilotterytea.maxon.player.MaxonItem; import kz.ilotterytea.maxon.player.MaxonItemRegister; -import kz.ilotterytea.maxon.player.MaxonSavegame; +import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.screens.game.shop.ShopUI; import kz.ilotterytea.maxon.ui.*; import kz.ilotterytea.maxon.utils.math.Math; -import kz.ilotterytea.maxon.utils.serialization.GameDataSystem; import com.rafaskoberg.gdx.typinglabel.TypingLabel; import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute; import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute; @@ -48,11 +47,10 @@ import java.util.Map; public class GameScreen implements Screen, InputProcessor { final MaxonGame game; - final int slotId; final long playTimestamp; boolean isShopping = false, isInventoryEnabled = false; - MaxonSavegame player; + private Savegame savegame; Stage stage; private Skin skin, uiSkin; @@ -82,13 +80,10 @@ public class GameScreen implements Screen, InputProcessor { private ArrayList<Decal> decals; private DecalPlayer decalPlayer; - private final MaxonSavegame savegame; + public GameScreen() { + this.savegame = Savegame.load(); - public GameScreen(MaxonGame game, MaxonSavegame sav, int slotId) throws IOException, ClassNotFoundException { - this.savegame = sav; - - this.game = game; - this.slotId = slotId; + this.game = MaxonGame.getInstance(); this.playTimestamp = System.currentTimeMillis(); create3D(); @@ -97,7 +92,7 @@ public class GameScreen implements Screen, InputProcessor { decals = new ArrayList<>(); TextureRegion[] playerTextureRegions = SpriteUtils.splitToTextureRegions(game.assetManager.get("sprites/sheet/loadingCircle.png", Texture.class), 112, 112, 10, 5); - decalPlayer = new DecalPlayer(sav, playerTextureRegions); + decalPlayer = new DecalPlayer(savegame, playerTextureRegions); decals.add(decalPlayer.getDecal()); playlist = new Playlist( @@ -109,7 +104,6 @@ public class GameScreen implements Screen, InputProcessor { playlist.setShuffleMode(true); if (game.prefs.getBoolean("music", true)) playlist.next(); - player = sav; items = new ArrayList<>(); createStageUI(); @@ -122,7 +116,7 @@ public class GameScreen implements Screen, InputProcessor { Timer.schedule(new Timer.Task() { @Override public void run() { - GameDataSystem.save(player, "latest.sav"); + savegame.save(); } }, 10, 10); @@ -135,9 +129,9 @@ public class GameScreen implements Screen, InputProcessor { multiplier += item.multiplier; } - player.points += multiplier; + savegame.increaseMoney(multiplier); - final TypingLabel label = new TypingLabel(game.locale.FormattedText("game.newPoint", MaxonConstants.DECIMAL_FORMAT.format(player.multiplier)), skin, "default"); + final TypingLabel label = new TypingLabel(game.locale.FormattedText("game.newPoint", MaxonConstants.DECIMAL_FORMAT.format(savegame.getMultiplier())), skin, "default"); label.setPosition( maxon.getX(), @@ -193,14 +187,14 @@ public class GameScreen implements Screen, InputProcessor { case 0: int randPoints = Math.getRandomNumber(150, 3000); label.setText(game.locale.FormattedText("gifts.points", String.valueOf(randPoints))); - player.points += randPoints; + savegame.increaseMoney(randPoints); break; // Multiplier case 1: int randMp = Math.getRandomNumber(1, 10); label.setText(game.locale.FormattedText("gifts.multiplier", String.valueOf(randMp))); - player.multiplier += randMp; + savegame.increaseMoney(randMp); break; @@ -210,7 +204,7 @@ public class GameScreen implements Screen, InputProcessor { assert MaxonItemRegister.get(randPet) != null; String name = MaxonItemRegister.get(randPet).name; label.setText(game.locale.FormattedText("gifts.new_pet", name)); - player.inv.add(randPet); + savegame.getPurchasedPets().add(randPet); if (invItems.containsKey(randPet)) { invItems.put(randPet, invItems.get(randPet) + 1); } else { @@ -348,7 +342,7 @@ public class GameScreen implements Screen, InputProcessor { p_item.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - if (player.points < item.price) { + if (savegame.getMoney() < item.price) { notEnoughPointsDialog.show(stage); Timer.schedule(new Timer.Task() { @@ -361,9 +355,9 @@ public class GameScreen implements Screen, InputProcessor { return; } - player.points -= item.price; - player.multiplier += item.multiplier; - player.inv.add(item.id); + savegame.decreaseMoney(item.price); + savegame.increaseMultiplier(item.multiplier); + savegame.getPurchasedPets().add(item.id); if (invItems.containsKey(item.id)) { invItems.put(item.id, invItems.get(item.id) + 1); @@ -454,11 +448,10 @@ public class GameScreen implements Screen, InputProcessor { @Override public boolean keyDown(int keycode) { if (Gdx.input.isKeyPressed(Input.Keys.ESCAPE)) { - player.lastTimestamp = System.currentTimeMillis(); - player.elapsedTime = (System.currentTimeMillis() - playTimestamp) + player.elapsedTime; - GameDataSystem.save(player, String.format("0%s.maxon", (slotId >= 0) ? slotId : "latest")); + savegame.setElapsedTime((System.currentTimeMillis() - playTimestamp) + savegame.getElapsedTime()); + savegame.save(); - game.setScreen(new MenuScreen(game)); + game.setScreen(new MenuScreen()); dispose(); } //if (Gdx.input.isKeyPressed(Input.Keys.SPACE) || Gdx.input.isKeyPressed(Input.Keys.UP)) { @@ -471,9 +464,9 @@ public class GameScreen implements Screen, InputProcessor { cat.nextFrame(); maxon.setDrawable(cat.getDrawable()); - player.points += player.multiplier; + savegame.increaseMoney(savegame.getMultiplier()); - final TypingLabel label = new TypingLabel(game.locale.FormattedText("game.newPoint", MaxonConstants.DECIMAL_FORMAT.format(player.multiplier)), skin, "default"); + final TypingLabel label = new TypingLabel(game.locale.FormattedText("game.newPoint", MaxonConstants.DECIMAL_FORMAT.format(savegame.getMultiplier())), skin, "default"); label.setPosition( maxon.getX(), diff --git a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java index 9d7fec8..032e9d3 100644 --- a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java @@ -21,10 +21,9 @@ import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.utils.viewport.ScreenViewport; import kz.ilotterytea.maxon.MaxonConstants; import kz.ilotterytea.maxon.MaxonGame; -import kz.ilotterytea.maxon.player.MaxonSavegame; +import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.ui.*; import kz.ilotterytea.maxon.utils.I18N; -import kz.ilotterytea.maxon.utils.serialization.GameDataSystem; import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute; import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute; import net.mgsx.gltf.scene3d.lights.DirectionalShadowLight; @@ -42,13 +41,14 @@ public class MenuScreen implements Screen { private final Stage stage; private final Music menuMusic; - MaxonSavegame sav; + private final Savegame savegame; private SceneManager sceneManager; private PerspectiveCamera camera; - public MenuScreen(final MaxonGame game) { - this.game = game; + public MenuScreen() { + this.game = MaxonGame.getInstance(); + this.savegame = Savegame.load(); // Stage and skin: this.stage = new Stage(new ScreenViewport()); @@ -62,8 +62,6 @@ public class MenuScreen implements Screen { Skin friendsSkin = game.assetManager.get("sprites/gui/friends.skin", Skin.class); - sav = GameDataSystem.load("00.maxon"); - // Main Menu music: this.menuMusic = game.assetManager.get("mus/menu/mus_menu_loop.ogg", Music.class); menuMusic.setLooping(true); @@ -199,7 +197,7 @@ public class MenuScreen implements Screen { game.prefs.putString("lang", fhNext.nameWithoutExtension()); game.prefs.flush(); - game.setScreen(new SplashScreen(game)); + game.setScreen(new SplashScreen()); menuMusic.stop(); } }); @@ -279,7 +277,7 @@ public class MenuScreen implements Screen { // - - - Savegame - - - Table savegameTable = new Table(); - SavegameWidget info = new SavegameWidget(this.game, uiSkin, stage, sav); + SavegameWidget info = new SavegameWidget(this.game, uiSkin, stage, savegame); savegameTable.add(info).minSize(640f, 240f); @@ -355,7 +353,7 @@ public class MenuScreen implements Screen { PointLightEx signLight = new PointLightEx(); - if (sav != null) { + if (!savegame.isNewlyCreated()) { signLight.set(Color.PINK, new Vector3(2f, 6f, 2f), 80f, 100f); } diff --git a/core/src/kz/ilotterytea/maxon/screens/SplashScreen.java b/core/src/kz/ilotterytea/maxon/screens/SplashScreen.java index f381bb8..a4b56eb 100644 --- a/core/src/kz/ilotterytea/maxon/screens/SplashScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/SplashScreen.java @@ -27,8 +27,8 @@ public class SplashScreen implements Screen { private boolean assetsLoaded = false; - public SplashScreen(MaxonGame game) { - this.game = game; + public SplashScreen() { + this.game = MaxonGame.getInstance(); this.stage = new Stage(new ScreenViewport()); this.skin = new Skin(Gdx.files.internal("MainSpritesheet.skin")); @@ -65,7 +65,7 @@ public class SplashScreen implements Screen { @Override public boolean act(float v) { AssetLoading.registerItems(game.assetManager, game.locale); - game.setScreen(new MenuScreen(game)); + game.setScreen(new MenuScreen()); dispose(); return false; } diff --git a/core/src/kz/ilotterytea/maxon/screens/WelcomeScreen.java b/core/src/kz/ilotterytea/maxon/screens/WelcomeScreen.java index 34c75fd..4c88a4b 100644 --- a/core/src/kz/ilotterytea/maxon/screens/WelcomeScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/WelcomeScreen.java @@ -19,7 +19,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.viewport.ScreenViewport; import kz.ilotterytea.maxon.MaxonGame; -import kz.ilotterytea.maxon.player.MaxonSavegame; import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute; import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute; import net.mgsx.gltf.scene3d.lights.DirectionalShadowLight; @@ -29,8 +28,6 @@ import net.mgsx.gltf.scene3d.scene.SceneAsset; import net.mgsx.gltf.scene3d.scene.SceneManager; import net.mgsx.gltf.scene3d.utils.IBLBuilder; -import java.io.IOException; - public class WelcomeScreen implements Screen { private final MaxonGame game = MaxonGame.getInstance(); @@ -176,11 +173,7 @@ public class WelcomeScreen implements Screen { new Action() { @Override public boolean act(float delta) { - try { - game.setScreen(new GameScreen(game, new MaxonSavegame(), 0)); - } catch (IOException | ClassNotFoundException e) { - throw new RuntimeException(e); - } + game.setScreen(new GameScreen()); return true; } } 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 43b66c8..67f2c11 100644 --- a/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java +++ b/core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java @@ -9,7 +9,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; import kz.ilotterytea.maxon.player.MaxonItem; import kz.ilotterytea.maxon.player.MaxonItemRegister; -import kz.ilotterytea.maxon.player.MaxonSavegame; +import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.ui.PurchaseItem; import kz.ilotterytea.maxon.utils.formatters.NumberFormatter; import kz.ilotterytea.maxon.utils.math.Math; @@ -25,12 +25,12 @@ public class ShopUI { private ShopMode mode; private ShopMultiplier multiplier; - private final MaxonSavegame savegame; + private final Savegame savegame; private Label pointsLabel, multiplierLabel; private final ArrayList<PurchaseItem> purchaseItems = new ArrayList<>(); - public ShopUI(final MaxonSavegame savegame, Stage stage, Skin skin, TextureAtlas atlas) { + public ShopUI(final Savegame savegame, Stage stage, Skin skin, TextureAtlas atlas) { this.savegame = savegame; this.skin = skin; @@ -61,7 +61,7 @@ public class ShopUI { pointsTable.align(Align.left); Image pointsImage = new Image(this.atlas.findRegion("points")); - this.pointsLabel = new Label(String.valueOf(savegame.points), this.skin); + this.pointsLabel = new Label(String.valueOf(savegame.getMoney()), this.skin); pointsLabel.setAlignment(Align.left); pointsTable.add(pointsImage).size(64f, 64f).padRight(15f); @@ -74,7 +74,7 @@ public class ShopUI { multiplierTable.align(Align.left); Image multiplierImage = new Image(this.atlas.findRegion("multiplier")); - this.multiplierLabel = new Label(String.format("%s/s", savegame.multiplier), this.skin); + this.multiplierLabel = new Label(String.format("%s/s", savegame.getMultiplier()), this.skin); multiplierLabel.setAlignment(Align.left); multiplierTable.add(multiplierImage).size(64f, 64f).padRight(15f); @@ -185,14 +185,14 @@ public class ShopUI { } if (mode == ShopMode.BUY) { - savegame.points -= (long) purchaseItem.getPrice(); + savegame.decreaseMoney(purchaseItem.getPrice()); for (int i = 0; i < multiplier.getMultiplier(); i++) { - savegame.inv.add(purchaseItem.getItem().id); + savegame.getPurchasedPets().add(purchaseItem.getItem().id); } } else { - savegame.points += (long) purchaseItem.getPrice(); + savegame.increaseMoney(purchaseItem.getPrice()); for (int i = 0; i < multiplier.getMultiplier(); i++) { - savegame.inv.remove(Integer.valueOf(purchaseItem.getItem().id)); + savegame.getPurchasedPets().remove(Integer.valueOf(purchaseItem.getItem().id)); } } } @@ -215,7 +215,7 @@ public class ShopUI { private void updatePurchaseItems() { for (final PurchaseItem item : this.purchaseItems) { - int amount = (int) savegame.inv.stream().filter(c -> c == item.getItem().id).count(); + int amount = (int) savegame.getPurchasedPets().stream().filter(c -> c == item.getItem().id).count(); double price = item.getItem().price * java.lang.Math.pow(1.15f, amount + multiplier.getMultiplier()); if (mode == ShopMode.SELL) { @@ -225,7 +225,7 @@ public class ShopUI { item.setPrice(price); if (mode == ShopMode.BUY) { - if (price > savegame.points || savegame.points - price < 0) { + if (price > savegame.getMoney() || savegame.getMoney() - price < 0) { item.setDisabled(true); } else if (item.isDisabled()) { item.setDisabled(false); @@ -241,8 +241,8 @@ public class ShopUI { } public void render() { - this.pointsLabel.setText(NumberFormatter.format(savegame.points)); - this.multiplierLabel.setText(String.format("%s/s", NumberFormatter.format(savegame.multiplier))); + this.pointsLabel.setText(NumberFormatter.format((long) savegame.getMoney())); + this.multiplierLabel.setText(String.format("%s/s", NumberFormatter.format((long) savegame.getMultiplier()))); updatePurchaseItems(); } |
