From 9c652273a5c638e380a96efdbe82d1a50921016b Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 19 Oct 2019 11:59:15 -0400 Subject: [PATCH] v0.7.5d: added various safety checks --- .../main/java/com/watabou/noosa/audio/Music.java | 14 ++++++++++---- .../mechanics/Ballistica.java | 13 +++++++++---- .../shatteredpixeldungeon/windows/WndGame.java | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java index 591133874..cc6867774 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java @@ -22,6 +22,7 @@ package com.watabou.noosa.audio; import com.badlogic.gdx.Gdx; +import com.watabou.noosa.Game; public enum Music { @@ -50,10 +51,15 @@ public enum Music { return; } - player = Gdx.audio.newMusic(Gdx.files.internal(assetName)); - player.setLooping(looping); - player.setVolume(volume); - player.play(); + try { + player = Gdx.audio.newMusic(Gdx.files.internal(assetName)); + player.setLooping(looping); + player.setVolume(volume); + player.play(); + } catch (Exception e){ + Game.reportException(e); + player = null; + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/Ballistica.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/Ballistica.java index 910e2c8f2..9c0ca3615 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/Ballistica.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/Ballistica.java @@ -52,10 +52,15 @@ public class Ballistica { public Ballistica( int from, int to, int params ){ sourcePos = from; build(from, to, (params & STOP_TARGET) > 0, (params & STOP_CHARS) > 0, (params & STOP_TERRAIN) > 0); - if (collisionPos != null) - dist = path.indexOf( collisionPos ); - else - collisionPos = path.get( dist=path.size()-1 ); + if (collisionPos != null) { + dist = path.indexOf(collisionPos); + } else if (!path.isEmpty()) { + collisionPos = path.get(dist = path.size() - 1); + } else { + path.add(from); + collisionPos = from; + dist = 0; + } } private void build( int from, int to, boolean stopTarget, boolean stopChars, boolean stopTerrain ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java index 57da3df48..a0495cb9d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java @@ -67,7 +67,7 @@ public class WndGame extends Window { } // Restart - if (!Dungeon.hero.isAlive()) { + if (Dungeon.hero == null || !Dungeon.hero.isAlive()) { RedButton btnStart; addButton( btnStart = new RedButton( Messages.get(this, "start") ) {