fix playlist index not reset to 0 when switch from random

This commit is contained in:
aynakeya
2024-04-22 22:26:42 -07:00
parent 92ea73ff5a
commit e9149474de
3 changed files with 23 additions and 1 deletions

View File

@@ -22,6 +22,14 @@ type PlaylistMoveCmdEvent struct {
To int
}
func PlaylistSetIndexCmd(id model.PlaylistID) event.EventId {
return event.EventId("cmd.playlist.setindex." + id)
}
type PlaylistSetIndexCmdEvent struct {
Index int
}
func PlaylistDeleteCmd(id model.PlaylistID) event.EventId {
return event.EventId("cmd.playlist.delete." + id)
}

View File

@@ -40,12 +40,22 @@ func newPlaylist(id model.PlaylistID) *playlist {
pl.Next(event.Data.(events.PlaylistNextCmdEvent).Remove)
})
global.EventManager.RegisterA(events.PlaylistModeChangeCmd(id), "internal.playlist.mode", func(event *event.Event) {
if pl.mode == model.PlaylistModeRandom {
pl.Index = 0
}
pl.mode = event.Data.(events.PlaylistModeChangeCmdEvent).Mode
log.Infof("Playlist %s mode changed to %d", id, pl.mode)
global.EventManager.CallA(events.PlaylistModeChangeUpdate(id), events.PlaylistModeChangeUpdateEvent{
Mode: pl.mode,
})
})
global.EventManager.RegisterA(events.PlaylistSetIndexCmd(id), "internal.playlist.setindex", func(event *event.Event) {
index := event.Data.(events.PlaylistSetIndexCmdEvent).Index
if index >= pl.Size() || index < 0 {
index = 0
}
pl.Index = index
})
return pl
}
@@ -144,6 +154,10 @@ func (p *playlist) Next(delete bool) {
}
var index int
index = p.Index
// add guard
if index >= p.Size() {
index = 0
}
if p.mode == model.PlaylistModeRandom {
p.Index = rand.Intn(p.Size())
} else if p.mode == model.PlaylistModeNormal {

View File

@@ -14,7 +14,7 @@
----
Finished
- 2024.04.22 : 文本输出, 歌曲最长时长控制bug修复, 网易云登录(歌曲来源统一登录)
- 2024.04.22@1.0.2: 文本输出, 歌曲最长时长控制bug修复, 网易云登录(歌曲来源统一登录)
- 2024.04.17 : 1. 弹幕拿不到的问题,尽量使用身份码,网页协议随时可能爆炸
2. 酷我音乐复活
3. 黑名单