v2.2.0: added finale tracks for the 3 later bosses and the game itself

This commit is contained in:
Evan Debenham
2023-09-03 16:14:50 -04:00
parent 93a0ff7e59
commit bae770407f
23 changed files with 140 additions and 40 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -113,33 +113,37 @@ public class Assets {
}
public static class Music {
public static final String THEME_1 = "music/theme_1.ogg";
public static final String THEME_2 = "music/theme_2.ogg";
public static final String THEME_1 = "music/theme_1.ogg";
public static final String THEME_2 = "music/theme_2.ogg";
public static final String THEME_FINALE = "music/theme_finale.ogg";
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_TENSE = "music/sewers_tense.ogg";
public static final String SEWERS_BOSS = "music/sewers_boss.ogg";
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_TENSE = "music/sewers_tense.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_TENSE = "music/prison_tense.ogg";
public static final String PRISON_BOSS = "music/prison_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_TENSE = "music/prison_tense.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_TENSE = "music/caves_tense.ogg";
public static final String CAVES_BOSS = "music/caves_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_TENSE = "music/caves_tense.ogg";
public static final String CAVES_BOSS = "music/caves_boss.ogg";
public static final String CAVES_BOSS_FINALE = "music/caves_boss_finale.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_TENSE = "music/city_tense.ogg";
public static final String CITY_BOSS = "music/city_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_TENSE = "music/city_tense.ogg";
public static final String CITY_BOSS = "music/city_boss.ogg";
public static final String CITY_BOSS_FINALE = "music/city_boss_finale.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_TENSE = "music/halls_tense.ogg";
public static final String HALLS_BOSS = "music/halls_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_TENSE = "music/halls_tense.ogg";
public static final String HALLS_BOSS = "music/halls_boss.ogg";
public static final String HALLS_BOSS_FINALE = "music/halls_boss_finale.ogg";
}
public static class Sounds {
@@ -65,9 +65,12 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300Sprite;
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.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.GameMath;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Point;
@@ -538,6 +541,17 @@ public class DM300 extends Mob {
} else {
yell(Messages.get(this, "pylons_destroyed"));
BossHealthBar.bleed(true);
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.fadeOut(0.5f, new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.CAVES_BOSS_FINALE, true);
}
});
}
});
}
}
@@ -60,9 +60,12 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.KingSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.watabou.noosa.Game;
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.Random;
import com.watabou.utils.Reflection;
@@ -506,6 +509,18 @@ public class DwarfKing extends Mob {
sprite.centerEmitter().start( Speck.factory( Speck.SCREAM ), 0.4f, 2 );
Sample.INSTANCE.play( Assets.Sounds.CHALLENGE );
yell( Messages.get(this, "enraged", Dungeon.hero.name()) );
BossHealthBar.bleed(true);
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.fadeOut(0.5f, new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.CITY_BOSS_FINALE, true);
}
});
}
});
} else if (phase == 3 && preHP > 20 && HP < 20){
yell( Messages.get(this, "losing") );
}
@@ -195,6 +195,17 @@ public class YogDzewa extends Mob {
summonCooldown = -15; //summon a burst of minions!
phase = 5;
BossHealthBar.bleed(true);
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.fadeOut(0.5f, new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.HALLS_BOSS_FINALE, true);
}
});
}
});
}
if (phase == 0){
@@ -50,6 +50,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.PylonSprite;
import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
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.Group;
@@ -77,7 +78,11 @@ public class CavesBossLevel extends Level {
@Override
public void playLevelMusic() {
if (locked){
Music.INSTANCE.play(Assets.Music.CAVES_BOSS, true);
if (BossHealthBar.isBleeding()){
Music.INSTANCE.play(Assets.Music.CAVES_BOSS_FINALE, true);
} else {
Music.INSTANCE.play(Assets.Music.CAVES_BOSS, true);
}
//if wall isn't broken
} else if (map[14 + 13*width()] == Terrain.CUSTOM_DECO){
Music.INSTANCE.end();
@@ -347,7 +352,12 @@ public class CavesBossLevel extends Level {
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
Music.INSTANCE.fadeOut(3f, new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
}
});
}
});
@@ -39,6 +39,7 @@ 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.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.Tilemap;
@@ -88,7 +89,11 @@ public class CityBossLevel extends Level {
@Override
public void playLevelMusic() {
if (locked){
Music.INSTANCE.play(Assets.Music.CITY_BOSS, true);
if (BossHealthBar.isBleeding()){
Music.INSTANCE.play(Assets.Music.CITY_BOSS_FINALE, true);
} else {
Music.INSTANCE.play(Assets.Music.CITY_BOSS, true);
}
//if top door isn't unlocked
} else if (map[topDoor] == Terrain.LOCKED_DOOR){
Music.INSTANCE.end();
@@ -354,7 +359,12 @@ public class CityBossLevel extends Level {
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
Music.INSTANCE.fadeOut(3f, new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
}
});
}
});
}
@@ -47,6 +47,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
@@ -79,9 +80,13 @@ public class HallsBossLevel extends Level {
@Override
public void playLevelMusic() {
if (locked){
Music.INSTANCE.play(Assets.Music.HALLS_BOSS, true);
if (BossHealthBar.isBleeding()){
Music.INSTANCE.play(Assets.Music.HALLS_BOSS_FINALE, true);
} else {
Music.INSTANCE.play(Assets.Music.HALLS_BOSS, true);
}
//if exit isn't unlocked
} else if (map[exit()] != Terrain.EXIT){
} else if (map[exit()] != Terrain.EXIT || Statistics.amuletObtained){
Music.INSTANCE.end();
} else {
Music.INSTANCE.playTracks(
@@ -298,7 +303,12 @@ public class HallsBossLevel extends Level {
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
Music.INSTANCE.fadeOut(3f, new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.THEME_FINALE, true);
}
});
}
});
}
@@ -54,7 +54,11 @@ public class LastLevel extends Level {
@Override
public void playLevelMusic() {
Music.INSTANCE.end();
if (Statistics.amuletObtained) {
Music.INSTANCE.end();
} else {
Music.INSTANCE.play(Assets.Music.THEME_FINALE, true);
}
}
@Override
@@ -536,7 +536,12 @@ public class PrisonBossLevel extends Level {
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
Music.INSTANCE.fadeOut(3f, new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
}
});
}
});
break;
@@ -204,7 +204,12 @@ public class SewerBossLevel extends SewerLevel {
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
Music.INSTANCE.fadeOut(3f, new Callback() {
@Override
public void call() {
Music.INSTANCE.end();
}
});
}
});
}
@@ -68,7 +68,11 @@ public class SewerLevel extends RegularLevel {
public void playLevelMusic(){
if (Ghost.Quest.active() || Statistics.amuletObtained){
Music.INSTANCE.play(Assets.Music.SEWERS_TENSE, true);
if (Statistics.amuletObtained && Dungeon.depth == 1){
Music.INSTANCE.play(Assets.Music.THEME_FINALE, true);
} else {
Music.INSTANCE.play(Assets.Music.SEWERS_TENSE, true);
}
} else {
Music.INSTANCE.playTracks(
new String[]{Assets.Music.SEWERS_1, Assets.Music.SEWERS_2, Assets.Music.SEWERS_2},
@@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.StyledButton;
import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.tweeners.Delayer;
import com.watabou.utils.Random;
@@ -95,6 +96,10 @@ public class AmuletScene extends PixelScene {
}
}
});
Music.INSTANCE.playTracks(
new String[]{Assets.Music.THEME_2, Assets.Music.THEME_1},
new float[]{1, 1},
false);
}
};
btnExit.icon(new ItemSprite(ItemSpriteSheet.AMULET));
@@ -21,7 +21,6 @@
package com.shatteredpixel.shatteredpixeldungeon.scenes;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Rankings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
@@ -42,7 +41,6 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndRanking;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Camera;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Music;
import com.watabou.utils.GameMath;
public class RankingsScene extends PixelScene {
@@ -61,11 +59,6 @@ public class RankingsScene extends PixelScene {
super.create();
Music.INSTANCE.playTracks(
new String[]{Assets.Music.THEME_1, Assets.Music.THEME_2},
new float[]{1, 1},
false);
uiCamera.visible = false;
int w = Camera.main.width;
@@ -220,4 +220,8 @@ public class BossHealthBar extends Component {
bleeding = value;
}
public static boolean isBleeding(){
return bleeding;
}
}
@@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
@@ -35,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.Game;
import com.watabou.noosa.audio.Music;
import java.io.IOException;
@@ -91,6 +93,10 @@ public class WndGame extends Window {
@Override
protected void onClick() {
InterlevelScene.mode = InterlevelScene.Mode.DESCEND;
Music.INSTANCE.playTracks(
new String[]{Assets.Music.THEME_1, Assets.Music.THEME_2},
new float[]{1, 1},
false);
Game.switchScene( RankingsScene.class );
}
} );
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.