From 2f092604a3102912edfa61072491ca3df648a3e2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 24 Sep 2017 12:20:43 -0400 Subject: [PATCH] More UI changes, made weapons usable, fixed ammo for turret types --- core/assets-raw/ui/button-map-down.9.png | Bin 213 -> 205 bytes core/assets-raw/ui/button-map-over.9.png | Bin 212 -> 205 bytes core/assets-raw/ui/button-map.9.png | Bin 205 -> 197 bytes core/assets-raw/ui/button-select.9.png | Bin 175 -> 175 bytes core/assets-raw/ui/icon-play.png | Bin 0 -> 169 bytes core/assets/ui/uiskin.atlas | 111 ++++++++++-------- core/assets/ui/uiskin.png | Bin 13000 -> 12967 bytes core/src/io/anuke/mindustry/Control.java | 40 ++++--- core/src/io/anuke/mindustry/EffectLoader.java | 7 ++ core/src/io/anuke/mindustry/Mindustry.java | 3 +- core/src/io/anuke/mindustry/UI.java | 48 ++++++-- core/src/io/anuke/mindustry/Vars.java | 2 + .../anuke/mindustry/entities/BulletType.java | 9 +- .../anuke/mindustry/input/AndroidInput.java | 6 - .../anuke/mindustry/input/GestureHandler.java | 7 +- core/src/io/anuke/mindustry/input/Input.java | 3 +- .../world/blocks/ProductionBlocks.java | 2 + .../mindustry/world/blocks/WeaponBlocks.java | 10 +- .../mindustry/world/blocks/types/Drill.java | 1 - 19 files changed, 156 insertions(+), 93 deletions(-) create mode 100644 core/assets-raw/ui/icon-play.png diff --git a/core/assets-raw/ui/button-map-down.9.png b/core/assets-raw/ui/button-map-down.9.png index b34035f63c775fcc47c0e3d1c1fca44934266788..2b8810da55573d6c478b98a363e97af79ac5f9dc 100644 GIT binary patch delta 149 zcmcc0c$RU3Lp`U20GCD-@0>OU28J9@7srr@!^tTMynoyu8w;(TII*#@@!{!pd;as7 zu-N2HmY6B=g2hc&NqR$qrzZ~xu&&-WG4(-lORHWpevabja**5MmIO9wHb;Cv5-=^*UC&9bR@tXajE%qi-?uVJh7#OAm3$cqRyUG9^z~JfX=d#Wz Gp$Py$nm>{N diff --git a/core/assets-raw/ui/button-map-over.9.png b/core/assets-raw/ui/button-map-over.9.png index 02b2542e97511d9db1b057639f13614a32cfbf39..aae6c254f3ee60c6174017088cfa2aa191e7d4b8 100644 GIT binary patch delta 149 zcmcb@c$RU3Lp`U20GC3@HIXe03=BD*E{-7)hm%tjc>lORHWpevabja*USrpjqri)-aGg== uJ$P|}^u5l;hxZ?R# delta 156 zcmX@hc!hC-Lp`goxRvD(*KbS=3=GAdE{-7)hm%tjc>lORHWpevabja*G)GzC#S1BSiOP&qwv}BxZ^bH2rQ8>b^+uUw zU0mS`XMD-OZn$Xs+g)eldfDzOyp|8VB`?*x_#vYxgJF%}!?I~hPXX;`@O1TaS?83{ F1OUELK|BBe diff --git a/core/assets-raw/ui/button-map.9.png b/core/assets-raw/ui/button-map.9.png index 0162270254981f7dff2f88743b4444b1cb563b66..9e899d721e26cbbe85ab645e2ec8a35a28656bc3 100644 GIT binary patch delta 141 zcmX@hc$9I1Lp`U202lXfwlg!1?q&bc=s!e{*3bd0lMsviOb$?}00000NkvXXu0mjf Df?z+- diff --git a/core/assets-raw/ui/button-select.9.png b/core/assets-raw/ui/button-select.9.png index 4d793ce8fef15f15a59f9c26cbd2b072b24e0037..21fe14ac54f9e436587c9cef54bc45c93d6a8b7d 100644 GIT binary patch delta 86 zcmZ3_xSnx>gE^;!0Hc}nw+cN51_nP*7sn8fs<}DUedWOl#{SzX qZfa~+jStfWxwmyZFPuHGTty_@lh6PESE&a;oeZ9?elF{r5}E+`ULKwR delta 86 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 spawns = new Array<>(); int wave = 1; float wavetime; + float extrawavetime; int enemies = 0; float respawntime; @@ -79,7 +80,8 @@ public class Control extends Module{ "down", Keys.S, "right", Keys.D, "rotate", Keys.R, - "menu", Gdx.app.getType() == ApplicationType.Android ? Keys.BACK : Keys.ESCAPE + "menu", Gdx.app.getType() == ApplicationType.Android ? Keys.BACK : Keys.ESCAPE, + "pause", Keys.SPACE ); Settings.loadAll("io.anuke.moment"); @@ -127,6 +129,7 @@ public class Control extends Module{ ); + //TODO remove this debugging for(int i = 1; i < 60; i ++){ UCore.log("\n\n--WAVE " + i); printEnemies(i); @@ -143,6 +146,7 @@ public class Control extends Module{ player.weapon = weapons.first(); wave = 1; + extrawavetime = maxwavespace; wavetime = waveSpacing(); Entities.clear(); enemies = 0; @@ -196,6 +200,7 @@ public class Control extends Module{ this.wave = wave; this.wavetime = wavetime; this.enemies = enemies; + this.extrawavetime = maxwavespace; } void runWave(){ @@ -241,6 +246,7 @@ public class Control extends Module{ } wavetime = waveSpacing(); + extrawavetime = maxwavespace; } void printEnemies(int wave){ @@ -320,10 +326,6 @@ public class Control extends Module{ public void update(){ if(debug){ - - if(Inputs.keyUp(Keys.SPACE)) - Effects.sound("shoot", World.core.worldx(), World.core.worldy()); - if(Inputs.keyUp(Keys.O)){ Timers.mark(); SaveIO.write(Gdx.files.local("mapsave.mins")); @@ -339,23 +341,23 @@ public class Control extends Module{ if(Inputs.keyUp(Keys.C)){ for(Entity entity : Entities.all()){ - if(entity instanceof Enemy) + if(entity instanceof Enemy){ entity.remove(); + } } } - if(Inputs.keyDown(Keys.SPACE)){ - Effects.shake(6, 4, Graphics.mouseWorld().x, Graphics.mouseWorld().y); - } - if(Inputs.keyDown(Keys.Y)){ new TestEnemy(0).set(player.x, player.y).add(); } } - if(!GameState.is(State.menu)){ + if(Inputs.keyUp("pause") && (GameState.is(State.paused) || GameState.is(State.playing))){ + GameState.set(GameState.is(State.playing) ? State.paused : State.playing); + } + if(Inputs.keyUp("menu")){ if(GameState.is(State.paused)){ ui.hideMenu(); @@ -381,21 +383,23 @@ public class Control extends Module{ } } + extrawavetime -= delta(); + if(enemies <= 0){ wavetime -= delta(); } - if(wavetime <= 0 || (debug && Inputs.keyUp(Keys.F))){ + if(wavetime <= 0 || (debug && Inputs.keyUp(Keys.F)) || extrawavetime <= 0){ runWave(); } Entities.update(); - - if(!android){ - Input.doInput(); - }else{ - AndroidInput.doInput(); - } + } + + if(!android){ + Input.doInput(); + }else{ + AndroidInput.doInput(); } } } diff --git a/core/src/io/anuke/mindustry/EffectLoader.java b/core/src/io/anuke/mindustry/EffectLoader.java index 54a1f3381e..a9d41e5e53 100644 --- a/core/src/io/anuke/mindustry/EffectLoader.java +++ b/core/src/io/anuke/mindustry/EffectLoader.java @@ -145,6 +145,13 @@ public class EffectLoader{ Draw.reset(); }); + Effects.create("railsmoke", 30, e -> { + Draw.color(Color.LIGHT_GRAY, Color.WHITE, e.ifract()); + float size = e.fract()*4f; + Draw.rect("circle", e.x, e.y, size, size); + Draw.reset(); + }); + Effects.create("spawn", 23, e -> { Draw.thickness(2f); Draw.color(Hue.mix(Color.DARK_GRAY, Color.SCARLET, e.ifract())); diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index 06b1eda379..c98842a851 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -32,8 +32,9 @@ public class Mindustry extends ModuleCore { } if(!GameState.is(State.paused)){ - Inputs.update(); Timers.update(); } + + Inputs.update(); } } diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index 38ddc06645..2230735bc2 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -26,6 +26,7 @@ import io.anuke.ucore.modules.SceneModule; import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.*; import io.anuke.ucore.scene.ui.*; +import io.anuke.ucore.scene.ui.Window.WindowStyle; import io.anuke.ucore.scene.ui.layout.*; import io.anuke.ucore.util.Mathf; @@ -112,6 +113,7 @@ public class UI extends SceneModule{ levels = new LevelDialog(); prefs = new SettingsDialog(); + prefs.setStyle(Core.skin.get("dialog", WindowStyle.class)); menu = new MenuDialog(); @@ -125,6 +127,15 @@ public class UI extends SceneModule{ prefs.checkPref("tutorial", "Show tutorial Window", true); prefs.checkPref("fps", "Show FPS", false); prefs.checkPref("noshadows", "Disable shadows", false); + + prefs.hidden(()->{ + GameState.set(State.playing); + }); + + prefs.shown(()->{ + GameState.set(State.paused); + menu.hide(); + }); keys = new KeybindDialog(); @@ -216,7 +227,9 @@ public class UI extends SceneModule{ ImageButton image = new ImageButton(Draw.region(r.result.name()), "select"); image.clicked(()->{ - if(Inventory.hasItems(r.requirements)){ + if(player.recipe == r){ + player.recipe = null; + }else{ player.recipe = r; updateRecipe(); } @@ -228,8 +241,8 @@ public class UI extends SceneModule{ image.update(()->{ boolean has = Inventory.hasItems(r.requirements); - image.setDisabled(!has); - image.setChecked(player.recipe == r && has); + //image.setDisabled(!has); + image.setChecked(player.recipe == r); //image.setTouchable(has ? Touchable.enabled : Touchable.disabled); image.getImage().setColor(has ? Color.WHITE : Color.GRAY); }); @@ -283,16 +296,23 @@ public class UI extends SceneModule{ float isize = Unit.dp.inPixels(40); new imagebutton("icon-menu", isize, ()->{ + GameState.set(State.paused); showMenu(); }); new imagebutton("icon-settings", isize, ()->{ + GameState.set(State.paused); prefs.show(); }); new imagebutton("icon-pause", isize, ()->{ //TODO pause - }); + GameState.set(GameState.is(State.paused) ? State.playing : State.paused); + }){{ + get().update(()->{ + get().getStyle().imageUp = Core.skin.getDrawable(GameState.is(State.paused) ? "icon-play" : "icon-pause"); + }); + }}; }}.end(); row(); @@ -306,6 +326,16 @@ public class UI extends SceneModule{ add(fps).size(-1); }}.end(); + + //paused table + new table(){{ + visible(()->GameState.is(State.paused)); + atop(); + + new table("pane"){{ + new label("[orange]< paused >").scale(0.75f).pad(6); + }}.end(); + }}.end(); //wave table... new table(){{ @@ -431,7 +461,7 @@ public class UI extends SceneModule{ scene.add(tools); tools.setVisible(()->{ - return !GameState.is(State.menu) && android && player.recipe != null; + return !GameState.is(State.menu) && android && player.recipe != null && Inventory.hasItems(player.recipe.requirements); }); tools.update(()->{ @@ -488,7 +518,7 @@ public class UI extends SceneModule{ reqlabel.setText(text); }); - requirements.add(reqlabel); + requirements.add(reqlabel).left(); requirements.row(); } @@ -512,7 +542,7 @@ public class UI extends SceneModule{ if(weapon != player.weapon) button.setColor(Color.GRAY); - weapontable.add(button).size(48, 52); + weapontable.add(button).size(52, 56); Table tiptable = new Table(); String description = weapon.description; @@ -532,6 +562,10 @@ public class UI extends SceneModule{ button.addListener(tip); } + + weapontable.addIButton("icon-menu", 8*3, ()->{ + upgrades.show(); + }).size(52, 56); } public void showLoading(){ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 64154783d6..7fad0ae946 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -15,6 +15,8 @@ public class Vars{ public static final float respawnduration = 60*4; //time between waves in frames public static final float wavespace = 35*60*(android ? 2 : 1); + //waves can last no longer than 6 minutes, otherwise the next one spawns + public static final float maxwavespace = 60*60*6; //how far away from spawn points the player can't place blocks public static final float enemyspawnspace = 65; //scale of the font diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 396eb8531a..40ddf23f25 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -34,9 +34,16 @@ public abstract class BulletType extends BaseBulletType{ sniper = new BulletType(3f, 20){ public void draw(Bullet b){ Draw.color(Color.LIGHT_GRAY); - Draw.rect("bullet", b.x, b.y, b.angle()); + Draw.thick(1f); + Draw.lineAngleCenter(b.x, b.y, b.angle(), 3f); Draw.reset(); } + + public void update(Bullet b){ + if(Timers.get(b, "smoke", 4)){ + Effects.effect("railsmoke", b.x, b.y); + } + } }, shell = new BulletType(1.1f, 80){ { diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java index 474fb0bb77..15e5fce27a 100644 --- a/core/src/io/anuke/mindustry/input/AndroidInput.java +++ b/core/src/io/anuke/mindustry/input/AndroidInput.java @@ -14,7 +14,6 @@ import io.anuke.mindustry.world.World; import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.mindustry.world.blocks.ProductionBlocks; import io.anuke.ucore.core.*; -import io.anuke.ucore.scene.utils.Cursors; import io.anuke.ucore.util.Mathf; public class AndroidInput extends InputAdapter{ @@ -87,11 +86,6 @@ public class AndroidInput extends InputAdapter{ for(ItemStack stack : player.recipe.requirements){ Inventory.removeItem(stack); } - - if(!Inventory.hasItems(player.recipe.requirements)){ - player.recipe = null; - Cursors.restoreCursor(); - } } } diff --git a/core/src/io/anuke/mindustry/input/GestureHandler.java b/core/src/io/anuke/mindustry/input/GestureHandler.java index b2a1bba83f..22e2af2dd7 100644 --- a/core/src/io/anuke/mindustry/input/GestureHandler.java +++ b/core/src/io/anuke/mindustry/input/GestureHandler.java @@ -6,6 +6,9 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.input.GestureDetector.GestureAdapter; import com.badlogic.gdx.math.Vector2; +import io.anuke.mindustry.GameState; +import io.anuke.mindustry.GameState.State; +import io.anuke.mindustry.Inventory; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.World; import io.anuke.mindustry.world.blocks.Blocks; @@ -22,7 +25,7 @@ public class GestureHandler extends GestureAdapter{ public boolean longPress(float x, float y){ Tile tile = World.cursorTile(); player.breaktime += Timers.delta(); - if(player.breaktime >= tile.block().breaktime){ + if(!GameState.is(State.menu) && player.breaktime >= tile.block().breaktime){ Effects.effect("break", tile.worldx(), tile.worldy()); Effects.shake(3f, 1f); tile.setBlock(Blocks.air); @@ -34,7 +37,7 @@ public class GestureHandler extends GestureAdapter{ @Override public boolean pan(float x, float y, float deltaX, float deltaY){ - if(player.recipe == null){ + if(player.recipe == null || !Inventory.hasItems(player.recipe.requirements)){ player.x -= deltaX*Core.camera.zoom/Core.cameraScale; player.y += deltaY*Core.camera.zoom/Core.cameraScale; }else{ diff --git a/core/src/io/anuke/mindustry/input/Input.java b/core/src/io/anuke/mindustry/input/Input.java index c208e734e6..255f267cd3 100644 --- a/core/src/io/anuke/mindustry/input/Input.java +++ b/core/src/io/anuke/mindustry/input/Input.java @@ -42,11 +42,12 @@ public class Input{ //TODO restore cursor when requirements are back - for(int i = 0; i < 9; i ++) + for(int i = 0; i < 9; i ++){ if(Inputs.keyUp(Keys.valueOf(""+(i+1))) && i < control.getWeapons().size){ player.weapon = control.getWeapons().get(i); ui.updateWeapons(); } + } if(Inputs.buttonUp(Buttons.LEFT) && player.recipe != null && World.validPlace(World.tilex(), World.tiley(), player.recipe.result) && !ui.hasMouse() && diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 203d11f4cf..e2cce7aca2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -119,6 +119,7 @@ public class ProductionBlocks{ input = Item.stone; inputLiquid = Liquid.water; output = Item.coal; + health = 50; } @Override @@ -137,6 +138,7 @@ public class ProductionBlocks{ liquidCapacity = 41f; purifyTime = 90; output = Item.titanium; + health = 70; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index b94fea9a15..23286e2abc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -113,7 +113,8 @@ public class WeaponBlocks{ range = 120; reload = 120f; bullet = BulletType.shell; - ammo = Item.stone; + ammo = Item.coal; + ammoMultiplier = 5; health = 110; } }, @@ -128,7 +129,7 @@ public class WeaponBlocks{ range = 60; reload = 4f; damage = 9; - ammo = Item.stone; + ammo = Item.coal; health = 110; } }, @@ -140,7 +141,7 @@ public class WeaponBlocks{ range = 70; reload = 20f; bullet = BulletType.shell; - ammo = Item.stone; + ammo = Item.coal; health = 140; } @@ -162,8 +163,9 @@ public class WeaponBlocks{ range = 60f; reload = 3f; bullet = BulletType.plasmaflame; - ammo = Item.stone; + ammo = Item.coal; health = 180; + ammoMultiplier = 40; } }, diff --git a/core/src/io/anuke/mindustry/world/blocks/types/Drill.java b/core/src/io/anuke/mindustry/world/blocks/types/Drill.java index beab1b726c..54d0374b91 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/Drill.java @@ -39,7 +39,6 @@ public class Drill extends Block{ @Override public void drawOver(Tile tile){ - if(tile.floor() != resource && resource != null){ Draw.colorl(0.85f + Mathf.absin(Timers.time(), 6f, 0.15f)); Draw.rect("cross", tile.worldx(), tile.worldy());