Files
ordoor/internal/assetstore/set.go
Nick Thomas be4229b8fe Remove internal/conv
This sets font rendering back a little bit, but not much.
2020-03-21 13:37:20 +00:00

56 lines
854 B
Go

package assetstore
import (
"errors"
"log"
"code.ur.gs/lupine/ordoor/internal/sets"
)
var (
ErrOutOfBounds = errors.New("Out of bounds")
)
type Set struct {
assets *AssetStore
raw *sets.MapSet
NumObjects int
}
func (s *Set) Object(idx int) (*Object, error) {
if idx < 0 || idx >= s.NumObjects {
return nil, ErrOutOfBounds
}
return s.assets.Object(s.raw.Palette[idx])
}
func (a *AssetStore) Set(name string) (*Set, error) {
name = canonical(name)
if set, ok := a.sets[name]; ok {
return set, nil
}
log.Printf("Loading set %v", name)
filename, err := a.lookup(name, "set", "Sets")
if err != nil {
return nil, err
}
raw, err := sets.LoadSet(filename)
if err != nil {
return nil, err
}
set := &Set{
assets: a,
raw: raw,
NumObjects: len(raw.Palette),
}
a.sets[name] = set
return set, nil
}