Avoid lambda capture in puddles

This commit is contained in:
Anuken
2021-08-06 09:34:38 -04:00
parent b8232326bc
commit 588523b311

View File

@@ -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<Unit> 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);