Remove internal/conv
This sets font rendering back a little bit, but not much.
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -1,23 +0,0 @@
|
||||
package conv
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"code.ur.gs/lupine/ordoor/internal/fonts"
|
||||
)
|
||||
|
||||
type Font struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func (f *Font) Output(to interface{}, m interface{}, format string, args ...interface{}) {
|
||||
|
||||
// FIXME: actually output some text onto screen
|
||||
|
||||
fmt.Printf(format+"\n", args...)
|
||||
}
|
||||
|
||||
func ConvertFont(font *fonts.Font) *Font {
|
||||
// FIXME: actually use the pixel data in font
|
||||
return &Font{Name: font.Name}
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
package conv
|
||||
|
||||
import (
|
||||
"github.com/hajimehoshi/ebiten"
|
||||
|
||||
"code.ur.gs/lupine/ordoor/internal/data"
|
||||
)
|
||||
|
||||
// Important conversions:
|
||||
//
|
||||
// * Width & height now stored using int
|
||||
// * Colour data is now 32-bit rather than using a palette
|
||||
type Sprite struct {
|
||||
XOffset int
|
||||
YOffset int
|
||||
Width int
|
||||
Height int
|
||||
|
||||
Image *ebiten.Image
|
||||
}
|
||||
|
||||
type Object struct {
|
||||
Name string
|
||||
Sprites []*Sprite
|
||||
}
|
||||
|
||||
func MapByName(objects []*Object) map[string]*Object {
|
||||
out := make(map[string]*Object, len(objects))
|
||||
|
||||
for _, obj := range objects {
|
||||
out[obj.Name] = obj
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
func ConvertObject(rawObj *data.Object, name string) (*Object, error) {
|
||||
out := &Object{
|
||||
Name: name,
|
||||
Sprites: make([]*Sprite, len(rawObj.Sprites)),
|
||||
}
|
||||
|
||||
for i, rawSpr := range rawObj.Sprites {
|
||||
ebitenImage, err := ebiten.NewImageFromImage(rawSpr.ToImage(), ebiten.FilterDefault)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out.Sprites[i] = &Sprite{
|
||||
XOffset: int(rawSpr.XOffset),
|
||||
YOffset: int(rawSpr.YOffset),
|
||||
Width: int(rawSpr.Width),
|
||||
Height: int(rawSpr.Height),
|
||||
Image: ebitenImage,
|
||||
}
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
Reference in New Issue
Block a user