Remove internal/conv

This sets font rendering back a little bit, but not much.
This commit is contained in:
2020-03-21 13:37:20 +00:00
parent 4c0355ac4f
commit be4229b8fe
8 changed files with 145 additions and 220 deletions

View File

@@ -3,6 +3,7 @@ package assetstore
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"strings"
@@ -91,7 +92,10 @@ func (a *AssetStore) lookup(name, ext string, dirs ...string) (string, error) {
for _, dir := range dirs {
dir = canonical(dir)
log.Printf("Looking in canonical dir %s", dir)
if base, ok := a.entries[dir]; ok {
log.Printf(" base: %#+v", base)
log.Printf(" filename: %v", filename)
if file, ok := base[filename]; ok {
actualDir := a.entries[RootDir][dir]
return filepath.Join(a.RootDir, actualDir, file), nil

View File

@@ -3,6 +3,8 @@ package assetstore
import (
"fmt"
"log"
"path/filepath"
"strings"
"github.com/hajimehoshi/ebiten"
@@ -13,7 +15,9 @@ type Object struct {
assets *AssetStore
sprites []*Sprite
raw *data.Object
raw *data.Object
NumSprites int
Name string
}
type Sprite struct {
@@ -41,23 +45,49 @@ func (a *AssetStore) Object(name string) (*Object, error) {
return nil, err
}
raw, err := data.LoadObjectLazily(filename)
obj, err := a.ObjectByPath(filename)
if err != nil {
return nil, err
}
raw.Name = name
obj := &Object{
assets: a,
sprites: make([]*Sprite, int(raw.NumSprites)),
raw: raw,
}
a.objs[name] = obj
return obj, nil
}
// Filled lazily
// FIXME: Objects loaded by path are not cached
func (a *AssetStore) ObjectByPath(path string) (*Object, error) {
name := filepath.Base(path)
name = strings.Replace(name, filepath.Ext(name), "", -1)
name = canonical(name)
raw, err := data.LoadObjectLazily(path)
if err != nil {
return nil, err
}
obj := &Object{
assets: a,
sprites: make([]*Sprite, int(raw.NumSprites)),
raw: raw,
NumSprites: int(raw.NumSprites),
Name: canonical(name),
}
return obj, nil
}
// Loads all sprites in the object eagerly
func (o *Object) LoadSprites() error {
for i := 0; i < o.NumSprites; i++ {
if _, err := o.Sprite(i); err != nil {
return err
}
}
return nil
}
func (o *Object) Sprite(idx int) (*Sprite, error) {
if sprite := o.sprites[idx]; sprite != nil {
return sprite, nil

View File

@@ -14,11 +14,12 @@ var (
type Set struct {
assets *AssetStore
raw *sets.MapSet
raw *sets.MapSet
NumObjects int
}
func (s *Set) Object(idx int) (*Object, error) {
if idx < 0 || idx >= len(s.raw.Palette) {
if idx < 0 || idx >= s.NumObjects {
return nil, ErrOutOfBounds
}
@@ -27,6 +28,7 @@ func (s *Set) Object(idx int) (*Object, error) {
func (a *AssetStore) Set(name string) (*Set, error) {
name = canonical(name)
if set, ok := a.sets[name]; ok {
return set, nil
}
@@ -43,8 +45,9 @@ func (a *AssetStore) Set(name string) (*Set, error) {
}
set := &Set{
assets: a,
raw: raw,
assets: a,
raw: raw,
NumObjects: len(raw.Palette),
}
a.sets[name] = set