From aafe7fb74ad77bf2ba5806d339f27e8aedb34d9e Mon Sep 17 00:00:00 2001 From: Anuken <arnukren@gmail.com> Date: Tue, 5 Dec 2017 12:21:08 -0500 Subject: [PATCH] Many bugfixes and tweaks --- android/AndroidManifest.xml | 4 +- .../io/anuke/mindustry/AndroidLauncher.java | 2 +- build.gradle | 2 +- core/assets/maps/maze.png | Bin 4298 -> 4315 bytes core/assets/shaders/shield.fragment | 5 +- core/src/io/anuke/mindustry/Vars.java | 2 +- core/src/io/anuke/mindustry/core/Control.java | 2 +- .../anuke/mindustry/entities/BulletType.java | 8 +- .../anuke/mindustry/entities/WaveCreator.java | 6 +- .../anuke/mindustry/entities/effect/EMP.java | 9 +- .../mindustry/entities/effect/Shield.java | 4 +- .../mindustry/entities/enemies/Enemy.java | 15 ++-- .../anuke/mindustry/input/AndroidInput.java | 15 ++++ .../io/anuke/mindustry/resource/Recipe.java | 2 +- .../ui/fragments/BlocksFragment.java | 5 +- .../mindustry/ui/fragments/HudFragment.java | 78 +++++++++++++----- core/src/io/anuke/mindustry/world/World.java | 2 +- .../world/blocks/DistributionBlocks.java | 14 ++-- .../world/blocks/ProductionBlocks.java | 8 +- .../world/blocks/types/LiquidBlock.java | 1 - .../blocks/types/defense/PowerTurret.java | 11 ++- .../blocks/types/defense/RepairTurret.java | 2 +- .../blocks/types/defense/ShieldBlock.java | 10 ++- .../world/blocks/types/defense/Turret.java | 4 +- .../blocks/types/distribution/Junction.java | 1 + .../types/distribution/PowerBooster.java | 2 +- .../blocks/types/production/Generator.java | 11 +-- desktop/mindustry-saves/2.mins | Bin 22400 -> 17024 bytes desktop/mindustry-saves/7.mins | Bin 39986 -> 3906 bytes html/webapp/html/logo.png | Bin 2416 -> 2472 bytes html/webapp/styles.css | 7 ++ 31 files changed, 143 insertions(+), 89 deletions(-) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index c2fca9ee65..97ccaace35 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.anuke.mindustry" - android:versionCode="15" - android:versionName="2.4" > + android:versionCode="16" + android:versionName="3.0b" > <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="25" /> diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 56d9e94a47..5c457088f3 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -51,7 +51,7 @@ public class AndroidLauncher extends AndroidApplication { Unit.dp.multiplier = 1f; } - Mindustry.args.add("-debug"); + //Mindustry.args.add("-debug"); initialize(new Mindustry(), config); } diff --git a/build.gradle b/build.gradle index fec2213330..6e977b8ab4 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ project(":core") { apply plugin: "java" dependencies { - // compile 'com.github.Anuken:ucore:61c43bf' + compile 'com.github.Anuken:ucore:92dc170f0e' compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-ai:1.8.1" } diff --git a/core/assets/maps/maze.png b/core/assets/maps/maze.png index ffab959f20a902cd7edb4b2ded729d61f572365a..c71f782049573b0d2471fc94976a466f58c753b9 100644 GIT binary patch delta 80 zcmX@5cw2FT3O`$tx4R3&e-K=-clqRriV8fe0&02>&IIW*FbHI9^i5{s7X0gTi7%}p i|K9s=oA)sN;uX=ksaAHGcj0RWAn<hcb6Mw<&;$V1Iv%V5 delta 91 zcmcbucuH}CiY8})M`SSr1Gg{;GcwGYBf-GHz+U3%>&pI+hmna_y?(*>)eH;*nH%Gi tnRp`qSF`b3+}=C;;okR~&oceu70KD4`DOK|r$Frt44$rjF6*2UngGHy9##MV diff --git a/core/assets/shaders/shield.fragment b/core/assets/shaders/shield.fragment index eed64e553c..c028303bad 100644 --- a/core/assets/shaders/shield.fragment +++ b/core/assets/shaders/shield.fragment @@ -5,6 +5,7 @@ precision mediump int; #define MAX_HITS 64 #define HIT_RADIUS 12.0 +#define ALPHA 0.18 uniform sampler2D u_texture; @@ -53,7 +54,7 @@ void main() { color *= 1.65; } - color.a = 0.18; + color.a = ALPHA; for(int i = 0; i < u_hitamount; i ++){ vec3 hit = u_hits[i]; @@ -62,7 +63,7 @@ void main() { if(abs(distance(vec2(hit.x, hit.y), coords - u_texsize/2.0) - rad) < 1.0){ color = mix(color, u_color* vec4(si, si, si, 1.0), (1.0 * fract)); - color.a = 0.18 + 0.82 *fract; + color.a = ALPHA + 0.82 *fract; } } } diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 3403d4d2cc..ad34385288 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -43,7 +43,7 @@ public class Vars{ //whether to draw chunk borders public static boolean debugChunks = false; //whether turrets have infinite ammo (only with debug) - public static boolean infiniteAmmo = true; + public static boolean infiniteAmmo = false; //whether to show paths of enemies public static boolean showPaths = true; //number of save slots-- increasing may lead to layout issues diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index c9eaab991a..b452f33964 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -115,7 +115,7 @@ public class Control extends Module{ player = new Player(); spawns = WaveCreator.getSpawns(); - WaveCreator.testWaves(1, 30); + //WaveCreator.testWaves(1, 30); } public void reset(){ diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 698b8f35d2..9e6f2f46eb 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -62,7 +62,7 @@ public abstract class BulletType extends BaseBulletType<Bullet>{ } } }, - emp = new BulletType(1.6f, 6){ + emp = new BulletType(1.6f, 8){ { lifetime = 50f; hitsize = 6f; @@ -89,7 +89,7 @@ public abstract class BulletType extends BaseBulletType<Bullet>{ public void removed(Bullet b){ Timers.run(5f, ()->{ - new EMP(b.x, b.y, b.damage).add(); + new EMP(b.x, b.y, b.getDamage()).add(); }); Effects.effect(Fx.empshockwave, b); Effects.shake(3f, 3f, b); @@ -132,7 +132,7 @@ public abstract class BulletType extends BaseBulletType<Bullet>{ DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f)); } }, - titanshell = new BulletType(1.8f, 40){ + titanshell = new BulletType(1.8f, 38){ { lifetime = 70f; hitsize = 15f; @@ -160,7 +160,7 @@ public abstract class BulletType extends BaseBulletType<Bullet>{ Effects.effect(Fx.shellsmoke, b); Effects.effect(Fx.shockwaveSmall, b); - DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f)); + DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 50f, (int)(damage * 2f/3f)); } }, yellowshell = new BulletType(1.2f, 20){ diff --git a/core/src/io/anuke/mindustry/entities/WaveCreator.java b/core/src/io/anuke/mindustry/entities/WaveCreator.java index 9833ccaf9b..11a1f69390 100644 --- a/core/src/io/anuke/mindustry/entities/WaveCreator.java +++ b/core/src/io/anuke/mindustry/entities/WaveCreator.java @@ -91,7 +91,7 @@ public class WaveCreator{ //boss wave new EnemySpawn(FortressEnemy.class){{ after = 16; - amount = 2; + amount = 1; spacing = 5; scaling = 1; }}, @@ -149,8 +149,8 @@ public class WaveCreator{ }}, new EnemySpawn(FortressEnemy.class){{ after = 12; - spacing = 3; - scaling = 5; + spacing = 4; + scaling = 6; }}, new EnemySpawn(HealerEnemy.class){{ scaling = 3; diff --git a/core/src/io/anuke/mindustry/entities/effect/EMP.java b/core/src/io/anuke/mindustry/entities/effect/EMP.java index a079c7d38d..b4b124e67c 100644 --- a/core/src/io/anuke/mindustry/entities/effect/EMP.java +++ b/core/src/io/anuke/mindustry/entities/effect/EMP.java @@ -50,14 +50,15 @@ public class EMP extends TimedEntity{ Tile tile = array.get(i); targets.add(tile); - if(tile.block() instanceof PowerAcceptor){ + if(tile != null && tile.block() instanceof PowerAcceptor){ PowerAcceptor p = (PowerAcceptor)tile.block(); - tile.entity.damage(damage*2); //extra damage p.setPower(tile, 0f); + tile.entity.damage(damage*2); //extra damage } - Effects.effect(Fx.empspark, tile.entity); - tile.entity.damage(damage); + //entity may be null here, after the block is dead! + Effects.effect(Fx.empspark, tile.worldx(), tile.worldy()); + if(tile.entity != null) tile.entity.damage(damage); } } diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java index b62bfbdd41..7a3775d5f1 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Shield.java +++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java @@ -18,6 +18,7 @@ import io.anuke.ucore.util.Mathf; public class Shield extends Entity{ public boolean active; public boolean hitPlayers = false; + public float radius = 0f; private float uptime = 0f; private final Tile tile; @@ -84,8 +85,7 @@ public class Shield extends Entity{ } float drawRadius(){ - ShieldBlock block = (ShieldBlock)tile.block(); - return (block.shieldRadius*2 + Mathf.sin(Timers.time(), 25f, 2f)) * uptime; + return (radius*2 + Mathf.sin(Timers.time(), 25f, 2f)); } public void removeDelay(){ diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 710f9e9152..bb7b703b97 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -5,13 +5,10 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.entities.Bullet; -import io.anuke.mindustry.entities.BulletType; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.effect.Fx; import io.anuke.mindustry.entities.effect.Shaders; import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.UCore; import io.anuke.ucore.core.*; import io.anuke.ucore.entities.*; import io.anuke.ucore.util.Angles; @@ -103,6 +100,10 @@ public class Enemy extends DestructibleEntity{ } void updateTargeting(boolean nearCore){ + if(target != null && target instanceof TileEntity && ((TileEntity)target).dead){ + target = null; + } + if(Timers.get(this, "target", 15) && !nearCore){ target = Vars.world.findTileTarget(x, y, null, range, false); @@ -110,10 +111,8 @@ public class Enemy extends DestructibleEntity{ if(target == null){ target = Entities.getClosest(Entities.defaultGroup(), x, y, range, e -> e instanceof Player); } - } - - if(target instanceof Enemy){ - UCore.log(target); + }else if(nearCore){ + target = Vars.control.getCore().entity; } if(target != null && bullet != null){ diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java index 9659f8e3ab..d11401a025 100644 --- a/core/src/io/anuke/mindustry/input/AndroidInput.java +++ b/core/src/io/anuke/mindustry/input/AndroidInput.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.input; import static io.anuke.mindustry.Vars.*; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.InputAdapter; import com.badlogic.gdx.math.Vector2; @@ -10,7 +11,9 @@ import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.Configurable; import io.anuke.ucore.core.Graphics; +import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.util.Mathf; @@ -82,6 +85,18 @@ public class AndroidInput extends InputAdapter{ } public static void doInput(){ + Tile cursor = selected(); + + //TODO test + if(Inputs.buttonUp(Buttons.LEFT) && cursor != null){ + Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor; + if(linked != null && linked.block() instanceof Configurable){ + Vars.ui.showConfig(linked); + }else if(!Vars.ui.hasConfigMouse()){ + Vars.ui.hideConfig(); + } + } + if(Gdx.input.isTouched(0) && Mathf.near2d(lmousex, lmousey, Gdx.input.getX(0), Gdx.input.getY(0), Unit.dp.inPixels(50)) && !ui.hasMouse() /*&& (player.recipe == null || mode == PlaceMode.touch)*/){ diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java index 22ccc746a5..6419b26a20 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/resource/Recipe.java @@ -52,7 +52,7 @@ public enum Recipe{ titaniumpurifier(crafting, ProductionBlocks.titaniumpurifier, stack(Item.steel, 30), stack(Item.iron, 30)), oilrefinery(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)), stoneformer(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)), - lavasmelter(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 20), stack(Item.iron, 20), stack(Item.titanium, 10)), + lavasmelter(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)), stonedrill(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)), irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 25)), diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index 053ac5bc2f..d27b15fe24 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -14,6 +14,7 @@ import io.anuke.mindustry.resource.Recipe; import io.anuke.mindustry.resource.Section; import io.anuke.mindustry.ui.FloatingDialog; import io.anuke.ucore.core.Draw; +import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.scene.builders.table; import io.anuke.ucore.scene.event.Touchable; import io.anuke.ucore.scene.ui.*; @@ -105,7 +106,7 @@ public class BlocksFragment implements Fragment{ //image.setDisabled(!has); image.setChecked(player.recipe == r); image.setTouchable(canPlace ? Touchable.enabled : Touchable.disabled); - image.getImage().setColor(has ? Color.WHITE : Color.DARK_GRAY); + image.getImage().setColor(has ? Color.WHITE : Hue.lightness(0.33f)); }); if(i % rows == rows-1) @@ -195,7 +196,7 @@ public class BlocksFragment implements Fragment{ }).size(110, 50).pad(10f).units(Unit.dp); d.show(); - }).expandX().padLeft(4).top().right().size(36f, 40f).units(Unit.dp); + }).expandX().padLeft(4).top().right().size(42f, 46f).padTop(-2).units(Unit.dp); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 34cf66d8f5..9b93767d85 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -22,6 +22,7 @@ import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.imagebutton; import io.anuke.ucore.scene.builders.label; import io.anuke.ucore.scene.builders.table; +import io.anuke.ucore.scene.event.Touchable; import io.anuke.ucore.scene.ui.Image; import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.layout.Cell; @@ -42,7 +43,7 @@ public class HudFragment implements Fragment{ new table(){{ left(); - defaults().size(66).units(Unit.dp).left(); + defaults().size(68).units(Unit.dp).left(); float isize = Unit.dp.inPixels(40); new imagebutton("icon-menu", isize, ()->{ @@ -64,6 +65,12 @@ public class HudFragment implements Fragment{ row(); + new table(){{ + addWaveTable(); + }}.fillX().end(); + + row(); + itemtable = new table("button").end().top().left().fillX().size(-1).get(); itemtable.setVisible(()-> control.getMode() != GameMode.sandbox); itemcell = get().getCell(itemtable); @@ -95,29 +102,16 @@ public class HudFragment implements Fragment{ //wave table... new table(){{ - atop(); - aright(); - float uheight = 72f; + if(!Vars.android){ + atop(); + aright(); + }else{ + abottom(); + aleft(); + } - new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{ - Vars.control.runWave(); - }).size(uheight).uniformY().units(Unit.dp) - .visible(()-> Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0); - - new table("button"){{ - - new label(()->"[orange]Wave " + control.getWave()).scale(fontscale*2f).left(); - - row(); - - new label(()-> control.getEnemiesRemaining() > 0 ? - control.getEnemiesRemaining() + " Enemies remaining" : - (control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "New wave in " + (int) (control.getWaveCountdown() / 60f)) - .minWidth(150); - - get().pad(Unit.dp.inPixels(12)); - }}.height(uheight).units(Unit.dp); + //addWaveTable(); visible(()->!GameState.is(State.menu)); }}.end(); @@ -166,6 +160,46 @@ public class HudFragment implements Fragment{ } } + private void addWaveTable(){ + float uheight = 66f; + + new table("button"){{ + aleft(); + new table(){{ + aleft(); + + new label(()->"[orange]Wave " + control.getWave()).scale(fontscale*1.5f).left(); + + row(); + + new label(()-> control.getEnemiesRemaining() > 0 ? + control.getEnemiesRemaining() + " enemies" : + (control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "Wave in " + (int) (control.getWaveCountdown() / 60f)) + .minWidth(140).left(); + + get().pad(Unit.dp.inPixels(12)); + }}.left().padLeft(-6).end(); + + playButton(uheight); + //get().padTop(Unit.dp.inPixels(1)); + //get().padBottom(Unit.dp.inPixels(1)); + }}.height(uheight).units(Unit.dp).fillX().expandX().end(); + + } + + private void playButton(float uheight){ + new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{ + Vars.control.runWave(); + }).height(uheight).fillX().padTop(-8f).padBottom(-12f).padRight(-18f).padLeft(-10f).width(40f).units(Unit.dp).update(l->{ + boolean vis = Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0; + boolean paused = GameState.is(State.paused) || !vis; + + l.setVisible(vis); + l.getStyle().imageUp = Core.skin.getDrawable(vis ? "icon-play" : "clear"); + l.setTouchable(!paused ? Touchable.enabled : Touchable.disabled); + }); + } + public void updateItems(){ itemtable.clear(); diff --git a/core/src/io/anuke/mindustry/world/World.java b/core/src/io/anuke/mindustry/world/World.java index 0c85042c11..ba31bbf780 100644 --- a/core/src/io/anuke/mindustry/world/World.java +++ b/core/src/io/anuke/mindustry/world/World.java @@ -278,7 +278,7 @@ public class World extends Module{ } } - if(Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){ + if(!Vars.android && Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){ return false; } diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java index 29d130b0c1..59818120dc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -15,6 +15,7 @@ public class DistributionBlocks{ }}, pulseconduit = new LiquidBlock("pulseconduit"){{ + formalName = "pulse conduit"; fullDescription = "Advanced liquid transport block. Transports liquids faster and stores more than standard conduits."; liquidCapacity = 16f; flowfactor = 4.9f; @@ -29,7 +30,6 @@ public class DistributionBlocks{ }}, conveyor = new Conveyor("conveyor"){{ - description = "Moves items."; fullDescription = "Basic item transport block. Moves items forward and automatically deposits them into turrets or crafters. " + "Rotatable. Can be used as a bridge over liquids for enemies and players."; }}, @@ -37,16 +37,13 @@ public class DistributionBlocks{ steelconveyor = new Conveyor("steelconveyor"){{ health = 55; speed = 0.04f; - description = "Moves items faster."; formalName = "steel conveyor"; fullDescription = "Advanced item transport block. Moves items faster than standard conveyors."; }}, - //TODO pulseconveyor = new Conveyor("poweredconveyor"){{ health = 75; speed = 0.09f; - description = "Moves items even faster."; formalName = "pulse conveyor"; fullDescription = "The ultimate item transport block. Moves items faster than steel conveyors."; }}, @@ -71,7 +68,6 @@ public class DistributionBlocks{ }}, liquidjunction = new LiquidJunction("liquidjunction"){{ formalName = "liquid junction"; - description = "Serves as a liquid junction."; fullDescription = "Acts as a bridge for two crossing conduits. Useful in situations with " + "two different conduits carrying different liquids to different locations."; }}, @@ -88,7 +84,7 @@ public class DistributionBlocks{ }}, powerlaser = new PowerLaser("powerlaser"){{ formalName = "power laser"; - description = "Transmits power with a laser."; + description = "Transmits power."; fullDescription = "Creates a laser that transmits power to the block in front of it. Does not generate any power itself. " + "Best used with generators or other lasers."; }}, @@ -103,16 +99,16 @@ public class DistributionBlocks{ formalName = "laser corner"; description = "Splits input power into 2 lasers."; fullDescription = "Laser that distributes power to two directions at once. " - + "Useful in situations where it is required to power multiple blocks from one generator, and a normal router is imprecise."; + + "Useful in situations where it is required to power multiple blocks from one generator, and a router is imprecise."; }}, teleporter = new Teleporter("teleporter"){{ - description = "[interact]Tap block to config[]\nTeleports items to others of the same color."; + description = "[interact]Tap block to config[]"; fullDescription = "Advanced item transport block. Teleporters input items to other teleporters of the same color." + " Does nothing if no teleporters of the same color exist. If multiple teleporters exist of the same color, a random one is selected." + " Tap and click the arrows to change color."; }}, sorter = new Sorter("sorter"){{ - description = "[interact]Tap block to config[]\nSorts input items by type."; + description = "[interact]Tap block to config[]"; fullDescription = "Sorts item by material type. Material to accept is indicated by the color in the block. " + "All items that match the sort material are outputted forward, everything else is outputted to the left and right."; }}; diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 1d120eb1eb..dc13a2b1d4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -78,7 +78,7 @@ public class ProductionBlocks{ liquidAmount = 18.99f; output = Item.coal; health = 50; - purifyTime = 60; + purifyTime = 50; description = "Converts stone + water to coal."; fullDescription = "A basic extractor block. Outputs coal when supplied with large amounts of water and stone."; } @@ -92,7 +92,7 @@ public class ProductionBlocks{ inputLiquid = Liquid.water; liquidAmount = 40f; liquidCapacity = 41f; - purifyTime = 80; + purifyTime = 60; output = Item.titanium; health = 70; description = "Converts iron + water to titanium."; @@ -106,7 +106,7 @@ public class ProductionBlocks{ inputLiquid = Liquid.oil; liquidAmount = 45f; liquidCapacity = 46f; - purifyTime = 70; + purifyTime = 60; output = Item.coal; health = 80; craftEffect = Fx.purifyoil; @@ -266,7 +266,7 @@ public class ProductionBlocks{ height = 3; health = 600; breaktime *= 2.3f; - description = "Generates power from uranium + water."; + //description = "Advanced generator."; fullDescription = "The ultimate power generator. Highly volatile. Generates power from uranium. Requires constant cooling in the form of water. " + "Will explode violently if insufficient amounts of coolant are supplied. "; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java index 75d958b932..346abac2b9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java @@ -20,7 +20,6 @@ public class LiquidBlock extends Block implements LiquidAcceptor{ public LiquidBlock(String name) { super(name); - description = "Transports liquids."; rotate = true; update = true; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java index 72c578a3ea..bed70e2aba 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java @@ -26,6 +26,11 @@ public class PowerTurret extends Turret implements PowerAcceptor{ ammo = null; } + @Override + public void postInit(){ + description = "[turretinfo]Uses power."; + } + @Override public void getStats(Array<String> list){ super.getStats(list); @@ -33,12 +38,6 @@ public class PowerTurret extends Turret implements PowerAcceptor{ list.add("[powerinfo]Power/shot: " + Strings.toFixed(powerUsed, 1)); } - @Override - public void postInit(){ - super.postInit(); - description += "\n[powerinfo]Power/shot: " + Strings.toFixed(powerUsed, 1); - } - @Override public void drawPixelOverlay(Tile tile){ Vector2 offset = getPlaceOffset(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java index c696738a36..e6d4102ff7 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java @@ -31,7 +31,7 @@ public class RepairTurret extends PowerTurret{ @Override public void postInit(){ - description = "[turretinfo]Range: " + (int)range + "\nPower/unit: "+powerUsed+"\n[description]Heals nearby tiles."; + description = "[powerinfo]Uses power[white]\nRepairs nearby blocks."; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java index 3a08c576fd..75033ab71e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java @@ -11,16 +11,20 @@ import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.BulletEntity; +import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Strings; public class ShieldBlock extends PowerBlock{ public float shieldRadius = 40f; - public float powerDrain = 0.006f; + public float powerDrain = 0.005f; public float powerPerDamage = 0.1f; + public float maxRadius = 40f; + public float radiusPowerScale = 7.5f; public ShieldBlock(String name) { super(name); voltage = powerDrain; + health = 100; } @Override @@ -42,7 +46,7 @@ public class ShieldBlock extends PowerBlock{ } if(entity.power > powerPerDamage){ - if(!entity.shield.active && entity.power > powerPerDamage * 8f){ + if(!entity.shield.active){ entity.shield.add(); } @@ -52,6 +56,8 @@ public class ShieldBlock extends PowerBlock{ entity.shield.removeDelay(); } } + + entity.shield.radius = Mathf.lerp(entity.shield.radius, Math.min(entity.power * radiusPowerScale, maxRadius), Timers.delta() * 0.05f); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index e63681da52..63fa33a35e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -66,8 +66,8 @@ public class Turret extends Block{ @Override public void postInit(){ - description = "[turretinfo]" + (ammo==null ? "" : "Ammo: " + ammo +"\n") - + "Range: " + (int)range; + if(ammo != null) + description = "[turretinfo]Ammo: " + ammo; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java index 88edb0f11e..97a2b24ddb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java @@ -33,6 +33,7 @@ public class Junction extends Block{ @Override public boolean acceptItem(Item item, Tile dest, Tile source){ int dir = source.relativeTo(dest.x, dest.y); + if(dir == -1) return false; Tile to = dest.getNearby()[dir]; return to != null && to.block().acceptItem(item, to, dest); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java index 3fe032b493..5e2f665640 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java @@ -18,6 +18,7 @@ public class PowerBooster extends Generator{ super(name); explosive = false; hasLasers = false; + powerSpeed = 0.4f; } @Override @@ -69,7 +70,6 @@ public class PowerBooster extends Generator{ int acceptors = 0; float flow = 0f; - //TODO have two phases, where it checks nearby blocks first, then distributes it evenly for(int i = 0; i < 2; i++){ for(int x = -powerRange; x <= powerRange; x++){ for(int y = -powerRange; y <= powerRange; y++){ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java index 6544cab0f8..94b2cef3d8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java @@ -24,7 +24,7 @@ public class Generator extends PowerBlock{ public int laserRange = 6; public int laserDirections = 4; - public float powerSpeed = 0.06f; + public float powerSpeed = 0.1f; public boolean explosive = true; public boolean hasLasers = true; public boolean outputOnly = false; @@ -196,22 +196,17 @@ public class Generator extends PowerBlock{ int relrot = (rotation + 2) % 4; if(other.hasLasers){ for(int i = 0; i < other.laserDirections; i ++){ - if(target.getRotation() + i - other.laserDirections/2 == (target.getRotation() + 2) % 4){ + if(Mathf.mod(target.getRotation() + i - other.laserDirections/2, 4) == relrot){ return true; } } } - if(other.hasLasers && Math.abs(target.getRotation() - relrot) <= other.laserDirections / 2){ - return true; - } } return false; } protected Tile laserTarget(Tile tile, int rotation){ - if(rotation < 0) - rotation += 4; - rotation %= 4; + rotation = Mathf.mod(rotation, 4); GridPoint2 point = Geometry.getD4Points()[rotation]; int i = 0; diff --git a/desktop/mindustry-saves/2.mins b/desktop/mindustry-saves/2.mins index 651006157e4c7385685e452009000e02da4565d6..3ee6521fdc2ffa54375e81b8f6086213d9bf3da6 100644 GIT binary patch literal 17024 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 literal 22400 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 J>%L^}{{R9ZhZX<; diff --git a/desktop/mindustry-saves/7.mins b/desktop/mindustry-saves/7.mins index e9cf74f85349e9cec95e2beba2c1333885092cf3..e9bd698ec7002006a7e9d7b78bcaf4b4c943043c 100644 GIT binary patch literal 3906 zcmZwIYfw~W90u^0MXjbj)Q4&US{qn)7bUfY2`yB}BZNB|SdxN@7mOuP$P_ehiwj)_ z!7@^I*9&shaI6$Zgv3Z(U@;I>%t><6>O<3qX6j4dde1pL54P^ku=9JL|NH*Wdv1#m z;t3%_)>ulLyTlYBgh4qdgmUbpalw@-@5phkcx19LmZwdUU+WC=%NZ(+uD?U1o)YqF zaEhAAiIc@7WpD9zWvJ?Mh#V%0P-WZ9TT1_rxAmbxasFdb24gGqp-^_+^C|x31^O^V zDXFPbdhhKY9~RA)yGj?r5g~gC5hg@2Rq#BrTq9IC6)K@hUqDtE1+6qgyDd<e71}i& z+8PV(dJ%F`WmNGjRC^MjORqpzsf%-w)h9td>IOARd0)f4Mrw2cvLOZfG8H=cI+V2t z>ZbPDk=d3&nbdVE^9@w{sXlop<VW6xSs73n<)VDlFI3i2tl01-G)Ap|3z>(SwhY<S zOy~|(`8KkY<<M>F=M~8AQaiJdRZ-PcST?FLR4VoCN>rbt=1>l56V*>`T7|W4%1<S) zM%6*(Q+YY4Ze9azp?ayTwX9O5RQNhn?bI@=a6PI;R7ozfc4}Y)vV8RyL3<9`sUd1% z9;zQwHz~UV)nTe9A6e?V(Ch-}HZ?~13Q--Q=5IvSL48MkwFy;c5wxQiYNAG{XWm1# zYco{-KIEtFY(X|g-J^b^c5cPIU#a*KWV=hD0cy`SWaZnTYRb0*S=dgfm-16NyHRbV zu2Hr<sJ=|)IFVIR2dF-3>R!xSMHyYl2C0a0WDV3el(_=c(^SSs$ihE{tW+)4MqQ}H zyw-hCVijbnh9W+N5~+=p^)pnbQ`@Ol>MZpK^(Pf^09{O!ol2)pQLlcE6)wtHgDi$h z{{q>!l<Od}$U{Q?znP+rt@1A_U~CE)+YYHS)!*|a)Ojkb7S+gFt?vxAx!PC#L<PxA z<C$8=yl6d32_4VOLDpG<WL7;}s`j#}2i87+2@%U}ncVue)Cvw~c582sTwrl)Z;zDK zt-Ui+)7)AYdBW$Y3sfIv@&uf)L3CRe3Dct|goqBTO%h^mvJg+opY;2ag*gAX5N40| z{HnXqXD7<z8kVd3^n9XjK~@?(D%6YLK^eWsOkRBl1{v_&yxP4{yLz>YAZ7Jxo0gix zwRS3t3O|g_k%t4$O%|epWTx@#!5u{FS&BTIwkvaxb(SERRnG!$ro2Bh^n!MVxgzQ5 zj(>%S)3XHqiLp7=jmQ5lQxhTl6Q^`UJEe)|K45GL7{?sd8pum;JF2ZrzzL~&+<2y+ zxPJVFTro^V*0D>S-sQnd6&ECn50af@mrg3;I6EKLIxn8si$OkaaY57gpy|blUiDh9 zd3rCyW3tafN&G`eb_4d(*aQtzD_W4XQ`e}Q)F>4rUm^LC*M26IOP!(GsK{2VFrS82 zeGLtsfrhB$v&b^2DypIl)!g$?0cCDSHm?)P>w+9q8Fh?0bqVuUcSHNXhw7-b%gBl- z7nRzBYAY3c1=&kfIn_y3`Y^ACs;AO=QEi}_sg?=#VO|F{zaLq)AF8I329RY_Emx79 zptk*htckJ>B5S(_d4{1QRLcl5=XEIK2IQq0Df=j@_FK>gR5R5=)&GQf>35*TV^HH= M$Z;Q9`@63H05DCh0RR91 literal 39986 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 diff --git a/html/webapp/html/logo.png b/html/webapp/html/logo.png index d8c65984088157e29b1986a1775afda6845caa99..be1282d3c5c6126c657bc0e760c13588bec70521 100644 GIT binary patch literal 2472 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 C#AdDl literal 2416 zcma)8`y-R>A0A(GPK>QdYqhM<92U_*L`IAut7aQ*v!rATQ#lk<(j&@Jb4Vo-a(K-| z4lUI%kyZ&gln7rW<&@s|_CD(U1HL~zhx@ti&voC|^<4M;Jb)L;Wrg}`bqEBq!ga6H zJ_tks58m6UDud@ePB=C2q7c5%#Sv20zGe(;C>?R|aDYHWS2PxxP_V6bVy|yF1fun9 z`A}%)7P7&INFIU0^Wg^aPBFs{LryS{a(HH(!@PA?W)^1Fi^%~WAQ07$u1*f*)Bck; zUvLcw$V8f&(~s1F^Fc*M*DA50tmZJ*&QPL{_aJ!%tUz6x5JOKb^vYkGV`J6;L^lGD z`3Fh|p60J2sTRTF|KsQ}XqYmThlW+kvm)!n`5tHMEd8fGx8bHdqqO`Ynk;`dU4cb^ z?>Ft|q%)CCw6%+g3r8Gz@l9hnx>lsb5XDVz*6MfHP&ePAX5FU;q00QSxFr9Zu_3Wt z#LMoB#?^3xZJo+48-KaA%}SpSejN8~^|{XNofD*O9zL`4(>zPuV{}Hj>uOx%!Q#h# zNOY7lY0@cZSEX6ydqepT769G0NfbQ%bR7`PsR~trza&a;&^YGSCrU=!P$7NyqW1X> zTW?4^D9F@CzG#JMoN#9KpHo2}n=(JM-M;r>g8JyzUjaaWz`fA$eDA-r$8psfX*PmP z7%~Bi7&tGjox6D@$=<#_H+NW3*uAT;oy@H{oKb(VEw8}{CxT4CCcgAM2pPNn?NVV- z4IeuXAy3s`YODMgtgDEf)ij}&F@O-(@a`YMHIuRhlM0-YGZTPPu6K_we8rP1`<}qg zm0X6uPo-T+=3-ji7<xiV+*Tk$MS1N}kFF8#k6|iA%?b-2?yHylzO(EY9bcj1-Eyg7 ziED`;%8sv|PNc8|C1e-7tG!oJCNQnk-vn>~SoOZ=Sf}~j!C{z?VyN-vf&HiX>!JJE z)_;Z<boX>K^x@{!<x<vIGQw?I&uA!1c3ds_DNLgrBRcu$^lG@pGU!{H5`*#NAE4`G zdhorE?`>ntvv}ngeC-M-+*{>ui-$g@67hka@3wvcof^UUexC1geBLeP^+g?*Q@VW7 zz2Z7cyXgbPzQ0g!iHXBS&m$w%D+6fkD(G()1Q|yEds&!jvX{|ysqVJ$&51S7r{!{8 z*AE@DGwTY*jH{eR;(xoj8Ai*<q&PN`Ulk!Pw;FHL3VcM(aE|bCuwNOLbSv$FjIOi% z&KLw%$2$m|OsK0I_1z9_ej+b*3Kyrv-tB3`pW;oUw-a*N*e&V*dVn-3)S9gkX2%Z& zAp$pcc~6pMAAtZWyX?0O3?Ou0iYegj4zv;Y-V~Ms4o|u-GRC|0VD1L5_R~W)UXaSS zp}?%?x6}??jgzR`8_SPvUjrx8QGZ`YW?AB2v=nz(-!NNs$GWG3M3cA=%IDaRUbn)h ze5F-VqoYYUkJozOtUJ-w&{3sm=q?pFMWw*7O5s>RY43&YCPDu2r5N!MjM?7g!7SNp z1lU!mWdl8=%A#p;HBBnC%!r@Yic@GEfwZ?5^r7tqaaaWEpi`jZas+C#;nI`i_4bAG z9jDjh0g}N;io;AH188inlDRMIBi_EGXxfs)nixovUaSkrh^AO(?ST^AQ8bLDv4uLZ zP4kG-^PKpJfg4iQV~<S_`RiNxgRr^ppMc}T*XT->;eIM;th1K^r{;Wjj>v?<iedsq zuhdo-oFmD%(b_b?ncmHv7$}w&uBav%1X>*c8E%$95iBYjhZkpSJ1N8IDu+OZot&Cv zSxzX(@J)m**G|I(0GY!TjADo~oThRc>pc0e5ddsA=~<DWMBI)lkiiXPn7IbE00l1K z@bMg`fXH_UAeT!|&~+#m)dV7`Vs74UQ|^0&+(0Si&BscR$~W;Ww$qbC_V1BUQBmTz zC8jwK#&(C)4D&34lGTOXBM�r&bc0U>aVo{4WB!4yegYmEpyYC^r^aboidU<9o<y z!pET++j5j4N5XL;m9%>e3(8+#I1KUR%d#))+3A5r7*O}%_&~hWD0pbYRPJ1nHuple zb=&VjVqIyBzN91Jf3h={vjJLrM?Yo1&W{ntgtt%h0r+=GTxWqJc8!%YsP&>TKOxkc z4emB+usUp<YtOA(AN?p2iMiDk>ui(QYRniwLd{%{->Fy<u_ucRI^ft)cMV)}Fz6sO zV=;Wo^a}#lmQ02RKlu3lliq=}*_SQ#zcyCwus*F+>P@hZmbo#QbeKL7w;L-uYu9~c zanWT_+c26<6H9`A3PP4*$~}Jy-!$alP3VH|ewQkbu2@1a`OXe=?-nXpsRLHVtsQs6 z^vW*9uT(my6qKzc_#mB|`$}J*dNN|+OjOY3GtNTz>?Xq{Wg(eyzKFZ&Rg{>OU(ao( zMtq&?<Sp4$+M&p!&_-dy(}(M}2s0uve*w7@`CjX1E&~(N>A3Ow<H;fX1d-_<j8qWJ z_0j>c&GR!L)`vc*glM`aqp$*jN2m5JCYJKd*PF2X@exybQ~%9Qw<uG?C7XhAXv_WF zz1t7vr7)9JWQLHuDO(YXt413fgd&<QfYl>j^SXDvVok@z3F;X(?(@1cnRSQUf@~8T zBKQd{%XtkCiooZ4HT#h3>zNhe;+MSp2}5BMf^P%{vqDcFTrfRLpPqTGi~?~+ZL{Pr zdSuOFO5aI#j4mak#Hk5JL{Ao=`q8zW7jLPbPa56nYda}(5o+y^rQ;Cj^xg~K_Jc&) zpr3wGQC~ha$wx7>+0JC!LoMSqX%dmu)_Ig)zj?LhP+h~*3<TH>1>2>tCgE0whiCh} z8+qOekJb-uiu<Y9kCcQlW{Wxb)8&0;?*5=Td7!){2S1f|wR!b@FCK(3Q#pGwZ-n$Y z5O{E^dFhQ#^Xk{(^7=@|5Bb8%o39*QIhI=@bty<6Fhg@q;NCV+Kady4(X`2$mo>D% zrGC=`?nFF1c~r7J5)SWJ%>qBiRCH-t=jQZV+rCD`1OyK5c*IOEXp&5IB;9_!s~{{| z)KUyiT3i1b@|i_4x8a=TGYbi1<rd9n3yQWf3(X;ouj@d-{Qm+RPPINh+Ppyk*)Y-x P{t!W22_&a7M@IZV054Du diff --git a/html/webapp/styles.css b/html/webapp/styles.css index edaf3900b7..3ac665b88a 100644 --- a/html/webapp/styles.css +++ b/html/webapp/styles.css @@ -10,3 +10,10 @@ body { margin: 0px; padding: 0px; } + +.gdx-meter.red > span { + background-color: #e44d3c !important; + background-image: -moz-linear-gradient(top, #f4ba6e, #d29d58) !important; + background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f4ba6e),color-stop(1, #d29d58)) !important; + background-image: -webkit-linear-gradient(#f4ba6e, #d29d58) !important; +}