From a116a2a5537e99267a1f53a41d7b73e2283429b8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 2 Jun 2018 22:08:37 -0400 Subject: [PATCH] Fixed crash caused by lack of multithreading --- core/src/io/anuke/mindustry/core/Control.java | 14 ++++++++------ .../src/io/anuke/mindustry/core/ThreadHandler.java | 8 ++++++++ core/src/io/anuke/mindustry/ui/ItemImage.java | 2 -- core/src/io/anuke/mindustry/world/Build.java | 3 ++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 5776fbe18e..c7841950d0 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -176,7 +176,7 @@ public class Control extends Module{ Timers.runTask(30f, () -> state.set(State.menu)); }); - Events.on(WorldLoadEvent.class, () -> Gdx.app.postRunnable(() -> Events.fire(WorldLoadGraphicsEvent.class))); + Events.on(WorldLoadEvent.class, () -> threads.runGraphics(() -> Events.fire(WorldLoadGraphicsEvent.class))); } public void addPlayer(int index){ @@ -261,12 +261,14 @@ public class Control extends Module{ ui.loadfrag.show(); saves.resetSave(); - threads.run(() -> { - logic.reset(); - world.loadMap(map); - logic.play(); + Timers.run(5f, () -> { + threads.run(() -> { + logic.reset(); + world.loadMap(map); + logic.play(); - Gdx.app.postRunnable(ui.loadfrag::hide); + Gdx.app.postRunnable(ui.loadfrag::hide); + }); }); } diff --git a/core/src/io/anuke/mindustry/core/ThreadHandler.java b/core/src/io/anuke/mindustry/core/ThreadHandler.java index 3fe2a7242d..6f24e2c7dd 100644 --- a/core/src/io/anuke/mindustry/core/ThreadHandler.java +++ b/core/src/io/anuke/mindustry/core/ThreadHandler.java @@ -43,6 +43,14 @@ public class ThreadHandler { } } + public void runGraphics(Runnable r){ + if(enabled) { + Gdx.app.postRunnable(r); + }else{ + r.run(); + } + } + public void runDelay(Runnable r){ if(enabled) { synchronized (toRun) { diff --git a/core/src/io/anuke/mindustry/ui/ItemImage.java b/core/src/io/anuke/mindustry/ui/ItemImage.java index e38ee4ac3d..0692f1010f 100644 --- a/core/src/io/anuke/mindustry/ui/ItemImage.java +++ b/core/src/io/anuke/mindustry/ui/ItemImage.java @@ -14,8 +14,6 @@ public class ItemImage extends Stack { public ItemImage(TextureRegion region, Supplier text, Color color) { Table t = new Table().left().bottom(); - t.label(text).get().setFontScale(0.5f); - image = new Image(region); image.setColor(color); diff --git a/core/src/io/anuke/mindustry/world/Build.java b/core/src/io/anuke/mindustry/world/Build.java index 4d099c748d..d2d6485bc8 100644 --- a/core/src/io/anuke/mindustry/world/Build.java +++ b/core/src/io/anuke/mindustry/world/Build.java @@ -91,7 +91,7 @@ public class Build { rect.setSize(type.size * tilesize, type.size * tilesize); rect.setCenter(type.offset() + x * tilesize, type.offset() + y * tilesize); - if (type.solid || type.solidifes) + if (type.solid || type.solidifes) { synchronized (Entities.entityLock) { try { @@ -112,6 +112,7 @@ public class Build { return false; } } + } Tile tile = world.tile(x, y);