Start routine at wakeup end

This commit is contained in:
nemunaire 2022-12-08 17:49:42 +01:00
commit e1f5fbcd6c
7 changed files with 101 additions and 16 deletions

View file

@ -31,6 +31,8 @@ type Player struct {
claironTime time.Duration
claironFile string
endRoutines []*reveil.Routine
ntick int64
hasClaironed bool
hasSpokeWeather bool
@ -41,7 +43,7 @@ type Player struct {
playedItem int
}
func WakeUp(cfg *config.Config) (err error) {
func WakeUp(cfg *config.Config, routine []reveil.Identifier) (err error) {
if CommonPlayer != nil {
return fmt.Errorf("Unable to start the player: a player is already running")
}
@ -50,16 +52,16 @@ func WakeUp(cfg *config.Config) (err error) {
seed -= seed % 172800
rand.Seed(seed)
CommonPlayer, err = NewPlayer(cfg)
CommonPlayer, err = NewPlayer(cfg, routine)
if err != nil {
return err
}
go CommonPlayer.WakeUp()
go CommonPlayer.WakeUp(cfg)
return nil
}
func NewPlayer(cfg *config.Config) (*Player, error) {
func NewPlayer(cfg *config.Config, routines []reveil.Identifier) (*Player, error) {
// Load our settings
settings, err := reveil.ReadSettings(cfg.SettingsFile)
if err != nil {
@ -83,6 +85,17 @@ func NewPlayer(cfg *config.Config) (*Player, error) {
reverseOrder: int(time.Now().Unix()/86400)%2 == 0,
}
// Load routines
for _, routine := range routines {
r, err := reveil.LoadRoutineFromId(routine, cfg)
if err != nil {
log.Printf("Unable to load routine %x: %s", routine, err.Error())
continue
}
p.endRoutines = append(p.endRoutines, r)
}
// Load our track list
tracks, err := reveil.LoadTracks(cfg)
if err != nil {
@ -136,7 +149,7 @@ func (p *Player) playFile(filepath string) (err error) {
return
}
func (p *Player) WakeUp() {
func (p *Player) WakeUp(cfg *config.Config) {
log.Println("Playlist in use:", strings.Join(p.Playlist, " ; "))
// Prepare sound player
@ -241,6 +254,11 @@ loopcalm:
CommonPlayer = nil
}
// TODO: Start Routine if any
for _, r := range p.endRoutines {
go r.Launch(cfg)
}
}
func (p *Player) NextTrack() {