From 8201f4a9bc813b1a89eb7158a81bf0a4cdf63542 Mon Sep 17 00:00:00 2001 From: xzxADIxzx <76255437+xzxADIxzx@users.noreply.github.com> Date: Fri, 28 Feb 2025 21:51:58 +0300 Subject: [PATCH] improved the look of drop zone radius --- src/java/schema/input/InputSystem.java | 8 ++------ src/java/schema/tools/Overlay.java | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/java/schema/input/InputSystem.java b/src/java/schema/input/InputSystem.java index 7465d76..e0f0f2e 100644 --- a/src/java/schema/input/InputSystem.java +++ b/src/java/schema/input/InputSystem.java @@ -121,11 +121,7 @@ protected void drawControl() { if (has) { Draw.mixcol(Pal.accent, 1f); Draw.alpha(controlFade); - - if (renderer.bloom != null) { - renderer.bloom.setBloomIntensity(.8f); - renderer.bloom.capture(); - } + overlay.capture(.8f); if (unit != null) Draw.rect(unit.icon(), unit, unit instanceof BlockUnitc ? 0f : unit.rotation - 90f); @@ -143,7 +139,7 @@ protected void drawControl() { Draw.rect("select-arrow", sized.getX() + Angles.trnsx(rot, len), sized.getY() + Angles.trnsy(rot, len), 12f, 12f, rot - 135f); } - if (renderer.bloom != null) renderer.bloom.render(); + overlay.render(); Draw.reset(); } } diff --git a/src/java/schema/tools/Overlay.java b/src/java/schema/tools/Overlay.java index 756b283..1205e92 100644 --- a/src/java/schema/tools/Overlay.java +++ b/src/java/schema/tools/Overlay.java @@ -1,6 +1,5 @@ package schema.tools; -import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; import mindustry.graphics.*; @@ -14,6 +13,8 @@ public class Overlay { /** Distance from which spawners are visible. */ public static final float spawnerMargin = 16f * tilesize; + /** Interpolation function applied to alpha. */ + public static final Interp i = new Interp.PowIn(8f); /** Draws the elements of both vanilla and schema overlay */ public void draw() { @@ -26,13 +27,15 @@ public void draw() { if (state.hasSpawns()) { Lines.stroke(2f); - Draw.color(Color.gray, Color.lightGray, Mathf.absin(4f, 1f)); + Draw.color(Pal.remove, Pal.lightishGray, Mathf.absin(4f, 1f)); + capture(4f); spawner.getSpawns().each(s -> s.within(player, state.rules.dropZoneRadius + spawnerMargin), s -> { - Draw.alpha(1f - (player.dst(s) - state.rules.dropZoneRadius) / spawnerMargin); + Draw.alpha(1f - i.apply((player.dst(s) - state.rules.dropZoneRadius) / spawnerMargin)); Lines.dashCircle(s.worldx(), s.worldy(), state.rules.dropZoneRadius); }); + render(); } if (insys.block == null && !scene.hasMouse()) { @@ -46,6 +49,19 @@ public void draw() { } } + /** Captures subsequent draw calls. */ + public void capture(float intensity) { + if (renderer.bloom != null) { + renderer.bloom.setBloomIntensity(intensity); + renderer.bloom.capture(); + } + } + + /** Renders the {@link #capture(float) captured draw calls} with bloom effect. */ + public void render() { + if (renderer.bloom != null) renderer.bloom.render(); + } + // region agent /** Returns the agent of this component. */