From cbcdc96aaa2dbc587ac4c749fade76fda3efbfee Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 22 Dec 2017 00:25:48 -0500 Subject: [PATCH] Fix rendering bug --- core/src/io/anuke/mindustry/core/Renderer.java | 6 +++++- .../io/anuke/mindustry/graphics/BlockRenderer.java | 14 +++++++++++++- .../anuke/mindustry/ui/fragments/HudFragment.java | 8 +++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 724079300d..440b86c3df 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -218,7 +218,7 @@ public class Renderer extends RendererModule{ Graphics.shader(); Entities.draw(Entities.defaultGroup()); - + blocks.drawBlocks(true); Entities.draw(control.bulletGroup); @@ -317,6 +317,10 @@ public class Renderer extends RendererModule{ Draw.color(); } + public BlockRenderer getBlocks() { + return blocks; + } + public void addShieldHit(float x, float y){ shieldHits.addAll(x, y, 0f); } diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 9e64ad3f0a..bfd5caeacd 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -17,6 +17,7 @@ import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.mindustry.world.blocks.types.StaticBlock; +import io.anuke.ucore.UCore; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Graphics; @@ -48,6 +49,11 @@ public class BlockRenderer{ public int compareTo(BlockRequest other){ return layer.compareTo(other.layer); } + + @Override + public String toString(){ + return tile.block().name + ":" + layer.toString(); + } } /**Process all blocks to draw, simultaneously drawing block shadows and static blocks.*/ @@ -114,17 +120,23 @@ public class BlockRenderer{ Arrays.sort(requests.items, 0, requestidx); iterateidx = 0; } + + public int getRequests(){ + return requestidx; + } public void drawBlocks(boolean top){ Layer stopAt = top ? Layer.laser : Layer.overlay; - for(; iterateidx < requests.size; iterateidx ++){ + for(; iterateidx < requestidx; iterateidx ++){ + if(iterateidx < requests.size - 1 && requests.get(iterateidx).layer.ordinal() > stopAt.ordinal()){ break; } BlockRequest req = requests.get(iterateidx); Block block = req.tile.block(); + if(req.layer == Layer.block){ block.draw(req.tile); }else if(req.layer == block.layer){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 6ee468df90..53f77e43a1 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -136,11 +136,13 @@ public class HudFragment implements Fragment{ aleft(); new label("[green]density: " + Gdx.graphics.getDensity()).left(); row(); - new label(()->"[purple]tiles: " + Vars.control.tileGroup.amount()).left(); + new label(() -> "[blue]requests: " + renderer.getBlocks().getRequests()).left(); row(); - new label(()->"[purple]enemies: " + Vars.control.enemyGroup.amount()).left(); + new label(() -> "[purple]tiles: " + Vars.control.tileGroup.amount()).left(); row(); - new label(()->"[orange]noclip: " + Vars.noclip).left(); + new label(() -> "[purple]enemies: " + Vars.control.enemyGroup.amount()).left(); + row(); + new label(() -> "[orange]noclip: " + Vars.noclip).left(); row(); new label("[red]DEBUG MODE").scale(0.5f).left(); }}.end();