diff --git a/core/src/main/assets/music/caves_boss.ogg b/core/src/main/assets/music/caves_boss.ogg new file mode 100644 index 000000000..53a1558d2 Binary files /dev/null and b/core/src/main/assets/music/caves_boss.ogg differ diff --git a/core/src/main/assets/music/city_boss.ogg b/core/src/main/assets/music/city_boss.ogg new file mode 100644 index 000000000..7d428db93 Binary files /dev/null and b/core/src/main/assets/music/city_boss.ogg differ diff --git a/core/src/main/assets/music/halls_boss.ogg b/core/src/main/assets/music/halls_boss.ogg new file mode 100644 index 000000000..ad0f85464 Binary files /dev/null and b/core/src/main/assets/music/halls_boss.ogg differ diff --git a/core/src/main/assets/music/prison_boss.ogg b/core/src/main/assets/music/prison_boss.ogg new file mode 100644 index 000000000..9f89001df Binary files /dev/null and b/core/src/main/assets/music/prison_boss.ogg differ diff --git a/core/src/main/assets/music/sewers_boss.ogg b/core/src/main/assets/music/sewers_boss.ogg new file mode 100644 index 000000000..439172294 Binary files /dev/null and b/core/src/main/assets/music/sewers_boss.ogg differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java index d90f8ff02..0b23b8be1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java @@ -115,18 +115,23 @@ public class Assets { public static final String SEWERS_1 = "music/sewers_1.ogg"; public static final String SEWERS_2 = "music/sewers_2.ogg"; + public static final String SEWERS_BOSS = "music/sewers_boss.ogg"; public static final String PRISON_1 = "music/prison_1.ogg"; public static final String PRISON_2 = "music/prison_2.ogg"; + public static final String PRISON_BOSS = "music/prison_boss.ogg"; public static final String CAVES_1 = "music/caves_1.ogg"; public static final String CAVES_2 = "music/caves_2.ogg"; + public static final String CAVES_BOSS = "music/caves_boss.ogg"; public static final String CITY_1 = "music/city_1.ogg"; public static final String CITY_2 = "music/city_2.ogg"; + public static final String CITY_BOSS = "music/city_boss.ogg"; public static final String HALLS_1 = "music/halls_1.ogg"; public static final String HALLS_2 = "music/halls_2.ogg"; + public static final String HALLS_BOSS = "music/halls_boss.ogg"; } public static class Sounds { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java index 39edf485e..cdf42503f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java @@ -203,7 +203,7 @@ public class Dungeon { quickslot.reset(); QuickSlotButton.reset(); - depth = 0; + depth = 24; gold = 0; energy = 0; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index 7d44f7ada..d3b61e92a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -228,6 +228,7 @@ public class Goo extends Mob { public void damage(int dmg, Object src) { if (!BossHealthBar.isAssigned()){ BossHealthBar.assignBoss( this ); + Dungeon.level.seal(); } boolean bleeding = (HP*2 <= HT); super.damage(dmg, src); @@ -271,6 +272,7 @@ public class Goo extends Mob { super.notice(); if (!BossHealthBar.isAssigned()) { BossHealthBar.assignBoss(this); + Dungeon.level.seal(); yell(Messages.get(this, "notice")); for (Char ch : Actor.chars()){ if (ch instanceof DriedRose.GhostHero){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java index 2ddf1e7b9..395a75d7b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Statistics; @@ -53,7 +54,10 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.YogSprite; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.Game; +import com.watabou.noosa.audio.Music; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.GameMath; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -475,6 +479,12 @@ public class YogDzewa extends Mob { ((DriedRose.GhostHero) ch).sayBoss(); } } + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.play(Assets.Music.HALLS_BOSS, true); + } + }); if (phase == 0) { phase = 1; summonCooldown = Random.NormalFloat(MIN_SUMMON_CD, MAX_SUMMON_CD); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java index 5cb471a72..28928731e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java @@ -48,12 +48,15 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.Camera; +import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Image; import com.watabou.noosa.Tilemap; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.particles.Emitter; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Point; import com.watabou.utils.Random; @@ -68,6 +71,21 @@ public class CavesBossLevel extends Level { color2 = 0xb9d661; } + @Override + public void playLevelMusic() { + if (locked){ + Music.INSTANCE.play(Assets.Music.CAVES_BOSS, true); + //if wall isn't broken + } else if (map[14 + 13*width()] == Terrain.SIGN){ + Music.INSTANCE.stop(); + } else { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.CAVES_1, Assets.Music.CAVES_2, Assets.Music.CAVES_2}, + new float[]{1, 1, 0.5f}, + false); + } + } + @Override public String tilesTex() { return Assets.Environment.TILES_CAVES; @@ -266,6 +284,13 @@ public class CavesBossLevel extends Level { } while (!openSpace[boss.pos] || map[boss.pos] == Terrain.EMPTY_SP || Actor.findChar(boss.pos) != null); GameScene.add( boss ); + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.play(Assets.Music.CAVES_BOSS, true); + } + }); + } @Override @@ -288,6 +313,13 @@ public class CavesBossLevel extends Level { Dungeon.observe(); + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.stop(); + } + }); + } public void activatePylon(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java index 8347a635d..6e85b7140 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -45,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.Game; import com.watabou.noosa.Group; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.particles.PixelParticle; import com.watabou.utils.PointF; import com.watabou.utils.Random; @@ -57,7 +58,15 @@ public class CavesLevel extends RegularLevel { color1 = 0x534f3e; color2 = 0xb9d661; } - + + @Override + public void playLevelMusic() { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.CAVES_1, Assets.Music.CAVES_2, Assets.Music.CAVES_2}, + new float[]{1, 1, 0.5f}, + false); + } + @Override protected ArrayList initRooms() { return Blacksmith.Quest.spawn(super.initRooms()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java index c121ece57..71cba4c86 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java @@ -37,10 +37,13 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ImpShopRoo import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; +import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Tilemap; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Point; import com.watabou.utils.Random; @@ -80,6 +83,21 @@ public class CityBossLevel extends Level { private ImpShopRoom impShop; + @Override + public void playLevelMusic() { + if (locked){ + Music.INSTANCE.play(Assets.Music.CITY_BOSS, true); + //if top door isn't unlocked + } else if (map[topDoor] == Terrain.LOCKED_DOOR){ + Music.INSTANCE.stop(); + } else { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.CITY_1, Assets.Music.CITY_2, Assets.Music.CITY_2}, + new float[]{1, 1, 0.5f}, + false); + } + } + @Override public String tilesTex() { return Assets.Environment.TILES_CITY; @@ -290,6 +308,13 @@ public class CityBossLevel extends Level { set( bottomDoor, Terrain.LOCKED_DOOR ); GameScene.updateMap( bottomDoor ); Dungeon.observe(); + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.play(Assets.Music.CITY_BOSS, true); + } + }); } @Override @@ -306,6 +331,13 @@ public class CityBossLevel extends Level { spawnShop(); } Dungeon.observe(); + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.stop(); + } + }); } private void spawnShop(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java index 9f91ed024..1e850b4b3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java @@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.Group; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.PixelParticle; import com.watabou.utils.PointF; @@ -57,7 +58,15 @@ public class CityLevel extends RegularLevel { color1 = 0x4b6636; color2 = 0xf2f2f2; } - + + @Override + public void playLevelMusic() { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.CITY_1, Assets.Music.CITY_2, Assets.Music.CITY_2}, + new float[]{1, 1, 0.5f}, + false); + } + @Override protected int standardRooms(boolean forceMax) { if (forceMax) return 8; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java index ee701b7f4..344c3be11 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java @@ -37,9 +37,12 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; +import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Tilemap; +import com.watabou.noosa.audio.Music; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -60,6 +63,21 @@ public class HallsBossLevel extends Level { private static final int ROOM_TOP = 8; private static final int ROOM_BOTTOM = ROOM_TOP + 8; + @Override + public void playLevelMusic() { + if (locked){ + Music.INSTANCE.play(Assets.Music.HALLS_BOSS, true); + //if exit isn't unlocked + } else if (map[exit] != Terrain.EXIT){ + Music.INSTANCE.stop(); + } else { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.HALLS_1, Assets.Music.HALLS_2, Assets.Music.HALLS_2}, + new float[]{1, 1, 0.5f}, + false); + } + } + @Override public String tilesTex() { return Assets.Environment.TILES_HALLS; @@ -230,6 +248,13 @@ public class HallsBossLevel extends Level { } Dungeon.observe(); + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.stop(); + } + }); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java index 565ba8c2f..c0f31dce8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java @@ -51,6 +51,7 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.glwrap.Blending; import com.watabou.noosa.Game; import com.watabou.noosa.Group; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.particles.PixelParticle; import com.watabou.utils.PointF; import com.watabou.utils.Random; @@ -67,6 +68,14 @@ public class HallsLevel extends RegularLevel { color2 = 0xa68521; } + @Override + public void playLevelMusic() { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.HALLS_1, Assets.Music.HALLS_2, Assets.Music.HALLS_2}, + new float[]{1, 1, 0.5f}, + false); + } + @Override protected ArrayList initRooms() { ArrayList rooms = super.initRooms(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index dd4e30b29..be918ed30 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -305,6 +305,10 @@ public abstract class Level implements Bundlable { } createMobs(); } + + public void playLevelMusic(){ + //do nothing by default + } @Override public void restoreFromBundle( Bundle bundle ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java index 53c238651..858c0ee5c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java @@ -49,12 +49,15 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.TargetHealthIndicator; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.noosa.Camera; +import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Tilemap; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Point; import com.watabou.utils.Random; @@ -82,7 +85,21 @@ public class PrisonBossLevel extends Level { private State state; private Tengu tengu; - + + @Override + public void playLevelMusic() { + if (state == State.START){ + Music.INSTANCE.stop(); + } else if (state == State.WON) { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.PRISON_1, Assets.Music.PRISON_2, Assets.Music.PRISON_2}, + new float[]{1, 1, 0.5f}, + false); + } else { + Music.INSTANCE.play(Assets.Music.PRISON_BOSS, true); + } + } + public State state(){ return state; } @@ -395,6 +412,13 @@ public class PrisonBossLevel extends Level { tengu.notice(); state = State.FIGHT_START; + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.play(Assets.Music.PRISON_BOSS, true); + } + }); break; case FIGHT_START: @@ -485,6 +509,12 @@ public class PrisonBossLevel extends Level { Sample.INSTANCE.play(Assets.Sounds.BLAST); state = State.WON; + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.stop(); + } + }); break; } } 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 ca76922aa..d4e5f22fa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java @@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.Group; import com.watabou.noosa.Halo; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.particles.Emitter; import com.watabou.utils.PointF; import com.watabou.utils.Random; @@ -58,7 +59,15 @@ public class PrisonLevel extends RegularLevel { color1 = 0x6a723d; color2 = 0x88924c; } - + + @Override + public void playLevelMusic() { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.PRISON_1, Assets.Music.PRISON_2, Assets.Music.PRISON_2}, + new float[]{1, 1, 0.5f}, + false); + } + @Override protected ArrayList initRooms() { return Wandmaker.Quest.spawnRoom(super.initRooms()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java index 92ffcaa7c..b7c3ab17e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java @@ -21,9 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.levels; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Goo; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.levels.builders.Builder; @@ -37,8 +40,12 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.sewerboss.SewerBoss import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.sewerboss.SewerBossExitRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; +import com.watabou.noosa.Game; import com.watabou.noosa.Group; +import com.watabou.noosa.audio.Music; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.Random; import java.util.ArrayList; @@ -52,6 +59,32 @@ public class SewerBossLevel extends SewerLevel { private int stairs = 0; + @Override + public void playLevelMusic() { + if (locked){ + Music.INSTANCE.play(Assets.Music.SEWERS_BOSS, true); + return; + } + + boolean gooAlive = false; + for (Mob m : mobs){ + if (m instanceof Goo) { + gooAlive = true; + break; + } + } + + if (gooAlive){ + Music.INSTANCE.stop(); + } else { + Music.INSTANCE.playTracks( + new String[]{Assets.Music.SEWERS_1, Assets.Music.SEWERS_2, Assets.Music.SEWERS_2}, + new float[]{1, 1, 0.5f}, + false); + } + + } + @Override protected ArrayList initRooms() { ArrayList initRooms = new ArrayList<>(); @@ -144,6 +177,13 @@ public class SewerBossLevel extends SewerLevel { stairs = entrance; entrance = 0; + + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.play(Assets.Music.SEWERS_BOSS, true); + } + }); } } @@ -158,6 +198,12 @@ public class SewerBossLevel extends SewerLevel { set( entrance, Terrain.ENTRANCE ); GameScene.updateMap( entrance ); + Game.runOnRenderThread(new Callback() { + @Override + public void call() { + Music.INSTANCE.stop(); + } + }); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java index c56abaa7b..351b0742b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -44,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.Game; import com.watabou.noosa.Group; +import com.watabou.noosa.audio.Music; import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.PixelParticle; import com.watabou.utils.ColorMath; @@ -56,6 +57,13 @@ public class SewerLevel extends RegularLevel { color1 = 0x48763c; color2 = 0x59994a; } + + public void playLevelMusic(){ + Music.INSTANCE.playTracks( + new String[]{Assets.Music.SEWERS_1, Assets.Music.SEWERS_2, Assets.Music.SEWERS_2}, + new float[]{1, 1, 0.5f}, + false); + } @Override protected int standardRooms(boolean forceMax) { 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 8e47b85b4..2f13cdf5d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -198,32 +198,7 @@ public class GameScene extends PixelScene { return; } - if (Dungeon.depth <= 5) { - Music.INSTANCE.playTracks( - new String[]{Assets.Music.SEWERS_1, Assets.Music.SEWERS_2, Assets.Music.SEWERS_2}, - new float[]{1, 1, 0.5f}, - false); - } else if (Dungeon.depth <= 10) { - Music.INSTANCE.playTracks( - new String[]{Assets.Music.PRISON_1, Assets.Music.PRISON_2, Assets.Music.PRISON_2}, - new float[]{1, 1, 0.5f}, - false); - } else if (Dungeon.depth <= 15) { - Music.INSTANCE.playTracks( - new String[]{Assets.Music.CAVES_1, Assets.Music.CAVES_2, Assets.Music.CAVES_2}, - new float[]{1, 1, 0.5f}, - false); - } else if (Dungeon.depth <= 20) { - Music.INSTANCE.playTracks( - new String[]{Assets.Music.CITY_1, Assets.Music.CITY_2, Assets.Music.CITY_2}, - new float[]{1, 1, 0.5f}, - false); - } else { - Music.INSTANCE.playTracks( - new String[]{Assets.Music.HALLS_1, Assets.Music.HALLS_2, Assets.Music.HALLS_2}, - new float[]{1, 1, 0.5f}, - false); - } + Dungeon.level.playLevelMusic(); SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java index eba0a42eb..b07f0ea5f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -49,6 +49,8 @@ public enum Icons { //grey icons, mainly used for buttons, spacing for 16x16 EXIT, DISPLAY, //2 separate images, changes based on orientation + DISPLAY_LAND, + DISPLAY_PORT, DATA, AUDIO, LANGS, @@ -164,10 +166,15 @@ public enum Icons { break; case DISPLAY: if (!PixelScene.landscape()){ - icon.frame( icon.texture.uvRectBySize( 16, 32, 12, 16 ) ); + return get(DISPLAY_PORT); } else { - icon.frame( icon.texture.uvRectBySize( 32, 32, 16, 12 ) ); + return get(DISPLAY_LAND); } + case DISPLAY_PORT: + icon.frame( icon.texture.uvRectBySize( 16, 32, 12, 16 ) ); + break; + case DISPLAY_LAND: + icon.frame( icon.texture.uvRectBySize( 32, 32, 16, 12 ) ); break; case DATA: icon.frame( icon.texture.uvRectBySize( 48, 32, 16, 15 ) ); diff --git a/ios/assets/music/caves_boss.mp3 b/ios/assets/music/caves_boss.mp3 new file mode 100644 index 000000000..6e3aeef72 Binary files /dev/null and b/ios/assets/music/caves_boss.mp3 differ diff --git a/ios/assets/music/city_boss.mp3 b/ios/assets/music/city_boss.mp3 new file mode 100644 index 000000000..80d3e10f4 Binary files /dev/null and b/ios/assets/music/city_boss.mp3 differ diff --git a/ios/assets/music/halls_boss.mp3 b/ios/assets/music/halls_boss.mp3 new file mode 100644 index 000000000..48eb6eec4 Binary files /dev/null and b/ios/assets/music/halls_boss.mp3 differ diff --git a/ios/assets/music/prison_boss.mp3 b/ios/assets/music/prison_boss.mp3 new file mode 100644 index 000000000..216e9fcc8 Binary files /dev/null and b/ios/assets/music/prison_boss.mp3 differ diff --git a/ios/assets/music/sewers_boss.mp3 b/ios/assets/music/sewers_boss.mp3 new file mode 100644 index 000000000..db97b3a19 Binary files /dev/null and b/ios/assets/music/sewers_boss.mp3 differ