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.

View File

@@ -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 {

View File

@@ -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);
}
});
}
});
}
}

View File

@@ -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") );
}

View File

@@ -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){

View File

@@ -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();
}
});
}
});

View File

@@ -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();
}
});
}
});
}

View File

@@ -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);
}
});
}
});
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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();
}
});
}
});
}

View File

@@ -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},

View File

@@ -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));

View File

@@ -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;

View File

@@ -220,4 +220,8 @@ public class BossHealthBar extends Component {
bleeding = value;
}
public static boolean isBleeding(){
return bleeding;
}
}

View File

@@ -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.