diff --git a/core/assets-raw/sprites/blocks/drills/pneumatic-drill.png b/core/assets-raw/sprites/blocks/drills/pneumatic-drill.png index a265034fef..05e6832c37 100644 Binary files a/core/assets-raw/sprites/blocks/drills/pneumatic-drill.png and b/core/assets-raw/sprites/blocks/drills/pneumatic-drill.png differ diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index d77dee6d6d..c982e27d4e 100644 Binary files a/core/assets/maps/saltFlats.msav and b/core/assets/maps/saltFlats.msav differ diff --git a/core/assets/shaders/unitbuild.fragment.glsl b/core/assets/shaders/unitbuild.fragment.glsl index fe1b07ea42..eff888a827 100644 --- a/core/assets/shaders/unitbuild.fragment.glsl +++ b/core/assets/shaders/unitbuild.fragment.glsl @@ -43,9 +43,11 @@ void main() { vec4 c = texture2D(u_texture, v_texCoord.xy); if(1.0-abs(coords.x - 0.5)*2.0 < 1.0-u_progress){ - c = vec4(0.0); + // c = vec4(0.0); } + c.a *= u_progress; + if(c.a > 0.01){ float f = abs(sin(coords.x*2.0 + u_time)); if(f > 0.9) diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index 0dec63c02e..948cb3e92e 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 9897a813e4..9492724c15 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index 548ef2505c..3f449e1846 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites_fallback3.png b/core/assets/sprites/sprites_fallback3.png index 7c5ecc7afe..b0814b6c10 100644 Binary files a/core/assets/sprites/sprites_fallback3.png and b/core/assets/sprites/sprites_fallback3.png differ diff --git a/core/assets/sprites/sprites_fallback4.png b/core/assets/sprites/sprites_fallback4.png index a3c5d812de..bc4468e2f0 100644 Binary files a/core/assets/sprites/sprites_fallback4.png and b/core/assets/sprites/sprites_fallback4.png differ diff --git a/core/assets/sprites/sprites_fallback5.png b/core/assets/sprites/sprites_fallback5.png index cbc4a8d5e9..fe51d8cac2 100644 Binary files a/core/assets/sprites/sprites_fallback5.png and b/core/assets/sprites/sprites_fallback5.png differ diff --git a/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java b/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java index f0e5e8afee..605bebb148 100644 --- a/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java +++ b/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.entities.type.base; +import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Structs; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.entities.traits.MinerTrait; @@ -133,9 +134,18 @@ public class MinerDrone extends BaseDrone implements MinerTrait{ updateMining(); } + @Override + protected void updateRotation(){ + if(mineTile != null && shouldRotate() && mineTile.dst(this) < type.range){ + rotation = Mathf.slerpDelta(rotation, angleTo(mineTile), 0.3f); + }else{ + rotation = Mathf.slerpDelta(rotation, velocity.angle(), 0.3f); + } + } + @Override public boolean shouldRotate(){ - return false; + return isMining(); } @Override diff --git a/core/src/io/anuke/mindustry/entities/type/base/RepairDrone.java b/core/src/io/anuke/mindustry/entities/type/base/RepairDrone.java index ec7e1aa859..9375e6ca8e 100644 --- a/core/src/io/anuke/mindustry/entities/type/base/RepairDrone.java +++ b/core/src/io/anuke/mindustry/entities/type/base/RepairDrone.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.entities.type.base; import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.entities.type.FlyingUnit; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.world.Pos; @@ -11,7 +10,7 @@ import java.io.*; import static io.anuke.mindustry.Vars.world; -public class RepairDrone extends FlyingUnit{ +public class RepairDrone extends BaseDrone{ public final UnitState repair = new UnitState(){ public void entered(){ @@ -32,12 +31,18 @@ public class RepairDrone extends FlyingUnit{ //circle spawner if there's nothing to repair if(getSpawner() != null){ target = getSpawner(); - circle(type.range * 0.9f); + circle(type.range * 1.5f, type.speed/2f); + target = null; } } } }; + @Override + public boolean shouldRotate(){ + return target != null; + } + @Override public UnitState getStartState(){ return repair; diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index 652c4ae1c3..7a48793de0 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -53,8 +53,10 @@ public class PlacementFragment extends Fragment{ public PlacementFragment(){ Events.on(WorldLoadEvent.class, event -> { - control.input().block = null; - rebuild(); + Core.app.post(() -> { + control.input().block = null; + rebuild(); + }); }); Events.on(UnlockEvent.class, event -> { diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index d8ac8b05d9..86ad517048 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -148,6 +148,13 @@ public class PowerGraph{ public void update(){ if(Core.graphics.getFrameId() == lastFrameUpdated){ + return; + }else if(!consumers.isEmpty() && consumers.first().isEnemyCheat()){ + //when cheating, just set satisfaction to 1 + for(Tile tile : consumers){ + tile.entity.power.satisfaction = 1f; + } + return; } diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 9d85168575..3e691dc8da 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -2,7 +2,6 @@ package io.anuke.mindustry.world.blocks.storage; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; -import io.anuke.arc.Core; import io.anuke.arc.collection.EnumSet; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.Mathf; @@ -24,7 +23,6 @@ import io.anuke.mindustry.world.meta.BlockFlag; import static io.anuke.mindustry.Vars.*; public class CoreBlock extends StorageBlock{ - protected TextureRegion topRegion; public CoreBlock(String name){ super(name); @@ -83,23 +81,17 @@ public class CoreBlock extends StorageBlock{ state.teams.get(tile.getTeam()).cores.add(tile); } - @Override - public void load(){ - super.load(); - - topRegion = Core.atlas.find(name + "-top"); - } - @Override public void draw(Tile tile){ CoreEntity entity = tile.entity(); Draw.rect(region, tile.drawx(), tile.drawy()); - if(Core.atlas.isFound(topRegion)){ - Draw.alpha(entity.heat); - Draw.rect(topRegion, tile.drawx(), tile.drawy()); - Draw.color(); + if(entity.heat > 0){ + Draw.colorl(0.25f); + Lines.stroke(2f * entity.heat); + Lines.poly(tile.drawx(), tile.drawy(), 4, 8f * entity.heat); + Draw.reset(); } if(entity.currentUnit != null){ diff --git a/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java b/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java index c7a3c09b17..e4a08ec413 100644 --- a/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java +++ b/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java @@ -14,6 +14,12 @@ public class ConsumeModule extends BlockModule{ } public void update(){ + //everything is valid here + if(entity.tile.isEnemyCheat()){ + valid = optionalValid = true; + return; + } + boolean prevValid = valid(); valid = true; optionalValid = true;