Files
GoRetro/utils_file.go
2022-03-27 20:13:01 +01:00

61 lines
967 B
Go

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 (
"fmt"
"os"
"github.com/stevenhowes/PakGo"
)
type vFile struct {
Data []byte
Size int
}
var FileList map[string]*vFile
var pak PakGo.PakFile
func PakLoad(filename string) error {
var err error
fmt.Printf("Loading PAK %s\n", filename)
pak, err = PakGo.PakLoad(Config.DataDir + filename)
if err != nil {
panic(err)
}
return err
}
func GetFile(filename string) (*vFile, error) {
if val, ok := FileList[filename]; ok {
CacheHitsFile++
return val, nil
}
Data, err := os.ReadFile(Config.DataDir + filename)
if err != nil {
Data, err = pak.ReadFile(filename)
}
vf := vFile{
Size: len(Data),
Data: Data,
}
fmt.Printf("File Caching %s at %d bytes\n", filename, len(Data))
FileList[filename] = &vf
return &vf, err
}