package divwarsound

import (
	"time"

	"wartank/pkg/components/sound"
	"wartank/server/serv_bots/warbot/angar/battle/battle_worker/battleon/battlesound/isplay"
)

/*
	Выполняет контроль за запуском одной озвучки битвы
*/

// DivWarSound -- контроль одного раза запуска звука битвы
type DivWarSound struct {
	isPlay *isplay.IsPlay
}

// NewDivWarSound -- возвращает новый  *DivWarSound
func NewDivWarSound() *DivWarSound {
	return &DivWarSound{
		isPlay: isplay.NewIsPlay(),
	}
}

// Play -- играет музончик, если можно
func (sf *DivWarSound) Play() {
	if sf.isPlay.Get() {
		return
	}
	go sf.play()
}

// Проигрывает экслюзивно в отдельном потоке звук
func (sf *DivWarSound) play() {
	sf.isPlay.Set()
	val := 7
	for val > 0 {
		sound.DivWar()
		val--
		time.Sleep(time.Second * 1)
	}
	val = 600 // Пауза для блокировки повторного вкелючения начатой битвы
	for val >= 0 {
		val--
		time.Sleep(time.Second * 1)
	}
	sf.isPlay.Reset()
}
