v1.2.0: implemented boss music!

This commit is contained in:
Evan Debenham
2022-03-16 12:43:04 -04:00
parent d761db0838
commit 0d3c865095
27 changed files with 245 additions and 33 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -115,18 +115,23 @@ public class Assets {
public static final String SEWERS_1 = "music/sewers_1.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_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_1 = "music/prison_1.ogg";
public static final String PRISON_2 = "music/prison_2.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_1 = "music/caves_1.ogg";
public static final String CAVES_2 = "music/caves_2.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_1 = "music/city_1.ogg";
public static final String CITY_2 = "music/city_2.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_1 = "music/halls_1.ogg";
public static final String HALLS_2 = "music/halls_2.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 { public static class Sounds {
@@ -203,7 +203,7 @@ public class Dungeon {
quickslot.reset(); quickslot.reset();
QuickSlotButton.reset(); QuickSlotButton.reset();
depth = 0; depth = 24;
gold = 0; gold = 0;
energy = 0; energy = 0;
@@ -228,6 +228,7 @@ public class Goo extends Mob {
public void damage(int dmg, Object src) { public void damage(int dmg, Object src) {
if (!BossHealthBar.isAssigned()){ if (!BossHealthBar.isAssigned()){
BossHealthBar.assignBoss( this ); BossHealthBar.assignBoss( this );
Dungeon.level.seal();
} }
boolean bleeding = (HP*2 <= HT); boolean bleeding = (HP*2 <= HT);
super.damage(dmg, src); super.damage(dmg, src);
@@ -271,6 +272,7 @@ public class Goo extends Mob {
super.notice(); super.notice();
if (!BossHealthBar.isAssigned()) { if (!BossHealthBar.isAssigned()) {
BossHealthBar.assignBoss(this); BossHealthBar.assignBoss(this);
Dungeon.level.seal();
yell(Messages.get(this, "notice")); yell(Messages.get(this, "notice"));
for (Char ch : Actor.chars()){ for (Char ch : Actor.chars()){
if (ch instanceof DriedRose.GhostHero){ if (ch instanceof DriedRose.GhostHero){
@@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics; 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.tiles.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; 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.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.GameMath; import com.watabou.utils.GameMath;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -475,6 +479,12 @@ public class YogDzewa extends Mob {
((DriedRose.GhostHero) ch).sayBoss(); ((DriedRose.GhostHero) ch).sayBoss();
} }
} }
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.HALLS_BOSS, true);
}
});
if (phase == 0) { if (phase == 0) {
phase = 1; phase = 1;
summonCooldown = Random.NormalFloat(MIN_SUMMON_CD, MAX_SUMMON_CD); summonCooldown = Random.NormalFloat(MIN_SUMMON_CD, MAX_SUMMON_CD);
@@ -48,12 +48,15 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.Tilemap; import com.watabou.noosa.Tilemap;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Point; import com.watabou.utils.Point;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -68,6 +71,21 @@ public class CavesBossLevel extends Level {
color2 = 0xb9d661; 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 @Override
public String tilesTex() { public String tilesTex() {
return Assets.Environment.TILES_CAVES; 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); } while (!openSpace[boss.pos] || map[boss.pos] == Terrain.EMPTY_SP || Actor.findChar(boss.pos) != null);
GameScene.add( boss ); GameScene.add( boss );
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.CAVES_BOSS, true);
}
});
} }
@Override @Override
@@ -288,6 +313,13 @@ public class CavesBossLevel extends Level {
Dungeon.observe(); Dungeon.observe();
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.stop();
}
});
} }
public void activatePylon(){ public void activatePylon(){
@@ -45,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.particles.PixelParticle; import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.PointF; import com.watabou.utils.PointF;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -58,6 +59,14 @@ public class CavesLevel extends RegularLevel {
color2 = 0xb9d661; 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 @Override
protected ArrayList<Room> initRooms() { protected ArrayList<Room> initRooms() {
return Blacksmith.Quest.spawn(super.initRooms()); return Blacksmith.Quest.spawn(super.initRooms());
@@ -37,10 +37,13 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ImpShopRoo
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Tilemap; import com.watabou.noosa.Tilemap;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.noosa.tweeners.AlphaTweener;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Point; import com.watabou.utils.Point;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -80,6 +83,21 @@ public class CityBossLevel extends Level {
private ImpShopRoom impShop; 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 @Override
public String tilesTex() { public String tilesTex() {
return Assets.Environment.TILES_CITY; return Assets.Environment.TILES_CITY;
@@ -290,6 +308,13 @@ public class CityBossLevel extends Level {
set( bottomDoor, Terrain.LOCKED_DOOR ); set( bottomDoor, Terrain.LOCKED_DOOR );
GameScene.updateMap( bottomDoor ); GameScene.updateMap( bottomDoor );
Dungeon.observe(); Dungeon.observe();
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.CITY_BOSS, true);
}
});
} }
@Override @Override
@@ -306,6 +331,13 @@ public class CityBossLevel extends Level {
spawnShop(); spawnShop();
} }
Dungeon.observe(); Dungeon.observe();
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.stop();
}
});
} }
private void spawnShop(){ private void spawnShop(){
@@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
import com.watabou.noosa.particles.PixelParticle; import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.PointF; import com.watabou.utils.PointF;
@@ -58,6 +59,14 @@ public class CityLevel extends RegularLevel {
color2 = 0xf2f2f2; 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 @Override
protected int standardRooms(boolean forceMax) { protected int standardRooms(boolean forceMax) {
if (forceMax) return 8; if (forceMax) return 8;
@@ -37,9 +37,12 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Tilemap; import com.watabou.noosa.Tilemap;
import com.watabou.noosa.audio.Music;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Random; 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_TOP = 8;
private static final int ROOM_BOTTOM = 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 @Override
public String tilesTex() { public String tilesTex() {
return Assets.Environment.TILES_HALLS; return Assets.Environment.TILES_HALLS;
@@ -230,6 +248,13 @@ public class HallsBossLevel extends Level {
} }
Dungeon.observe(); Dungeon.observe();
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.stop();
}
});
} }
@Override @Override
@@ -51,6 +51,7 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.glwrap.Blending; import com.watabou.glwrap.Blending;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.particles.PixelParticle; import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.PointF; import com.watabou.utils.PointF;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -67,6 +68,14 @@ public class HallsLevel extends RegularLevel {
color2 = 0xa68521; 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 @Override
protected ArrayList<Room> initRooms() { protected ArrayList<Room> initRooms() {
ArrayList<Room> rooms = super.initRooms(); ArrayList<Room> rooms = super.initRooms();
@@ -306,6 +306,10 @@ public abstract class Level implements Bundlable {
createMobs(); createMobs();
} }
public void playLevelMusic(){
//do nothing by default
}
@Override @Override
public void restoreFromBundle( Bundle bundle ) { public void restoreFromBundle( Bundle bundle ) {
@@ -49,12 +49,15 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
import com.shatteredpixel.shatteredpixeldungeon.ui.TargetHealthIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.TargetHealthIndicator;
import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Tilemap; import com.watabou.noosa.Tilemap;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.noosa.tweeners.AlphaTweener;
import com.watabou.utils.Bundlable; import com.watabou.utils.Bundlable;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Point; import com.watabou.utils.Point;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -83,6 +86,20 @@ public class PrisonBossLevel extends Level {
private State state; private State state;
private Tengu tengu; 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(){ public State state(){
return state; return state;
} }
@@ -395,6 +412,13 @@ public class PrisonBossLevel extends Level {
tengu.notice(); tengu.notice();
state = State.FIGHT_START; state = State.FIGHT_START;
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.play(Assets.Music.PRISON_BOSS, true);
}
});
break; break;
case FIGHT_START: case FIGHT_START:
@@ -485,6 +509,12 @@ public class PrisonBossLevel extends Level {
Sample.INSTANCE.play(Assets.Sounds.BLAST); Sample.INSTANCE.play(Assets.Sounds.BLAST);
state = State.WON; state = State.WON;
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.stop();
}
});
break; break;
} }
} }
@@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Halo; import com.watabou.noosa.Halo;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.PointF; import com.watabou.utils.PointF;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -59,6 +60,14 @@ public class PrisonLevel extends RegularLevel {
color2 = 0x88924c; 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 @Override
protected ArrayList<Room> initRooms() { protected ArrayList<Room> initRooms() {
return Wandmaker.Quest.spawnRoom(super.initRooms()); return Wandmaker.Quest.spawnRoom(super.initRooms());
@@ -21,9 +21,12 @@
package com.shatteredpixel.shatteredpixeldungeon.levels; package com.shatteredpixel.shatteredpixeldungeon.levels;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.Bones;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; 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.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.levels.builders.Builder; 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.sewerboss.SewerBossExitRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; 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.Group;
import com.watabou.noosa.audio.Music;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Callback;
import com.watabou.utils.Random; import com.watabou.utils.Random;
import java.util.ArrayList; import java.util.ArrayList;
@@ -52,6 +59,32 @@ public class SewerBossLevel extends SewerLevel {
private int stairs = 0; 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 @Override
protected ArrayList<Room> initRooms() { protected ArrayList<Room> initRooms() {
ArrayList<Room> initRooms = new ArrayList<>(); ArrayList<Room> initRooms = new ArrayList<>();
@@ -144,6 +177,13 @@ public class SewerBossLevel extends SewerLevel {
stairs = entrance; stairs = entrance;
entrance = 0; 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 ); set( entrance, Terrain.ENTRANCE );
GameScene.updateMap( entrance ); GameScene.updateMap( entrance );
Game.runOnRenderThread(new Callback() {
@Override
public void call() {
Music.INSTANCE.stop();
}
});
} }
} }
@@ -44,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
import com.watabou.noosa.particles.PixelParticle; import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.ColorMath; import com.watabou.utils.ColorMath;
@@ -57,6 +58,13 @@ public class SewerLevel extends RegularLevel {
color2 = 0x59994a; 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 @Override
protected int standardRooms(boolean forceMax) { protected int standardRooms(boolean forceMax) {
if (forceMax) return 6; if (forceMax) return 6;
@@ -198,32 +198,7 @@ public class GameScene extends PixelScene {
return; return;
} }
if (Dungeon.depth <= 5) { Dungeon.level.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);
} 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);
}
SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal()); SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal());
@@ -49,6 +49,8 @@ public enum Icons {
//grey icons, mainly used for buttons, spacing for 16x16 //grey icons, mainly used for buttons, spacing for 16x16
EXIT, EXIT,
DISPLAY, //2 separate images, changes based on orientation DISPLAY, //2 separate images, changes based on orientation
DISPLAY_LAND,
DISPLAY_PORT,
DATA, DATA,
AUDIO, AUDIO,
LANGS, LANGS,
@@ -164,10 +166,15 @@ public enum Icons {
break; break;
case DISPLAY: case DISPLAY:
if (!PixelScene.landscape()){ if (!PixelScene.landscape()){
icon.frame( icon.texture.uvRectBySize( 16, 32, 12, 16 ) ); return get(DISPLAY_PORT);
} else { } 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; break;
case DATA: case DATA:
icon.frame( icon.texture.uvRectBySize( 48, 32, 16, 15 ) ); icon.frame( icon.texture.uvRectBySize( 48, 32, 16, 15 ) );
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.