diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Game.java b/SPD-classes/src/main/java/com/watabou/noosa/Game.java index e0d50facd..7ec57b1c8 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Game.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Game.java @@ -158,10 +158,10 @@ public class Game implements ApplicationListener { public void finish(){ Gdx.app.exit(); + } - @Override - public void dispose() { + public void destroy(){ if (scene != null) { scene.destroy(); scene = null; @@ -172,6 +172,11 @@ public class Game implements ApplicationListener { Sample.INSTANCE.reset(); } + @Override + public void dispose() { + destroy(); + } + public static void resetScene() { switchScene( instance.sceneClass ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index b1f562ef9..6504c61b5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.WelcomeScene; import com.watabou.noosa.Game; @@ -224,7 +225,13 @@ public class ShatteredPixelDungeon extends Game { updateDisplaySize(); } - + + @Override + public void destroy(){ + super.destroy(); + GameScene.endActorThread(); + } + public void updateDisplaySize(){ platform.updateDisplaySize(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java index 02ae52658..3fb2b4695 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Actor.java @@ -204,6 +204,8 @@ public abstract class Actor implements Bundlable { return current != null; } + public static boolean keepActorThreadAlive = true; + public static void process() { boolean doNext; @@ -284,7 +286,7 @@ public abstract class Actor implements Bundlable { } } - } while (true); + } while (keepActorThreadAlive); } public static void add( Actor actor ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 061baab25..2493f56fe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -505,6 +505,13 @@ public class GameScene extends PixelScene { super.destroy(); } + public static void endActorThread(){ + if (actorThread.isAlive()){ + Actor.keepActorThreadAlive = false; + actorThread.interrupt(); + } + } + @Override public synchronized void onPause() { try {