shuffle music (Author: alzeih)
This commit is contained in:
@@ -48,6 +48,7 @@ namespace OpenRA.GameRules
|
|||||||
public float SoundVolume = 0.5f;
|
public float SoundVolume = 0.5f;
|
||||||
public float MusicVolume = 0.5f;
|
public float MusicVolume = 0.5f;
|
||||||
public float VideoVolume = 0.5f;
|
public float VideoVolume = 0.5f;
|
||||||
|
public bool Shuffle = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlayerSettings
|
public class PlayerSettings
|
||||||
|
|||||||
@@ -74,6 +74,14 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
return bg.GetWidget("BUTTON_PLAY").OnMouseUp(mi);
|
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 = () =>
|
bg.GetWidget<LabelWidget>("TIME").GetText = () =>
|
||||||
{
|
{
|
||||||
if (CurrentSong == null)
|
if (CurrentSong == null)
|
||||||
@@ -118,35 +126,27 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
|
|
||||||
string GetNextSong()
|
string GetNextSong()
|
||||||
{
|
{
|
||||||
var songs = Rules.Music.Select(a => a.Key)
|
var songs = Rules.Music.Where(a => a.Value.Exists)
|
||||||
.Where(a => FileSystem.Exists(Rules.Music[a].Filename));
|
.Select(a => a.Key);
|
||||||
|
|
||||||
var nextSong = songs
|
if (Game.Settings.Sound.Shuffle)
|
||||||
.SkipWhile(m => m != CurrentSong)
|
return songs.Random(Game.CosmeticRandom);
|
||||||
.Skip(1)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
if (nextSong == null)
|
return songs.SkipWhile(m => m != CurrentSong)
|
||||||
nextSong = songs.FirstOrDefault();
|
.Skip(1).FirstOrDefault() ?? songs.FirstOrDefault();
|
||||||
|
|
||||||
return nextSong;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string GetPrevSong()
|
string GetPrevSong()
|
||||||
{
|
{
|
||||||
var songs = Rules.Music.Select(a => a.Key)
|
var songs = Rules.Music.Where(a => a.Value.Exists)
|
||||||
.Where(a => FileSystem.Exists(Rules.Music[a].Filename))
|
.Select(a => a.Key).Reverse();
|
||||||
.Reverse();
|
|
||||||
|
|
||||||
var nextSong = songs
|
if (Game.Settings.Sound.Shuffle)
|
||||||
.SkipWhile(m => m != CurrentSong)
|
return songs.Random(Game.CosmeticRandom);
|
||||||
.Skip(1)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
if (nextSong == null)
|
return songs.SkipWhile(m => m != CurrentSong)
|
||||||
nextSong = songs.FirstOrDefault();
|
.Skip(1).FirstOrDefault() ?? songs.FirstOrDefault();
|
||||||
|
|
||||||
return nextSong;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user