From e3f388692ff88bce899a8ce995872c7dd5a5273f Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 19 Jan 2021 15:13:41 -0500 Subject: [PATCH] Misc cleanup & fixes --- core/assets/scripts/base.js | 35 +++++++++---------- core/assets/scripts/global.js | 35 +++++++++---------- core/src/mindustry/core/Renderer.java | 3 +- .../src/mindustry/graphics/BlockRenderer.java | 4 +-- core/src/mindustry/graphics/Drawf.java | 16 +++++++++ core/src/mindustry/input/MobileInput.java | 8 +---- core/src/mindustry/mod/Scripts.java | 4 +++ .../world/blocks/payloads/Payload.java | 5 +++ .../world/blocks/payloads/UnitPayload.java | 7 +++- .../blocks/production/PayloadAcceptor.java | 16 +++++---- .../world/blocks/units/Reconstructor.java | 5 ++- 11 files changed, 78 insertions(+), 60 deletions(-) diff --git a/core/assets/scripts/base.js b/core/assets/scripts/base.js index 368ebff42d..d97e6aa8f2 100755 --- a/core/assets/scripts/base.js +++ b/core/assets/scripts/base.js @@ -1,9 +1,10 @@ "use strict"; -function log(context, obj){ - Vars.mods.scripts.log(context, String(obj)) -} +let scriptName = "base.js" +let modName = "none" +const log = (context, obj) => Vars.mods.scripts.log(context, String(obj)) +const print = text => log(modName + "/" + scriptName, text) const readString = path => Vars.mods.scripts.readString(path) const readBytes = path => Vars.mods.scripts.readBytes(path) const loadMusic = path => Vars.mods.scripts.loadMusic(path) @@ -13,11 +14,20 @@ const readFile = (purpose, ext, cons) => Vars.mods.scripts.readFile(purpose, ext const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons); const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str); const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes); +const newFloats = cap => Vars.mods.getScripts().newFloats(cap); -let scriptName = "base.js" -let modName = "none" +//these are not strictly necessary, but are kept for edge cases +const run = method => new java.lang.Runnable(){run: method} +const boolf = method => new Boolf(){get: method} +const boolp = method => new Boolp(){get: method} +const floatf = method => new Floatf(){get: method} +const floatp = method => new Floatp(){get: method} +const cons = method => new Cons(){get: method} +const prov = method => new Prov(){get: method} +const func = method => new Func(){get: method} -const print = text => log(modName + "/" + scriptName, text); +const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer})) +Call = Packages.mindustry.gen.Call //js 'extend(Base, ..., {})' = java 'new Base(...) {}' function extend(/*Base, ..., def*/){ @@ -39,16 +49,3 @@ function extend(/*Base, ..., def*/){ //For backwards compatibility, use extend instead const extendContent = extend; - -//these are not strictly necessary, but are kept for edge cases -const run = method => new java.lang.Runnable(){run: method} -const boolf = method => new Boolf(){get: method} -const boolp = method => new Boolp(){get: method} -const floatf = method => new Floatf(){get: method} -const floatp = method => new Floatp(){get: method} -const cons = method => new Cons(){get: method} -const prov = method => new Prov(){get: method} -const func = method => new Func(){get: method} - -const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer})) -Call = Packages.mindustry.gen.Call diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 92a7fd5562..4e40e985f7 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -2,10 +2,11 @@ "use strict"; -function log(context, obj){ - Vars.mods.scripts.log(context, String(obj)) -} +let scriptName = "base.js" +let modName = "none" +const log = (context, obj) => Vars.mods.scripts.log(context, String(obj)) +const print = text => log(modName + "/" + scriptName, text) const readString = path => Vars.mods.scripts.readString(path) const readBytes = path => Vars.mods.scripts.readBytes(path) const loadMusic = path => Vars.mods.scripts.loadMusic(path) @@ -15,11 +16,20 @@ const readFile = (purpose, ext, cons) => Vars.mods.scripts.readFile(purpose, ext const readBinFile = (purpose, ext, cons) => Vars.mods.scripts.readBinFile(purpose, ext, cons); const writeFile = (purpose, ext, str) => Vars.mods.scripts.writeFile(purpose, ext, str); const writeBinFile = (purpose, ext, bytes) => Vars.mods.scripts.writeBinFile(purpose, ext, bytes); +const newFloats = cap => Vars.mods.getScripts().newFloats(cap); -let scriptName = "base.js" -let modName = "none" +//these are not strictly necessary, but are kept for edge cases +const run = method => new java.lang.Runnable(){run: method} +const boolf = method => new Boolf(){get: method} +const boolp = method => new Boolp(){get: method} +const floatf = method => new Floatf(){get: method} +const floatp = method => new Floatp(){get: method} +const cons = method => new Cons(){get: method} +const prov = method => new Prov(){get: method} +const func = method => new Func(){get: method} -const print = text => log(modName + "/" + scriptName, text); +const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer})) +Call = Packages.mindustry.gen.Call //js 'extend(Base, ..., {})' = java 'new Base(...) {}' function extend(/*Base, ..., def*/){ @@ -42,19 +52,6 @@ function extend(/*Base, ..., def*/){ //For backwards compatibility, use extend instead const extendContent = extend; -//these are not strictly necessary, but are kept for edge cases -const run = method => new java.lang.Runnable(){run: method} -const boolf = method => new Boolf(){get: method} -const boolp = method => new Boolp(){get: method} -const floatf = method => new Floatf(){get: method} -const floatp = method => new Floatp(){get: method} -const cons = method => new Cons(){get: method} -const prov = method => new Prov(){get: method} -const func = method => new Func(){get: method} - -const newEffect = (lifetime, renderer) => new Effect.Effect(lifetime, new Effect.EffectRenderer({render: renderer})) -Call = Packages.mindustry.gen.Call - importPackage(Packages.arc) importPackage(Packages.arc.func) importPackage(Packages.arc.graphics) diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 7b812f03f9..0e0ac343d4 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -33,7 +33,7 @@ public class Renderer implements ApplicationListener{ public @Nullable Bloom bloom; public FrameBuffer effectBuffer = new FrameBuffer(); - public boolean animateShields, drawWeather = true; + public boolean animateShields, drawWeather = true, drawStatus; /** minZoom = zooming out, maxZoom = zooming in */ public float minZoom = 1.5f, maxZoom = 6f; @@ -81,6 +81,7 @@ public class Renderer implements ApplicationListener{ laserOpacity = settings.getInt("lasersopacity") / 100f; bridgeOpacity = settings.getInt("bridgeopacity") / 100f; animateShields = settings.getBool("animatedshields"); + drawStatus = Core.settings.getBool("blockstatus"); if(landTime > 0){ landTime -= Time.delta; diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index 651e1d01d7..072b6e1a98 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -39,7 +39,6 @@ public class BlockRenderer implements Disposable{ private Seq outArray2 = new Seq<>(); private Seq shadowEvents = new Seq<>(); private IntSet procEntities = new IntSet(), procLinks = new IntSet(), procLights = new IntSet(); - private boolean displayStatus = false; public BlockRenderer(){ @@ -177,7 +176,6 @@ public class BlockRenderer implements Disposable{ /** Process all blocks to draw. */ public void processBlocks(){ - displayStatus = Core.settings.getBool("blockstatus"); int avgx = (int)(camera.position.x / tilesize); int avgy = (int)(camera.position.y / tilesize); @@ -275,7 +273,7 @@ public class BlockRenderer implements Disposable{ Draw.z(Layer.block); } - if(displayStatus && block.consumes.any()){ + if(renderer.drawStatus && block.consumes.any()){ entity.drawStatus(); } } diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index b8d1f1e522..83d9065281 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -17,6 +17,22 @@ import static mindustry.Vars.*; public class Drawf{ + public static void target(float x, float y, float rad, Color color){ + target(x, y, rad, 1, color); + } + + public static void target(float x, float y, float rad, float alpha, Color color){ + Lines.stroke(3f); + Draw.color(Pal.gray, alpha); + Lines.poly(x, y, 4, rad, Time.time * 1.5f); + Lines.spikes(x, y, 3f/7f * rad, 6f/7f * rad, 4, Time.time * 1.5f); + Lines.stroke(1f); + Draw.color(color, alpha); + Lines.poly(x, y, 4, rad, Time.time * 1.5f); + Lines.spikes(x, y, 3f/7f * rad, 6f/7f * rad, 4, Time.time * 1.5f); + Draw.reset(); + } + public static float text(){ float z = Draw.z(); if(renderer.pixelator.enabled()){ diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 2ad24c1e9a..a1ca88635a 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -374,13 +374,7 @@ public class MobileInput extends InputHandler implements GestureListener{ crosshairScale = Mathf.lerpDelta(crosshairScale, 1f, 0.2f); - Draw.color(Pal.remove); - Lines.stroke(1f); - - float radius = Interp.swingIn.apply(crosshairScale); - - Lines.poly(target.getX(), target.getY(), 4, 7f * radius, Time.time * 1.5f); - Lines.spikes(target.getX(), target.getY(), 3f * radius, 6f * radius, 4, Time.time * 1.5f); + Drawf.target(target.getX(), target.getY(), 7f * Interp.swingIn.apply(crosshairScale), Pal.remove); } Draw.reset(); diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 6ae9631da1..d1faa3433c 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -80,6 +80,10 @@ public class Scripts implements Disposable{ //region utility mod functions + public float[] newFloats(int capacity){ + return new float[capacity]; + } + public String readString(String path){ return Vars.tree.get(path, true).readString(); } diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index 851678094e..afce4b0da4 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -32,6 +32,11 @@ public interface Payload{ return size() / tilesize <= s; } + /** @return rotation of this payload. */ + default float rotation(){ + return 0f; + } + /** writes the payload for saving. */ void write(Writes write); diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index cb04b5f36d..c1b5b8a014 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -35,7 +35,12 @@ public class UnitPayload implements Payload{ @Override public void set(float x, float y, float rotation){ unit.set(x, y); - unit.rotation(rotation); + unit.rotation = rotation; + } + + @Override + public float rotation(){ + return unit.rotation; } @Override diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 2851d4c27f..df21f8ad6f 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -14,7 +14,7 @@ import mindustry.world.blocks.payloads.*; import static mindustry.Vars.*; public class PayloadAcceptor extends Block{ - public float payloadSpeed = 0.5f; + public float payloadSpeed = 0.5f, payloadRotateSpeed = 5f; public @Load(value = "@-top", fallback = "factory-top-@size") TextureRegion topRegion; public @Load(value = "@-out", fallback = "factory-out-@size") TextureRegion outRegion; @@ -66,7 +66,7 @@ public class PayloadAcceptor extends Block{ public void handlePayload(Building source, Payload payload){ this.payload = (T)payload; this.payVector.set(source).sub(this).clamp(-size * tilesize / 2f, -size * tilesize / 2f, size * tilesize / 2f, size * tilesize / 2f); - this.payRotation = source.angleTo(this); + this.payRotation = payload.rotation(); updatePayload(); } @@ -115,7 +115,7 @@ public class PayloadAcceptor extends Block{ updatePayload(); - payRotation = Mathf.slerpDelta(payRotation, rotate ? rotdeg() : 90f, 0.3f); + payRotation = Angles.moveToward(payRotation, rotate ? rotdeg() : 90f, payloadRotateSpeed * edelta()); payVector.approach(Vec2.ZERO, payloadSpeed * delta()); return hasArrived(); @@ -126,10 +126,12 @@ public class PayloadAcceptor extends Block{ updatePayload(); - payVector.trns(rotdeg(), payVector.len() + delta() * payloadSpeed); - payRotation = rotdeg(); + Vec2 dest = Tmp.v1.trns(rotdeg(), size* tilesize/2f); - if(payVector.len() >= size * tilesize/2f){ + payRotation = Angles.moveToward(payRotation, rotdeg(), payloadRotateSpeed * edelta()); + payVector.approach(dest, payloadSpeed * delta()); + + if(payVector.within(dest, 0.001f)){ payVector.clamp(-size * tilesize / 2f, -size * tilesize / 2f, size * tilesize / 2f, size * tilesize / 2f); Building front = front(); @@ -155,7 +157,7 @@ public class PayloadAcceptor extends Block{ public void drawPayload(){ if(payload != null){ - payload.set(x + payVector.x, y + payVector.y, payRotation); + updatePayload(); Draw.z(Layer.blockOver); payload.draw(); diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 849e999059..1521511c15 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -142,13 +142,12 @@ public class Reconstructor extends UnitBlock{ if(constructing() && hasArrived()){ Draw.draw(Layer.blockOver, () -> { Draw.alpha(1f - progress/ constructTime); - Draw.rect(payload.unit.type.icon(Cicon.full), x, y, rotdeg() - 90); + Draw.rect(payload.unit.type.icon(Cicon.full), x, y, payload.rotation() - 90); Draw.reset(); - Drawf.construct(this, upgrade(payload.unit.type), rotdeg() - 90f, progress / constructTime, speedScl, time); + Drawf.construct(this, upgrade(payload.unit.type), payload.rotation() - 90f, progress / constructTime, speedScl, time); }); }else{ Draw.z(Layer.blockOver); - payRotation = rotdeg(); drawPayload(); }