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 (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"os"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/veandco/go-sdl2/sdl"
|
"github.com/veandco/go-sdl2/sdl"
|
||||||
@@ -32,8 +31,6 @@ func NewAnimator(
|
|||||||
renderer *sdl.Renderer) (*animator, error) {
|
renderer *sdl.Renderer) (*animator, error) {
|
||||||
var an animator
|
var an animator
|
||||||
|
|
||||||
imagepath = Config.DataDir + imagepath
|
|
||||||
|
|
||||||
tex, err := loadTextureFromBMP(imagepath, renderer)
|
tex, err := loadTextureFromBMP(imagepath, renderer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -122,17 +119,9 @@ func NewSequence(
|
|||||||
|
|
||||||
var seq Sequence
|
var seq Sequence
|
||||||
|
|
||||||
indexpath = Config.DataDir + indexpath
|
jsonFile := GetFile(indexpath)
|
||||||
|
|
||||||
jsonFile, err := os.Open(indexpath)
|
json.Unmarshal(jsonFile.Data, &seq.frames)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
jsonParser := json.NewDecoder(jsonFile)
|
|
||||||
if err = jsonParser.Decode(&seq.frames); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer jsonFile.Close()
|
|
||||||
|
|
||||||
seq.frame = 0
|
seq.frame = 0
|
||||||
seq.sampleRate = sampleRate
|
seq.sampleRate = sampleRate
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ func NewSpriteRenderer(container *Element, renderer *sdl.Renderer, filename stri
|
|||||||
sr := &spriteRenderer{}
|
sr := &spriteRenderer{}
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
filename = Config.DataDir + filename
|
|
||||||
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ func NewSpriteSheetRenderer(container *Element, renderer *sdl.Renderer, filename
|
|||||||
sr := &spriteSheetRenderer{}
|
sr := &spriteSheetRenderer{}
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
filename = Config.DataDir + filename
|
|
||||||
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
sr.tex, err = loadTextureFromBMP(filename, renderer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
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
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("loading %v: %v", filename, err)
|
return nil, fmt.Errorf("loading %v: %v", filename, err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user