From 588523b311965fba6bca328a41d4b2bd68379863 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 6 Aug 2021 09:34:38 -0400 Subject: [PATCH] Avoid lambda capture in puddles --- .../mindustry/entities/comp/PuddleComp.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index 68972714e7..0e9e779c58 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -1,5 +1,6 @@ package mindustry.entities.comp; +import arc.func.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; @@ -23,6 +24,20 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ private static final Rect rect = new Rect(), rect2 = new Rect(); private static int seeds; + private static Puddle paramPuddle; + private static Cons unitCons = unit -> { + if(unit.isGrounded() && !unit.hovering){ + unit.hitbox(rect2); + if(rect.overlaps(rect2)){ + unit.apply(paramPuddle.liquid.effect, 60 * 2); + + if(unit.vel.len2() > 0.1f * 0.1f){ + Fx.ripple.at(unit.x, unit.y, unit.type.rippleScale, paramPuddle.liquid.color); + } + } + } + }; + @Import int id; @Import float x, y; @@ -64,18 +79,9 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ //effects-only code if(amount >= maxLiquid / 2f && updateTime <= 0f){ - Units.nearby(rect.setSize(Mathf.clamp(amount / (maxLiquid / 1.5f)) * 10f).setCenter(x, y), unit -> { - if(unit.isGrounded() && !unit.hovering){ - unit.hitbox(rect2); - if(rect.overlaps(rect2)){ - unit.apply(liquid.effect, 60 * 2); + paramPuddle = self(); - if(unit.vel.len() > 0.1){ - Fx.ripple.at(unit.x, unit.y, unit.type.rippleScale, liquid.color); - } - } - } - }); + Units.nearby(rect.setSize(Mathf.clamp(amount / (maxLiquid / 1.5f)) * 10f).setCenter(x, y), unitCons); if(liquid.temperature > 0.7f && (tile.build != null) && Mathf.chance(0.5)){ Fires.create(tile);