Files
questshock/modding/hacked/ss1/edit/media/SoundEffectViewerService.go
T

39 lines
1.2 KiB
Go

package media
import (
"github.com/inkyblackness/hacked/ss1/content/audio"
"github.com/inkyblackness/hacked/ss1/content/sound"
"github.com/inkyblackness/hacked/ss1/resource"
)
// SoundEffectBlockGetter provides raw data of blocks.
type SoundEffectBlockGetter interface {
ModifiedBlock(lang resource.Language, id resource.ID, index int) []byte
}
// SoundEffectViewerService provides read-only access to audio resources.
type SoundEffectViewerService struct {
soundCache *sound.EffectCache
getter SoundEffectBlockGetter
}
// NewSoundViewerService returns a new instance.
func NewSoundViewerService(soundCache *sound.EffectCache, getter SoundEffectBlockGetter) SoundEffectViewerService {
return SoundEffectViewerService{
soundCache: soundCache,
getter: getter,
}
}
// Audio returns the audio data associated with the given key.
func (service SoundEffectViewerService) Audio(key resource.Key) audio.L8 {
sound, _ := service.soundCache.Audio(key)
return sound
}
// Modified returns true if the identified sound resource is marked as modified.
func (service SoundEffectViewerService) Modified(key resource.Key) bool {
data := service.getter.ModifiedBlock(key.Lang, key.ID.Plus(key.Index), 0)
return len(data) > 0
}