shuffle music (Author: alzeih)

This commit is contained in:
Paul Chote
2010-09-10 20:59:03 +12:00
parent aa832244fb
commit f645049054
2 changed files with 22 additions and 21 deletions

View File

@@ -48,6 +48,7 @@ namespace OpenRA.GameRules
public float SoundVolume = 0.5f;
public float MusicVolume = 0.5f;
public float VideoVolume = 0.5f;
public bool Shuffle = false;
}
public class PlayerSettings

View File

@@ -74,6 +74,14 @@ namespace OpenRA.Widgets.Delegates
return bg.GetWidget("BUTTON_PLAY").OnMouseUp(mi);
};
var shuffle = bg.GetWidget<CheckboxWidget>("SHUFFLE");
shuffle.OnMouseDown = mi =>
{
Game.Settings.Sound.Shuffle ^= true;
return true;
};
shuffle.Checked = () => Game.Settings.Sound.Shuffle;
bg.GetWidget<LabelWidget>("TIME").GetText = () =>
{
if (CurrentSong == null)
@@ -118,35 +126,27 @@ namespace OpenRA.Widgets.Delegates
string GetNextSong()
{
var songs = Rules.Music.Select(a => a.Key)
.Where(a => FileSystem.Exists(Rules.Music[a].Filename));
var songs = Rules.Music.Where(a => a.Value.Exists)
.Select(a => a.Key);
var nextSong = songs
.SkipWhile(m => m != CurrentSong)
.Skip(1)
.FirstOrDefault();
if (Game.Settings.Sound.Shuffle)
return songs.Random(Game.CosmeticRandom);
if (nextSong == null)
nextSong = songs.FirstOrDefault();
return nextSong;
return songs.SkipWhile(m => m != CurrentSong)
.Skip(1).FirstOrDefault() ?? songs.FirstOrDefault();
}
string GetPrevSong()
{
var songs = Rules.Music.Select(a => a.Key)
.Where(a => FileSystem.Exists(Rules.Music[a].Filename))
.Reverse();
var songs = Rules.Music.Where(a => a.Value.Exists)
.Select(a => a.Key).Reverse();
var nextSong = songs
.SkipWhile(m => m != CurrentSong)
.Skip(1)
.FirstOrDefault();
if (Game.Settings.Sound.Shuffle)
return songs.Random(Game.CosmeticRandom);
if (nextSong == null)
nextSong = songs.FirstOrDefault();
return nextSong;
return songs.SkipWhile(m => m != CurrentSong)
.Skip(1).FirstOrDefault() ?? songs.FirstOrDefault();
}
}
}