summaryrefslogtreecommitdiff
path: root/core/src/kz/ilotterytea/maxon/screens
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/kz/ilotterytea/maxon/screens')
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/GameScreen.java49
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/MenuScreen.java18
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/SplashScreen.java6
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/WelcomeScreen.java9
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/game/shop/ShopUI.java26
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();
}