Fix first song not being shuffled

This commit is contained in:
Gabriel Plassard 2015-10-09 00:15:34 +02:00
parent 7dbbd77c4e
commit c5409a8d8b
2 changed files with 16 additions and 3 deletions

View file

@ -115,6 +115,9 @@ func FindServiceAndAdd(user *gumble.User, url string) error {
// Starts playing the new song if nothing else is playing // Starts playing the new song if nothing else is playing
if oldLength == 0 && dj.queue.Len() != 0 && !dj.audioStream.IsPlaying() { if oldLength == 0 && dj.queue.Len() != 0 && !dj.audioStream.IsPlaying() {
if (dj.conf.General.AutomaticShuffleOn){
dj.queue.RandomNextSong(true)
}
if err := dj.queue.CurrentSong().Download(); err == nil { if err := dj.queue.CurrentSong().Download(); err == nil {
dj.queue.CurrentSong().Play() dj.queue.CurrentSong().Play()
} else { } else {

View file

@ -64,9 +64,8 @@ func (q *SongQueue) NextSong() {
// PeekNext peeks at the next Song and returns it. // PeekNext peeks at the next Song and returns it.
func (q *SongQueue) PeekNext() (Song, error) { func (q *SongQueue) PeekNext() (Song, error) {
if q.Len() > 1 { if q.Len() > 1 {
if (dj.conf.General.AutomaticShuffleOn){ //Shuffle mode is active if dj.conf.General.AutomaticShuffleOn{ //Shuffle mode is active
swapIndex := 1 + rand.Intn(q.Len()) q.RandomNextSong(false)
q.queue[1], q.queue[swapIndex] = q.queue[swapIndex], q.queue[1]
} }
return q.queue[1], nil return q.queue[1], nil
} }
@ -121,3 +120,14 @@ func (q *SongQueue) ShuffleSongs() {
q.queue[i + 1], q.queue[j + 1] = q.queue[j + 1], q.queue[i + 1] q.queue[i + 1], q.queue[j + 1] = q.queue[j + 1], q.queue[i + 1]
} }
} }
// Sets a random song as next song to be played
// queueWasEmpty wether the queue was empty before adding the last Song
func (q *SongQueue) RandomNextSong(queueWasEmpty bool){
nextSongIndex := 1
if queueWasEmpty{
nextSongIndex = 0
}
swapIndex := nextSongIndex + rand.Intn(q.Len())
q.queue[nextSongIndex], q.queue[swapIndex] = q.queue[swapIndex], q.queue[nextSongIndex]
}