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

38 lines
1.1 KiB
Go

package media
import (
"bytes"
"github.com/inkyblackness/hacked/ss1/content/movie"
"github.com/inkyblackness/hacked/ss1/content/text"
"github.com/inkyblackness/hacked/ss1/resource"
)
// MovieBlockSetter modifies storage of raw resource data.
type MovieBlockSetter interface {
SetResourceBlocks(lang resource.Language, id resource.ID, data [][]byte)
DelResource(lang resource.Language, id resource.ID)
}
// MovieSetterService can be used to set movie data.
type MovieSetterService struct {
cp text.Codepage
}
// NewMovieSetterService returns a new instance.
func NewMovieSetterService(cp text.Codepage) MovieSetterService {
return MovieSetterService{cp: cp}
}
// Remove deletes any movie resource for given key.
func (service MovieSetterService) Remove(setter MovieBlockSetter, key resource.Key) {
setter.DelResource(key.Lang, key.ID)
}
// Set exports the given container.
func (service MovieSetterService) Set(setter MovieBlockSetter, key resource.Key, container movie.Container) {
buf := bytes.NewBuffer(nil)
_ = movie.Write(buf, container, service.cp)
setter.SetResourceBlocks(key.Lang, key.ID, [][]byte{buf.Bytes()})
}