From 73d5dbdd348b792ccef588c656588285df6b1c59 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 5 May 2017 17:37:21 -0400 Subject: [PATCH] Implemented hiscore and hiscore display --- core/src/io/anuke/mindustry/Control.java | 3 +++ core/src/io/anuke/mindustry/GameState.java | 10 +++++++++ core/src/io/anuke/mindustry/Input.java | 2 -- core/src/io/anuke/mindustry/UI.java | 8 +++++-- core/src/io/anuke/mindustry/Vars.java | 5 ++++- core/src/io/anuke/mindustry/World.java | 1 + .../io/anuke/mindustry/ui/LevelDialog.java | 22 ++++++++++++++----- 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/core/src/io/anuke/mindustry/Control.java b/core/src/io/anuke/mindustry/Control.java index a26d145b14..f087a8d7fc 100644 --- a/core/src/io/anuke/mindustry/Control.java +++ b/core/src/io/anuke/mindustry/Control.java @@ -43,6 +43,9 @@ public class Control extends RendererModule{ Settings.loadAll("io.anuke.moment"); + for(String map : maps) + Settings.defaults("hiscore"+map, 0); + Sounds.setFalloff(9000f); player = new Player(); diff --git a/core/src/io/anuke/mindustry/GameState.java b/core/src/io/anuke/mindustry/GameState.java index f5d1a1e3c6..7278fac4d8 100644 --- a/core/src/io/anuke/mindustry/GameState.java +++ b/core/src/io/anuke/mindustry/GameState.java @@ -29,6 +29,8 @@ public class GameState{ player.heal(); Inventory.clearItems(); spawnpoints.clear(); + respawntime = -1; + hiscore = false; ui.updateItems(); ui.updateWeapons(); @@ -89,6 +91,14 @@ public class GameState{ wave ++; + int last = Settings.getInt("hiscore"+maps[currentMap]); + + if(wave > last){ + Settings.putInt("hiscore"+maps[currentMap], wave); + Settings.save(); + hiscore = true; + } + wavetime = waveSpacing(); } diff --git a/core/src/io/anuke/mindustry/Input.java b/core/src/io/anuke/mindustry/Input.java index 06f23b0f8b..078f8e03e6 100644 --- a/core/src/io/anuke/mindustry/Input.java +++ b/core/src/io/anuke/mindustry/Input.java @@ -4,7 +4,6 @@ import static io.anuke.mindustry.Vars.*; import com.badlogic.gdx.Input.Buttons; -import io.anuke.mindustry.ai.Pathfind; import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.world.Tile; @@ -97,7 +96,6 @@ public class Input{ Effects.effect("break", tile.entity); Effects.shake(3f, 1f); tile.setBlock(Blocks.air); - Pathfind.updatePath(); breaktime = 0f; Sounds.play("break"); } diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index 6f8ffbf509..7afc88e1df 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -129,6 +129,10 @@ public class UI extends SceneModule{ public Dialog show(Scene scene){ super.show(scene); restart.content().clearChildren(); + if(hiscore){ + restart.content().add("[YELLOW]New highscore!").pad(6); + restart.content().row(); + } restart.content().add("You lasted until wave [GREEN]" + wave + "[].").pad(6); restart.pack(); return this; @@ -379,14 +383,14 @@ public class UI extends SceneModule{ new label("Respawning in"){{ get().update(()->{ - get().setText("[crimson]Respawning in " + (int)(respawntime/60)); + get().setText("[yellow]Respawning in " + (int)(respawntime/60)); }); get().setFontScale(0.75f); }}; visible(()->{ - return respawntime > 0; + return respawntime > 0 && playing; }); }}; }}.end(); diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 5ad6df2757..8f566e512e 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -19,7 +19,7 @@ public class Vars{ public static final float wavespace = 20*60; public static final float enemyspawnspace = 65; public static final float breakduration = 30; - public static boolean debug = true; + public static boolean debug = false; public static final Vector2 vector = new Vector2(); @@ -39,10 +39,13 @@ public class Vars{ public static final String[] maps = {"delta", "canyon", "pit", "maze"}; public static Pixmap[] mapPixmaps; public static Texture[] mapTextures; + public static int currentMap; public static int worldsize = 128; public static int pixsize = worldsize*tilesize; public static Tile[][] tiles = new Tile[worldsize][worldsize]; + public static boolean hiscore = false; + public static Recipe recipe; public static int rotation; diff --git a/core/src/io/anuke/mindustry/World.java b/core/src/io/anuke/mindustry/World.java index 4ea2f91c40..5f0ae0fe42 100644 --- a/core/src/io/anuke/mindustry/World.java +++ b/core/src/io/anuke/mindustry/World.java @@ -52,6 +52,7 @@ public class World{ worldsize = size; pixsize = worldsize*tilesize; tiles = new Tile[worldsize][worldsize]; + currentMap = id; for(int x = 0; x < worldsize; x ++){ for(int y = 0; y < worldsize; y ++){ diff --git a/core/src/io/anuke/mindustry/ui/LevelDialog.java b/core/src/io/anuke/mindustry/ui/LevelDialog.java index e128bfc7cf..e88b7bb6b4 100644 --- a/core/src/io/anuke/mindustry/ui/LevelDialog.java +++ b/core/src/io/anuke/mindustry/ui/LevelDialog.java @@ -6,21 +6,24 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.GameState; import io.anuke.mindustry.World; -import io.anuke.ucore.scene.ui.ButtonGroup; -import io.anuke.ucore.scene.ui.Dialog; -import io.anuke.ucore.scene.ui.ImageButton; +import io.anuke.ucore.core.Settings; +import io.anuke.ucore.scene.ui.*; public class LevelDialog extends Dialog{ + Label[] scores = new Label[maps.length]; private int selectedMap; public LevelDialog(){ super("Level Select"); setup(); + + shown(()->{ + for(int i = 0; i < maps.length; i ++) + scores[i].setText("High Score: [lime]" + Settings.getInt("hiscore"+maps[i])); + }); } void setup(){ - ButtonGroup mapgroup = new ButtonGroup<>(); - addCloseButton(); getButtonTable().addButton("Play", ()->{ hide(); @@ -28,6 +31,8 @@ public class LevelDialog extends Dialog{ GameState.play(); }); + ButtonGroup mapgroup = new ButtonGroup<>(); + for(int i = 0; i < maps.length; i ++){ content().add(maps[i]); } @@ -44,5 +49,12 @@ public class LevelDialog extends Dialog{ image.getImageCell().size(150, 150); content().add(image).size(180); } + + content().row(); + + for(int i = 0; i < maps.length; i ++){ + scores[i] = new Label(""); + content().add(scores[i]); + } } }