mirror of
https://github.com/stevenhowes/GoRetro.git
synced 2026-05-26 15:53:31 +01:00
Introduce indirect file access (simple shim currently, .pak support etc soon)
This commit is contained in:
+2
-13
@@ -9,7 +9,6 @@ package GoRetro
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/veandco/go-sdl2/sdl"
|
||||
@@ -32,8 +31,6 @@ func NewAnimator(
|
||||
renderer *sdl.Renderer) (*animator, error) {
|
||||
var an animator
|
||||
|
||||
imagepath = Config.DataDir + imagepath
|
||||
|
||||
tex, err := loadTextureFromBMP(imagepath, renderer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -122,17 +119,9 @@ func NewSequence(
|
||||
|
||||
var seq Sequence
|
||||
|
||||
indexpath = Config.DataDir + indexpath
|
||||
jsonFile := GetFile(indexpath)
|
||||
|
||||
jsonFile, err := os.Open(indexpath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jsonParser := json.NewDecoder(jsonFile)
|
||||
if err = jsonParser.Decode(&seq.frames); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer jsonFile.Close()
|
||||
json.Unmarshal(jsonFile.Data, &seq.frames)
|
||||
|
||||
seq.frame = 0
|
||||
seq.sampleRate = sampleRate
|
||||
|
||||
@@ -23,7 +23,6 @@ func NewSpriteRenderer(container *Element, renderer *sdl.Renderer, filename stri
|
||||
sr := &spriteRenderer{}
|
||||
var err error
|
||||
|
||||
filename = Config.DataDir + filename
|
||||
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
@@ -21,7 +21,6 @@ func NewSpriteSheetRenderer(container *Element, renderer *sdl.Renderer, filename
|
||||
sr := &spriteSheetRenderer{}
|
||||
var err error
|
||||
|
||||
filename = Config.DataDir + filename
|
||||
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package GoRetro
|
||||
|
||||
/*
|
||||
* --------------------
|
||||
* File Handler
|
||||
* --------------------
|
||||
* All IO should pass through this rather than direct file access to allow
|
||||
* the use of archive files etc in future.
|
||||
*/
|
||||
|
||||
import "os"
|
||||
|
||||
type vFile struct {
|
||||
Data []byte
|
||||
Size int
|
||||
}
|
||||
|
||||
func GetFile(filename string) *vFile {
|
||||
Data, _ := os.ReadFile(Config.DataDir + filename)
|
||||
vf := vFile{
|
||||
Size: len(Data),
|
||||
Data: Data,
|
||||
}
|
||||
return &vf
|
||||
}
|
||||
+4
-1
@@ -47,7 +47,10 @@ func loadTextureFromBMP(filename string, renderer *sdl.Renderer) (*sdl.Texture,
|
||||
return val, nil
|
||||
}
|
||||
|
||||
img, err := sdl.LoadBMP(filename)
|
||||
vFile := GetFile(filename)
|
||||
file, _ := sdl.RWFromMem(vFile.Data)
|
||||
|
||||
img, err := sdl.LoadBMPRW(file, true)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("loading %v: %v", filename, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user