Source the palette name from data

This commit is contained in:
2020-06-01 01:24:44 +01:00
parent c1268e8d57
commit 3866ee07a8
8 changed files with 35 additions and 22 deletions

View File

@@ -2,6 +2,7 @@ package assetstore
import (
"fmt"
"image/color"
"io/ioutil"
"os"
"path/filepath"
@@ -10,6 +11,7 @@ import (
"code.ur.gs/lupine/ordoor/internal/config"
"code.ur.gs/lupine/ordoor/internal/data"
"code.ur.gs/lupine/ordoor/internal/idx"
"code.ur.gs/lupine/ordoor/internal/palettes"
)
type entryMap map[string]map[string]string
@@ -29,7 +31,7 @@ type entryMap map[string]map[string]string
// or instantiate two separate asset stores.
type AssetStore struct {
RootDir string
// Palette
Palette color.Palette
// Case-insensitive file lookup.
// {"":{"anim":"Anim", "obj":"Obj", ...}, "anim":{ "warhammer.ani":"WarHammer.ani" }, ...}
@@ -56,8 +58,14 @@ func New(engine *config.Engine) (*AssetStore, error) {
return nil, fmt.Errorf("Unconfigured engine passed to assetstore")
}
palette, ok := palettes.Get(engine.Palette)
if !ok {
return nil, fmt.Errorf("Couldn't find palette %q for engine", engine.Palette)
}
store := &AssetStore{
RootDir: engine.DataDir,
Palette: palette,
}
// fill entryMap

View File

@@ -62,7 +62,7 @@ func (a *AssetStore) Menu(name string) (*Menu, error) {
return nil, err
}
raw, err := menus.LoadMenu(filename)
raw, err := menus.LoadMenu(filename, a.Palette)
if err != nil {
return nil, err
}

View File

@@ -117,7 +117,7 @@ func (o *Object) Sprite(idx int) (*Sprite, error) {
}
raw := o.raw.Sprites[idx]
img, err := ebiten.NewImageFromImage(raw.ToImage(), ebiten.FilterDefault)
img, err := ebiten.NewImageFromImage(raw.ToImage(o.assets.Palette), ebiten.FilterDefault)
if err != nil {
return nil, err
}