package battlesound

import (
	"time"

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

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

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

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

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

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