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 c087b78d2..a0456a133 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 @@ -193,6 +193,8 @@ public enum Music { private synchronized void play(String track, com.badlogic.gdx.audio.Music.OnCompletionListener listener){ try { + fadeTime = fadeTotal = -1; + player = Gdx.audio.newMusic(Gdx.files.internal(track)); player.setLooping(looping); player.setVolume(volumeWithFade()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CeremonialCandle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CeremonialCandle.java index 6d63c28b7..cbe48f367 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CeremonialCandle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/CeremonialCandle.java @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.levels.PrisonLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.quest.RitualSiteRoom; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -187,6 +188,10 @@ public class CeremonialCandle extends Item { elemental.state = elemental.HUNTING; GameScene.add(elemental, 1); + if (Dungeon.level instanceof PrisonLevel){ + ((PrisonLevel) Dungeon.level).updateWandmakerQuestMusic(); + } + for (int i : PathFinder.NEIGHBOURS9){ CellEmitter.get(ritualPos+i).burst(ElmoParticle.FACTORY, 10); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java index 1ebe9fb05..66deba040 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java @@ -138,33 +138,37 @@ public class PrisonLevel extends RegularLevel { 1, 1, 1, 1, 1, 1 }; } - private Boolean wandmakerQuestWasActive = null; - @Override public void occupyCell(Char ch) { super.occupyCell(ch); if (ch == Dungeon.hero) { - if (wandmakerQuestWasActive == null) { - wandmakerQuestWasActive = Wandmaker.Quest.active(); - return; - } - if (Wandmaker.Quest.active() != wandmakerQuestWasActive) { - wandmakerQuestWasActive = Wandmaker.Quest.active(); + updateWandmakerQuestMusic(); + } + } - Game.runOnRenderThread(new Callback() { - @Override - public void call() { - Music.INSTANCE.fadeOut(1f, new Callback() { - @Override - public void call() { - if (Dungeon.level != null) { - Dungeon.level.playLevelMusic(); - } + private Boolean wandmakerQuestWasActive = null; + + public void updateWandmakerQuestMusic(){ + if (wandmakerQuestWasActive == null) { + wandmakerQuestWasActive = Wandmaker.Quest.active(); + return; + } + if (Wandmaker.Quest.active() != wandmakerQuestWasActive) { + wandmakerQuestWasActive = Wandmaker.Quest.active(); + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.fadeOut(1f, new Callback() { + @Override + public void call() { + if (Dungeon.level != null) { + Dungeon.level.playLevelMusic(); } - }); - } - }); - } + } + }); + } + }); } }