From 3e43f5577e99140bed1c799251046442e7eb8149 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 4 Nov 2019 23:47:51 -0500 Subject: [PATCH] Bugfixes --- core/assets/bundles/bundle.properties | 1 + core/src/io/anuke/mindustry/core/Logic.java | 12 ++++++------ core/src/io/anuke/mindustry/core/Renderer.java | 2 +- .../io/anuke/mindustry/graphics/BlockRenderer.java | 4 +++- .../mindustry/ui/dialogs/SettingsMenuDialog.java | 1 + 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index aa79d77ee5..ef9a869ba6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -616,6 +616,7 @@ setting.difficulty.insane = Insane setting.difficulty.name = Difficulty: setting.screenshake.name = Screen Shake setting.effects.name = Display Effects +setting.destroyedblocks.name = Display Destroyed Blocks setting.sensitivity.name = Controller Sensitivity setting.saveinterval.name = Save Interval setting.seconds = {0} Seconds diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 959f90b01d..a3f87727de 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -18,6 +18,8 @@ import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.BuildBlock.*; import io.anuke.mindustry.world.blocks.power.*; +import java.util.*; + import static io.anuke.mindustry.Vars.*; /** @@ -79,14 +81,12 @@ public class Logic implements ApplicationListener{ Events.on(BlockBuildEndEvent.class, event -> { if(!event.breaking){ TeamData data = state.teams.get(event.team); - - //painful O(n) iteration + copy - for(int i = 0; i < data.brokenBlocks.size; i++){ - BrokenBlock b = data.brokenBlocks.get(i); + Iterator it = data.brokenBlocks.iterator(); + while(it.hasNext()){ + BrokenBlock b = it.next(); Block block = content.block(b.block); if(event.tile.block().bounds(event.tile.x, event.tile.y, Tmp.r1).overlaps(block.bounds(b.x, b.y, Tmp.r2))){ - data.brokenBlocks.removeIndex(i); - break; + it.remove(); } } } diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 90a32bd6c5..0803cab883 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -239,7 +239,7 @@ public class Renderer implements ApplicationListener{ blocks.drawBlocks(Layer.block); blocks.drawFog(); - blocks.drawBroken(); + blocks.drawDestroyed(); Draw.shader(Shaders.blockbuild, true); blocks.drawBlocks(Layer.placement); diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 009c88966f..6d3a8a5281 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -124,7 +124,9 @@ public class BlockRenderer implements Disposable{ Draw.shader(); } - public void drawBroken(){ + public void drawDestroyed(){ + if(!Core.settings.getBool("destroyedblocks")) return; + if(control.input.isPlacing() || control.input.isBreaking()){ brokenFade = Mathf.lerpDelta(brokenFade, 1f, 0.1f); }else{ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index a7372b6d06..5c2f479a0a 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -294,6 +294,7 @@ public class SettingsMenuDialog extends SettingsDialog{ } graphics.checkPref("effects", true); + graphics.checkPref("destroyedblocks", true); graphics.checkPref("playerchat", true); graphics.checkPref("minimap", !mobile); graphics.checkPref("position", false);