mirror of
https://github.com/stevenhowes/GoRetro.git
synced 2026-05-26 15:53:31 +01:00
Q/Q2 PAK file support
This commit is contained in:
+10
-1
@@ -18,6 +18,7 @@ var Config struct {
|
||||
DebugStatePrintSeconds float64
|
||||
|
||||
DataDir string
|
||||
PakFile string
|
||||
}
|
||||
|
||||
var Delta float64
|
||||
@@ -33,7 +34,7 @@ func Init() (*sdl.Renderer, *sdl.Window) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
fmt.Printf("%d x %d", Config.WindowSize.X, Config.WindowSize.Y)
|
||||
fmt.Printf("Created window %d x %d\n", Config.WindowSize.X, Config.WindowSize.Y)
|
||||
|
||||
window, err := sdl.CreateWindow(
|
||||
"GoEscape",
|
||||
@@ -54,6 +55,14 @@ func Init() (*sdl.Renderer, *sdl.Window) {
|
||||
TexList = make(map[string]*sdl.Texture)
|
||||
FileList = make(map[string]*vFile)
|
||||
|
||||
if Config.PakFile != "" {
|
||||
PakLoad(Config.PakFile)
|
||||
if err != nil {
|
||||
fmt.Println("loading pak ", Config.PakFile, err)
|
||||
defer pak.PakClose()
|
||||
}
|
||||
|
||||
}
|
||||
LastDebugStatePrint = time.Now()
|
||||
|
||||
return renderer, window
|
||||
|
||||
+23
-1
@@ -11,6 +11,8 @@ package GoRetro
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/stevenhowes/PakGo"
|
||||
)
|
||||
|
||||
type vFile struct {
|
||||
@@ -20,6 +22,21 @@ type vFile struct {
|
||||
|
||||
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++
|
||||
@@ -27,12 +44,17 @@ func GetFile(filename string) (*vFile, error) {
|
||||
}
|
||||
|
||||
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\n", filename)
|
||||
fmt.Printf("File Caching %s at %d bytes\n", filename, len(Data))
|
||||
|
||||
FileList[filename] = &vf
|
||||
return &vf, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user