package assetstore import ( "image" "os" "github.com/hajimehoshi/ebiten" _ "github.com/samuel/go-pcx/pcx" // PCX support ) func (a *AssetStore) Image(name string) (*ebiten.Image, error) { name = canonical(name) if img, ok := a.images[name]; ok { return img, nil } // baps, ordoor, geas store .pcx files in Pic // TODO: SL stores .bmp files in Res filename, err := a.lookup(name, "pcx", "Pic") if err != nil { return nil, err } f, err := os.Open(filename) if err != nil { return nil, err } defer f.Close() rawImg, _, err := image.Decode(f) if err != nil { return nil, err } img, err := ebiten.NewImageFromImage(rawImg, ebiten.FilterDefault) if err != nil { return nil, err } a.images[name] = img return img, nil }