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
|
DebugStatePrintSeconds float64
|
||||||
|
|
||||||
DataDir string
|
DataDir string
|
||||||
|
PakFile string
|
||||||
}
|
}
|
||||||
|
|
||||||
var Delta float64
|
var Delta float64
|
||||||
@@ -33,7 +34,7 @@ func Init() (*sdl.Renderer, *sdl.Window) {
|
|||||||
return nil, nil
|
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(
|
window, err := sdl.CreateWindow(
|
||||||
"GoEscape",
|
"GoEscape",
|
||||||
@@ -54,6 +55,14 @@ func Init() (*sdl.Renderer, *sdl.Window) {
|
|||||||
TexList = make(map[string]*sdl.Texture)
|
TexList = make(map[string]*sdl.Texture)
|
||||||
FileList = make(map[string]*vFile)
|
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()
|
LastDebugStatePrint = time.Now()
|
||||||
|
|
||||||
return renderer, window
|
return renderer, window
|
||||||
|
|||||||
+23
-1
@@ -11,6 +11,8 @@ package GoRetro
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/stevenhowes/PakGo"
|
||||||
)
|
)
|
||||||
|
|
||||||
type vFile struct {
|
type vFile struct {
|
||||||
@@ -20,6 +22,21 @@ type vFile struct {
|
|||||||
|
|
||||||
var FileList map[string]*vFile
|
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) {
|
func GetFile(filename string) (*vFile, error) {
|
||||||
if val, ok := FileList[filename]; ok {
|
if val, ok := FileList[filename]; ok {
|
||||||
CacheHitsFile++
|
CacheHitsFile++
|
||||||
@@ -27,12 +44,17 @@ func GetFile(filename string) (*vFile, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Data, err := os.ReadFile(Config.DataDir + filename)
|
Data, err := os.ReadFile(Config.DataDir + filename)
|
||||||
|
if err != nil {
|
||||||
|
Data, err = pak.ReadFile(filename)
|
||||||
|
}
|
||||||
|
|
||||||
vf := vFile{
|
vf := vFile{
|
||||||
Size: len(Data),
|
Size: len(Data),
|
||||||
Data: 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
|
FileList[filename] = &vf
|
||||||
return &vf, err
|
return &vf, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user