summaryrefslogtreecommitdiff
path: root/engine/Dynamic/Package.go
diff options
context:
space:
mode:
Diffstat (limited to 'engine/Dynamic/Package.go')
-rw-r--r--engine/Dynamic/Package.go48
1 files changed, 35 insertions, 13 deletions
diff --git a/engine/Dynamic/Package.go b/engine/Dynamic/Package.go
index 2108d7b..2d8cc72 100644
--- a/engine/Dynamic/Package.go
+++ b/engine/Dynamic/Package.go
@@ -5,8 +5,10 @@ import (
"fmt"
"os"
+ components "github.com/DegustatorPonos/RuinesOfRafdolon/Components"
descriptors "github.com/DegustatorPonos/RuinesOfRafdolon/Dynamic/Descriptors"
settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings"
+ utils "github.com/DegustatorPonos/RuinesOfRafdolon/Utils"
rl "github.com/gen2brain/raylib-go/raylib"
)
@@ -54,9 +56,9 @@ func (base *Package) String() string {
}
func ReadPackage(dir os.DirEntry) (*Package, error) {
- var dirPath = ConcantinateFileLocation(settings.Current.PackagesLocation, dir.Name())
+ var dirPath = utils.JoinFileLocation(settings.Current.PackagesLocation, dir.Name())
var desc = PackageDescription{}
- if descErr := ReadValidJSONfromFile(ConcantinateFileLocation(dirPath, "Description.json"), &desc); descErr != nil {
+ if descErr := ReadValidJSONfromFile(utils.JoinFileLocation(dirPath, "Description.json"), &desc); descErr != nil {
return nil, descErr
}
return &Package{
@@ -72,7 +74,7 @@ func loadAssetsFromDir[T Validatable](dirLocation string, InitializeFunc func()T
var outp = make([]T, 0)
for _, v := range files {
var new = InitializeFunc()
- var loadErr = ReadValidJSONfromFile(ConcantinateFileLocation(dirLocation, v.Name()), new)
+ var loadErr = ReadValidJSONfromFile(utils.JoinFileLocation(dirLocation, v.Name()), new)
if loadErr != nil {
rl.TraceLog(rl.LogWarning, "Failed to load the asset %s: %s", v.Name(), loadErr)
continue
@@ -82,11 +84,31 @@ func loadAssetsFromDir[T Validatable](dirLocation string, InitializeFunc func()T
return outp, nil
}
-func (base *Package) LoadWorlds() {
+func (base *Package) ReadTextures() {
+ var textures = &descriptors.TexturesDescriptor{}
+ var texturesLocation = utils.JoinFileLocation(base.location, descriptors.TexturesDescriptorDirectoryName)
+ var loadErr = utils.ReadJSONfromFile(utils.JoinFileLocation(texturesLocation, descriptors.TexturesDescriptorFileName), textures)
+ if loadErr != nil {
+ rl.TraceLog(rl.LogWarning, "Failed to load texture description from the module %s: %s", base.location, loadErr)
+ } else {
+ base.Textures = textures
+ }
+}
+
+// Loads textures in the resource manager
+func (base *Package) LoadTextures() {
+ for _, v := range base.Textures.Avaliable {
+ var location = base.Textures.GetTexturePath(base.location, v)
+ var displayName = fmt.Sprintf("%v/%v", base.Description.Name, v)
+ components.Resources.Textures.LoadTexture(location, displayName)
+ }
+}
+
+func (base *Package) ReadWorlds() {
if base.Description.Type != "story" {
return
}
- var worlds, loadErr = loadWorldsFromDir(ConcantinateFileLocation(base.location, "Worlds"))
+ var worlds, loadErr = loadWorldsFromDir(utils.JoinFileLocation(base.location, "Worlds"))
if loadErr != nil {
rl.TraceLog(rl.LogWarning, "Failed to load world from the module %s: %s", base.location, loadErr)
} else {
@@ -94,14 +116,13 @@ func (base *Package) LoadWorlds() {
}
}
-func (base *Package) LoadTextures() {
- var textures = &descriptors.TexturesDescriptor{}
- var texturesLocation = ConcantinateFileLocation(base.location, descriptors.TexturesDescriptorDirectoryName)
- var loadErr = ReadJSONfromFile(ConcantinateFileLocation(texturesLocation, descriptors.TexturesDescriptorFileName), textures)
- if loadErr != nil {
- rl.TraceLog(rl.LogWarning, "Failed to load texture description from the module %s: %s", base.location, loadErr)
- } else {
- base.Textures = textures
+func (base *Package) LoadWorlds() {
+ if base.Description.Type != "story" {
+ return
+ }
+ for _, v := range base.Worlds {
+ var parsed = v.Parse()
+ components.Resources.Worlds[v.Name] = &parsed
}
}
@@ -113,6 +134,7 @@ func loadWorldsFromDir(dirLocation string) (map[string]*descriptors.WorldDescrip
return descriptors.MapWorldDescriptors(loaded), nil
}
+// Deprecated
func loadTilesFromDir(dirLocation string) (map[uint64]*descriptors.TileDescriptor, error) {
var loaded, err = loadAssetsFromDir(dirLocation, func() *descriptors.TileDescriptor{ return &descriptors.TileDescriptor{} })
if err != nil {