diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 1a0a58abfa..bd0ead2373 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -51,7 +51,9 @@ public class Schematics implements Loadable{ private OptimizedByteArrayOutputStream out = new OptimizedByteArrayOutputStream(1024); private Array all = new Array<>(); private OrderedMap previews = new OrderedMap<>(); + private ObjectSet errored = new ObjectSet<>(); private FrameBuffer shadowBuffer; + private Texture errorTexture; private long lastClearTime; public Schematics(){ @@ -59,6 +61,9 @@ public class Schematics implements Loadable{ previews.each((schem, m) -> m.dispose()); previews.clear(); shadowBuffer.dispose(); + if(errorTexture != null){ + errorTexture.dispose(); + } }); Events.on(ContentReloadEvent.class, event -> { @@ -66,6 +71,12 @@ public class Schematics implements Loadable{ previews.clear(); load(); }); + + Events.on(ClientLoadEvent.class, event -> { + Pixmap pixmap = Core.atlas.getPixmap("error").crop(); + errorTexture = new Texture(pixmap); + pixmap.dispose(); + }); } @Override @@ -163,7 +174,15 @@ public class Schematics implements Loadable{ } public Texture getPreview(Schematic schematic){ - return getBuffer(schematic).getTexture(); + if(errored.contains(schematic)) return errorTexture; + + try{ + return getBuffer(schematic).getTexture(); + }catch(Throwable t){ + Log.err(t); + errored.add(schematic); + return errorTexture; + } } public boolean hasPreview(Schematic schematic){ diff --git a/core/src/mindustry/graphics/CacheLayer.java b/core/src/mindustry/graphics/CacheLayer.java index 05be5fc355..6363efae98 100644 --- a/core/src/mindustry/graphics/CacheLayer.java +++ b/core/src/mindustry/graphics/CacheLayer.java @@ -1,11 +1,10 @@ package mindustry.graphics; -import arc.Core; -import arc.graphics.Color; -import arc.graphics.g2d.Draw; -import arc.graphics.gl.Shader; +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.graphics.gl.*; -import static arc.Core.camera; import static mindustry.Vars.renderer; public enum CacheLayer{ @@ -81,7 +80,7 @@ public enum CacheLayer{ renderer.effectBuffer.end(); Draw.shader(shader); - Draw.rect(Draw.wrap(renderer.effectBuffer.getTexture()), camera.position.x, camera.position.y, camera.width, -camera.height); + Draw.rect(renderer.effectBuffer); Draw.shader(); renderer.blocks.floor.beginc(); diff --git a/core/src/mindustry/graphics/LightRenderer.java b/core/src/mindustry/graphics/LightRenderer.java index bb2c411ea8..a95c9489a2 100644 --- a/core/src/mindustry/graphics/LightRenderer.java +++ b/core/src/mindustry/graphics/LightRenderer.java @@ -203,7 +203,7 @@ public class LightRenderer{ Draw.color(); Shaders.light.ambient.set(state.rules.ambientLight); Draw.shader(Shaders.light); - Draw.rect(Draw.wrap(buffer.getTexture()), Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height); + Draw.rect(buffer); Draw.shader(); lights.clear(); diff --git a/core/src/mindustry/graphics/Pixelator.java b/core/src/mindustry/graphics/Pixelator.java index 438839f44f..acaa6bebca 100644 --- a/core/src/mindustry/graphics/Pixelator.java +++ b/core/src/mindustry/graphics/Pixelator.java @@ -43,7 +43,7 @@ public class Pixelator implements Disposable{ buffer.end(); Draw.blend(Blending.disabled); - Draw.rect(Draw.wrap(buffer.getTexture()), Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height); + Draw.rect(buffer); Draw.blend(); Groups.drawNames(); diff --git a/tests/src/test/java/power/DirectConsumerTests.java b/tests/src/test/java/power/DirectConsumerTests.java index cf52c5887a..36770cd951 100644 --- a/tests/src/test/java/power/DirectConsumerTests.java +++ b/tests/src/test/java/power/DirectConsumerTests.java @@ -1,19 +1,9 @@ package power; -import mindustry.content.Items; -import mindustry.content.UnitTypes; -import mindustry.type.ItemStack; -import mindustry.world.Tile; -import mindustry.world.blocks.power.PowerGenerator; -import mindustry.world.blocks.power.PowerGraph; -import mindustry.world.blocks.units.UnitFactory; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - /** Tests for direct power consumers. */ public class DirectConsumerTests extends PowerTestFixture{ - + //TODO reimplement +/* @Test void noPowerRequestedWithNoItems(){ testUnitFactory(0, 0, 0.08f, 0.08f, 1f); @@ -52,5 +42,5 @@ public class DirectConsumerTests extends PowerTestFixture{ graph.update(); assertEquals(expectedSatisfaction, consumerTile.entity.power().status); - } + }*/ }