v0.6.5b: added a variety of safety checks

This commit is contained in:
Evan Debenham 2018-05-16 12:44:00 -04:00
parent 8733556462
commit 05028ebc2a
5 changed files with 27 additions and 7 deletions

View File

@ -99,8 +99,12 @@ public enum Music {
public void stop() { public void stop() {
if (player != null) { if (player != null) {
try {
player.stop(); player.stop();
player.release(); player.release();
} catch ( Exception e ){
Game.reportException(e);
}
player = null; player = null;
} }
} }

View File

@ -42,10 +42,12 @@ public class ShockingDart extends TippedDart {
defender.damage(Random.NormalIntRange(8, 12), this); defender.damage(Random.NormalIntRange(8, 12), this);
CharSprite s = defender.sprite; CharSprite s = defender.sprite;
if (s != null && s.parent != null) {
ArrayList<Lightning.Arc> arcs = new ArrayList<>(); ArrayList<Lightning.Arc> arcs = new ArrayList<>();
arcs.add(new Lightning.Arc(new PointF(s.x, s.y + s.height / 2), new PointF(s.x + s.width, s.y + s.height / 2))); arcs.add(new Lightning.Arc(new PointF(s.x, s.y + s.height / 2), new PointF(s.x + s.width, s.y + s.height / 2)));
arcs.add(new Lightning.Arc(new PointF(s.x + s.width / 2, s.y), new PointF(s.x + s.width / 2, s.y + s.height))); arcs.add(new Lightning.Arc(new PointF(s.x + s.width / 2, s.y), new PointF(s.x + s.width / 2, s.y + s.height)));
defender.sprite.parent.add( new Lightning( arcs, null ) ); s.parent.add(new Lightning(arcs, null));
}
return super.proc(attacker, defender, damage); return super.proc(attacker, defender, damage);
} }

View File

@ -273,10 +273,15 @@ public abstract class RegularLevel extends Level {
@Override @Override
public int randomDestination() { public int randomDestination() {
int count = 0;
int cell = -1; int cell = -1;
while (true) { while (true) {
if (++count > 30) {
return -1;
}
Room room = Random.element( rooms ); Room room = Random.element( rooms );
if (room == null) { if (room == null) {
continue; continue;

View File

@ -159,6 +159,11 @@ public class GameScene extends PixelScene {
@Override @Override
public void create() { public void create() {
if (Dungeon.hero == null){
ShatteredPixelDungeon.switchNoFade(TitleScene.class);
return;
}
Music.INSTANCE.play( Assets.TUNE, true ); Music.INSTANCE.play( Assets.TUNE, true );
SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal()); SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal());

View File

@ -91,7 +91,11 @@ public class WndRanking extends WndTabbed {
thread = null; thread = null;
if (error == null) { if (error == null) {
remove( busy ); remove( busy );
if (Dungeon.hero != null) {
createControls(); createControls();
} else {
hide();
}
} else { } else {
hide(); hide();
Game.scene().add( new WndError( error ) ); Game.scene().add( new WndError( error ) );