From 75709a781244c0f6ca04e93beb5f16abe6fcec85 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 28 Dec 2018 16:05:49 -0500 Subject: [PATCH] Fixed android version / Smooth zoom --- .../src/io/anuke/mindustry/core/Renderer.java | 2 +- .../io/anuke/mindustry/entities/Player.java | 17 ++--- .../mindustry/entities/units/FlyingUnit.java | 11 --- .../mindustry/entities/units/types/Drone.java | 2 - .../mindustry/graphics/BlockRenderer.java | 3 +- .../io/anuke/mindustry/graphics/Trail.java | 66 ------------------ .../io/anuke/mindustry/input/MobileInput.java | 25 +++---- .../mindustry/ui/fragments/HudFragment.java | 1 - .../world/blocks/storage/CoreBlock.java | 3 +- net/build/libs/net-release.jar | Bin 23415 -> 0 bytes .../anuke/mindustry/server/ServerControl.java | 2 +- 11 files changed, 16 insertions(+), 116 deletions(-) delete mode 100644 core/src/io/anuke/mindustry/graphics/Trail.java delete mode 100644 net/build/libs/net-release.jar diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 7f626b4a9c..1b227cb416 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -299,7 +299,7 @@ public class Renderer implements ApplicationListener{ public void clampScale(){ float s = io.anuke.arc.scene.ui.layout.Unit.dp.scl(1f); - targetscale = Mathf.clamp(targetscale, Math.round(s * 2), Math.round(s * 5)); + targetscale = Mathf.clamp(targetscale, Math.round(s * 1), Math.round(s * 6)); } public void takeMapScreenshot(){ diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 119236e2c1..dfa3f1ab67 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -14,7 +14,10 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Vector2; -import io.anuke.arc.util.*; +import io.anuke.arc.util.Align; +import io.anuke.arc.util.Interval; +import io.anuke.arc.util.Pack; +import io.anuke.arc.util.Time; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Mechs; import io.anuke.mindustry.content.fx.UnitFx; @@ -23,7 +26,6 @@ import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; -import io.anuke.mindustry.graphics.Trail; import io.anuke.mindustry.input.Binding; import io.anuke.mindustry.io.TypeIO; import io.anuke.mindustry.net.Net; @@ -73,7 +75,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra private Queue placeQueue = new Queue<>(); private Tile mining; private CarriableTrait carrying; - private Trail trail = new Trail(12); private Vector2 movement = new Vector2(); private boolean moved; @@ -373,15 +374,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra if(dead) return; drawBuilding(this); - - if(mech.flying || boostHeat > 0.001f){ - float wobblyness = 0.6f; - if(!state.isPaused()) trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness), - y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness)); - trail.draw(Tmp.c1.set(mech.trailColor).lerp(mech.trailColorTo, mech.flying ? 0f : boostHeat), 5f * (isFlying() ? 1f : boostHeat)); - }else{ - trail.clear(); - } } public void drawName(){ @@ -772,7 +764,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra inventory.clear(); placeQueue.clear(); dead = true; - trail.clear(); target = null; moveTarget = null; carrier = null; diff --git a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java index bc9e172d59..f2b00660d9 100644 --- a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java @@ -10,7 +10,6 @@ import io.anuke.mindustry.entities.Predict; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.traits.CarriableTrait; import io.anuke.mindustry.entities.traits.CarryTrait; -import io.anuke.mindustry.graphics.Trail; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Tile; @@ -20,9 +19,7 @@ import static io.anuke.mindustry.Vars.world; public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ protected static Vector2 vec = new Vector2(); - protected static float wobblyness = 0.6f; - protected Trail trail = new Trail(8); protected CarriableTrait carrying; protected final UnitState @@ -155,9 +152,6 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ updateRotation(); wobble(); } - - trail.update(x + Angles.trnsx(rotation + 180f, 6f) + Mathf.range(wobblyness), - y + Angles.trnsy(rotation + 180f, 6f) + Mathf.range(wobblyness)); } @Override @@ -171,11 +165,6 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ Draw.alpha(1f); } - @Override - public void drawOver(){ - trail.draw(type.trailColor, 5f); - } - @Override public void behavior(){ if(health <= health * type.retreatPercent && !isCommanded() && diff --git a/core/src/io/anuke/mindustry/entities/units/types/Drone.java b/core/src/io/anuke/mindustry/entities/units/types/Drone.java index f968f29658..28a5e662cf 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Drone.java +++ b/core/src/io/anuke/mindustry/entities/units/types/Drone.java @@ -17,7 +17,6 @@ import io.anuke.mindustry.entities.units.UnitCommand; import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.game.EventType.BuildSelectEvent; import io.anuke.mindustry.gen.Call; -import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.ItemType; @@ -333,7 +332,6 @@ public class Drone extends FlyingUnit implements BuilderTrait{ @Override public void drawOver(){ - trail.draw(Palette.lightTrail, 3f); drawBuilding(this); } diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 62c044f3f3..d82d6274ee 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -24,7 +24,7 @@ public class BlockRenderer{ private final static int initialRequests = 32 * 32; private final static int expandr = 6; - public final FloorRenderer floor; + public final FloorRenderer floor = new FloorRenderer(); private Array requests = new Array<>(true, initialRequests, BlockRequest.class); private IntSet teamChecks = new IntSet(); @@ -34,7 +34,6 @@ public class BlockRenderer{ private FrameBuffer shadows = new FrameBuffer(1, 1); public BlockRenderer(){ - floor = new FloorRenderer(); for(int i = 0; i < requests.size; i++){ requests.set(i, new BlockRequest()); diff --git a/core/src/io/anuke/mindustry/graphics/Trail.java b/core/src/io/anuke/mindustry/graphics/Trail.java deleted file mode 100644 index 1637e633c8..0000000000 --- a/core/src/io/anuke/mindustry/graphics/Trail.java +++ /dev/null @@ -1,66 +0,0 @@ -package io.anuke.mindustry.graphics; - -import io.anuke.arc.collection.FloatArray; -import io.anuke.arc.graphics.Color; -import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.graphics.g2d.Fill; -import io.anuke.arc.graphics.g2d.Lines; -import io.anuke.arc.math.Mathf; -import io.anuke.arc.util.Time; - -/** - * Class that renders a colored trail. - * TODO remove / recode - */ -public class Trail{ - private final static float maxJump = 15f; - private final int length; - private final FloatArray points = new FloatArray(); - private float lastX, lastY; - - public Trail(int length){ - this.length = length; - } - - public void update(float curx, float cury){ - if(Mathf.dst(curx, cury, lastX, lastY) >= maxJump){ - points.clear(); - } - - points.add(curx, cury); - - while(points.size > (int)(length * 2 / Math.min(Time.delta(), 1f))){ - float[] items = points.items; - System.arraycopy(items, 2, items, 0, points.size - 2); - points.size -= 2; - } - - lastX = curx; - lastY = cury; - } - - public void clear(){ - points.clear(); - } - - public void draw(Color color, float stroke){ - Draw.color(color); - - for(int i = 0; i < points.size - 2; i += 2){ - float x = points.get(i); - float y = points.get(i + 1); - float x2 = points.get(i + 2); - float y2 = points.get(i + 3); - float s = Mathf.clamp((float) (i) / points.size); - - Lines.stroke(s * stroke); - Lines.line(x, y, x2, y2); - } - - if(points.size >= 2){ - Fill.circle(points.get(points.size - 2), points.get(points.size - 1), stroke / 2f); - } - - Draw.reset(); - } -} diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index 2dcaafd89f..e187353ed8 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -48,7 +48,6 @@ public class MobileInput extends InputHandler implements GestureListener{ //gesture data private Vector2 vector = new Vector2(); private boolean canPan; - private boolean zoomed = false; /** Set of completed guides. */ private ObjectSet guides = new ObjectSet<>(); @@ -663,6 +662,9 @@ public class MobileInput extends InputHandler implements GestureListener{ @Override public boolean pan(float x, float y, float deltaX, float deltaY){ if(!canPan) return false; + float scale = Core.camera.width / Core.graphics.getWidth(); + deltaX *= scale; + deltaY *= scale; //can't pan in line mode with one finger or while dropping items! if((lineMode && !Core.input.isTouched(1)) || droppingItem){ @@ -673,11 +675,11 @@ public class MobileInput extends InputHandler implements GestureListener{ for(PlaceRequest req : selection){ if(req.remove) continue; //don't shift removal requests req.x += deltaX; - req.y -= deltaY; + req.y += deltaY; } }else{ //pan player - Core.camera.position.x -= deltaX; + Core.camera.position.x += deltaX; Core.camera.position.y += deltaY; } @@ -686,20 +688,9 @@ public class MobileInput extends InputHandler implements GestureListener{ @Override public boolean zoom(float initialDistance, float distance){ - - if(Math.abs(distance - initialDistance) > io.anuke.arc.scene.ui.layout.Unit.dp.scl(100f) && !zoomed){ - int amount = (distance > initialDistance ? 1 : -1); - renderer.scaleCamera(Math.round(io.anuke.arc.scene.ui.layout.Unit.dp.scl(amount))); - zoomed = true; - return true; - } - - return false; - } - - @Override - public void pinchStop(){ - zoomed = false; + float amount = (distance > initialDistance ? 0.1f : -0.1f) * Time.delta(); + renderer.scaleCamera(io.anuke.arc.scene.ui.layout.Unit.dp.scl(amount)); + return true; } @Override diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index c645514f43..8365e7323d 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -148,7 +148,6 @@ public class HudFragment extends Fragment{ }); //minimap - //TODO screws everything up, somehow //parent.fill(t -> t.top().right().add(new Minimap()).visible(() -> !state.is(State.menu) && Core.settings.getBool("minimap"))); //paused table 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 77b847308a..7a1894a54c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -152,8 +152,7 @@ public class CoreBlock extends StorageBlock{ Shaders.build.color.set(Palette.accent); Shaders.build.time = -entity.time / 10f; - Draw.shader(Shaders.build, false); - Shaders.build.apply(); + Draw.shader(Shaders.build, true); Draw.rect(region, tile.drawx(), tile.drawy()); Draw.shader(); diff --git a/net/build/libs/net-release.jar b/net/build/libs/net-release.jar deleted file mode 100644 index dd50ccf98f2f4a53ce0eb1fed9af1de3c71d247f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23415 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 diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index a20d2a54e3..013892bdf1 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -105,7 +105,7 @@ public class ServerControl implements ApplicationListener{ String[] commands = {}; if(args.length > 0){ - commands = String.join(" ", args).split(","); + commands = Strings.join(" ", args).split(","); info("&lmFound {0} command-line arguments to parse. {1}", commands.length); }