v0.8.0: tweaked lifecycle managment, actor thread is now allowed to end

This commit is contained in:
Evan Debenham 2019-10-28 23:34:56 -04:00
parent df3a0a010b
commit f038bde5cc
4 changed files with 25 additions and 4 deletions

View File

@ -158,10 +158,10 @@ public class Game implements ApplicationListener {
public void finish(){ public void finish(){
Gdx.app.exit(); Gdx.app.exit();
} }
@Override public void destroy(){
public void dispose() {
if (scene != null) { if (scene != null) {
scene.destroy(); scene.destroy();
scene = null; scene = null;
@ -172,6 +172,11 @@ public class Game implements ApplicationListener {
Sample.INSTANCE.reset(); Sample.INSTANCE.reset();
} }
@Override
public void dispose() {
destroy();
}
public static void resetScene() { public static void resetScene() {
switchScene( instance.sceneClass ); switchScene( instance.sceneClass );
} }

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon; package com.shatteredpixel.shatteredpixeldungeon;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.WelcomeScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.WelcomeScene;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
@ -224,7 +225,13 @@ public class ShatteredPixelDungeon extends Game {
updateDisplaySize(); updateDisplaySize();
} }
@Override
public void destroy(){
super.destroy();
GameScene.endActorThread();
}
public void updateDisplaySize(){ public void updateDisplaySize(){
platform.updateDisplaySize(); platform.updateDisplaySize();
} }

View File

@ -204,6 +204,8 @@ public abstract class Actor implements Bundlable {
return current != null; return current != null;
} }
public static boolean keepActorThreadAlive = true;
public static void process() { public static void process() {
boolean doNext; boolean doNext;
@ -284,7 +286,7 @@ public abstract class Actor implements Bundlable {
} }
} }
} while (true); } while (keepActorThreadAlive);
} }
public static void add( Actor actor ) { public static void add( Actor actor ) {

View File

@ -505,6 +505,13 @@ public class GameScene extends PixelScene {
super.destroy(); super.destroy();
} }
public static void endActorThread(){
if (actorThread.isAlive()){
Actor.keepActorThreadAlive = false;
actorThread.interrupt();
}
}
@Override @Override
public synchronized void onPause() { public synchronized void onPause() {
try { try {