Dirty workaround for background music breaking during loading (the music is switched when a round starts), the "wall" at the top of the levels is drawn on top of the lightmap, small fixes in AIObjectiveGetItem and BackGroundSpriteManager
This commit is contained in:
@@ -229,44 +229,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (musicClips == null) return;
|
||||
|
||||
Task criticalTask = null;
|
||||
if (GameMain.GameSession!=null && GameMain.GameSession.TaskManager != null)
|
||||
{
|
||||
foreach (Task task in GameMain.GameSession.TaskManager.Tasks)
|
||||
{
|
||||
if (!task.IsStarted) continue;
|
||||
if (criticalTask == null || task.Priority > criticalTask.Priority)
|
||||
{
|
||||
criticalTask = task;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<BackgroundMusic> suitableMusic = null;
|
||||
if (OverrideMusicType != null)
|
||||
{
|
||||
suitableMusic = musicClips.Where(x => x != null && x.type == OverrideMusicType).ToList();
|
||||
}
|
||||
else if (Character.Controlled != null && Level.Loaded != null && Level.Loaded.Ruins.Any(r => r.Area.Contains(Character.Controlled.WorldPosition)))
|
||||
{
|
||||
suitableMusic = musicClips.Where(x => x != null && x.type == "ruins").ToList();
|
||||
}
|
||||
else if (Submarine.Loaded != null && Submarine.Loaded.AtDamageDepth)
|
||||
{
|
||||
suitableMusic = musicClips.Where(x => x != null && x.type == "deep").ToList();
|
||||
}
|
||||
else if (criticalTask == null)
|
||||
{
|
||||
suitableMusic = musicClips.Where(x => x != null && x.type == "default").ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
suitableMusic = musicClips.Where(x =>
|
||||
x != null &&
|
||||
x.type == criticalTask.MusicType &&
|
||||
x.priorityRange.X < criticalTask.Priority &&
|
||||
x.priorityRange.Y > criticalTask.Priority).ToList();
|
||||
}
|
||||
List<BackgroundMusic> suitableMusic = GetSuitableMusicClips();
|
||||
|
||||
if (suitableMusic.Count > 0 && !suitableMusic.Contains(currentMusic))
|
||||
{
|
||||
@@ -297,6 +260,56 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public static void SwitchMusic()
|
||||
{
|
||||
var suitableMusic = GetSuitableMusicClips();
|
||||
|
||||
if (suitableMusic.Count > 1)
|
||||
{
|
||||
targetMusic = suitableMusic.Find(m => m != currentMusic);
|
||||
}
|
||||
}
|
||||
|
||||
private static List<BackgroundMusic> GetSuitableMusicClips()
|
||||
{
|
||||
Task criticalTask = null;
|
||||
if (GameMain.GameSession != null && GameMain.GameSession.TaskManager != null)
|
||||
{
|
||||
foreach (Task task in GameMain.GameSession.TaskManager.Tasks)
|
||||
{
|
||||
if (!task.IsStarted) continue;
|
||||
if (criticalTask == null || task.Priority > criticalTask.Priority)
|
||||
{
|
||||
criticalTask = task;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (OverrideMusicType != null)
|
||||
{
|
||||
return musicClips.Where(x => x != null && x.type == OverrideMusicType).ToList();
|
||||
}
|
||||
else if (Character.Controlled != null && Level.Loaded != null && Level.Loaded.Ruins.Any(r => r.Area.Contains(Character.Controlled.WorldPosition)))
|
||||
{
|
||||
return musicClips.Where(x => x != null && x.type == "ruins").ToList();
|
||||
}
|
||||
else if (Submarine.Loaded != null && Submarine.Loaded.AtDamageDepth)
|
||||
{
|
||||
return musicClips.Where(x => x != null && x.type == "deep").ToList();
|
||||
}
|
||||
else if (criticalTask == null)
|
||||
{
|
||||
return musicClips.Where(x => x != null && x.type == "default").ToList();
|
||||
}
|
||||
|
||||
return musicClips.Where(x =>
|
||||
x != null &&
|
||||
x.type == criticalTask.MusicType &&
|
||||
x.priorityRange.X < criticalTask.Priority &&
|
||||
x.priorityRange.Y > criticalTask.Priority).ToList();
|
||||
|
||||
}
|
||||
|
||||
public static void PlaySplashSound(Vector2 worldPosition, float strength)
|
||||
{
|
||||
int splashIndex = MathHelper.Clamp((int)(strength + Rand.Range(-2,2)), 0, SplashSounds.Length-1);
|
||||
|
||||
Reference in New Issue
Block a user