Disable music auto-play unless tracks are installed.

This commit is contained in:
Paul Chote
2015-08-01 23:05:09 +01:00
parent 9b3ef9e7f7
commit 1d307bfe07
2 changed files with 8 additions and 10 deletions

View File

@@ -63,12 +63,8 @@ namespace OpenRA.Mods.Common.Traits
.Select(a => a.Value)
.ToArray();
IsMusicAvailable = playlist.Any();
random = playlist.Shuffle(Game.CosmeticRandom).ToArray();
// Always start with a random song
currentSong = random.FirstOrDefault();
IsMusicAvailable = playlist.Any();
if (SongExists(info.StartingMusic))
currentSong = world.Map.Rules.Music[info.StartingMusic];
@@ -77,6 +73,13 @@ namespace OpenRA.Mods.Common.Traits
currentSong = currentBackgroundSong = world.Map.Rules.Music[info.BackgroundMusic];
CurrentSongIsBackground = true;
}
else
{
// Start playback with a random song, but only if the player has installed more music
var installData = Game.ModData.Manifest.Get<ContentInstaller>();
if (playlist.Length > installData.ShippedSoundtracks)
currentSong = random.FirstOrDefault();
}
Play();
}

View File

@@ -125,16 +125,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var music = musicPlaylist.AvailablePlaylist();
currentSong = musicPlaylist.CurrentSong();
if (currentSong == null && music.Any())
currentSong = musicPlaylist.GetNextSong();
musicList.RemoveChildren();
foreach (var s in music)
{
var song = s;
if (currentSong == null)
currentSong = song;
var item = ScrollItemWidget.Setup(song.Filename, itemTemplate, () => currentSong == song, () => { currentSong = song; Play(); }, () => { });
item.Get<LabelWidget>("TITLE").GetText = () => song.Title;
item.Get<LabelWidget>("LENGTH").GetText = () => SongLengthLabel(song);