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.go34
1 files changed, 29 insertions, 5 deletions
diff --git a/engine/Dynamic/Package.go b/engine/Dynamic/Package.go
index 2d8cc72..fe03aae 100644
--- a/engine/Dynamic/Package.go
+++ b/engine/Dynamic/Package.go
@@ -42,6 +42,7 @@ type Package struct {
Description PackageDescription
Textures *descriptors.TexturesDescriptor
+ Objects map[string]*descriptors.ObjectDescriptor
Worlds map[string]*descriptors.WorldDescriptor
location string
@@ -108,7 +109,7 @@ func (base *Package) ReadWorlds() {
if base.Description.Type != "story" {
return
}
- var worlds, loadErr = loadWorldsFromDir(utils.JoinFileLocation(base.location, "Worlds"))
+ var worlds, loadErr = loadWorldsFromDir(utils.JoinFileLocation(base.location, descriptors.WorldsDirName))
if loadErr != nil {
rl.TraceLog(rl.LogWarning, "Failed to load world from the module %s: %s", base.location, loadErr)
} else {
@@ -116,6 +117,7 @@ func (base *Package) ReadWorlds() {
}
}
+// Loads worlds in the resource manager
func (base *Package) LoadWorlds() {
if base.Description.Type != "story" {
return
@@ -126,6 +128,27 @@ func (base *Package) LoadWorlds() {
}
}
+func (base *Package) ReadObjects() {
+ var loaded, err = loadObjectsFromDir(utils.JoinFileLocation(base.location, descriptors.ObjectsDirName))
+ if err != nil {
+ rl.TraceLog(rl.LogWarning, "Failed to load objects from the module %s: %s", base.location, err)
+ return
+ }
+ base.Objects = loaded
+}
+
+// Loads objects in the resource manager
+func (base *Package) LoadObjects() {
+ rl.TraceLog(rl.LogInfo, "%s", base.Objects)
+ for _, v := range base.Objects {
+ var parsed = v.Parse()
+ var err = components.Resources.RegisterObject(base.Description.Name, v.Name, &parsed)
+ if err != nil {
+ rl.TraceLog(rl.LogWarning, "Failed to register object %s: %s", v.Name, err.Error())
+ }
+ }
+}
+
func loadWorldsFromDir(dirLocation string) (map[string]*descriptors.WorldDescriptor, error) {
var loaded, err = loadAssetsFromDir(dirLocation, func() *descriptors.WorldDescriptor{ return &descriptors.WorldDescriptor{} })
if err != nil {
@@ -134,11 +157,12 @@ 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{} })
+func loadObjectsFromDir(dir string) (map[string]*descriptors.ObjectDescriptor, error) {
+ var loaded, err = loadAssetsFromDir(dir, func() *descriptors.ObjectDescriptor {
+ return &descriptors.ObjectDescriptor{}
+ })
if err != nil {
return nil, err
}
- return descriptors.MapTileDescriptors(loaded), nil
+ return descriptors.MapObjectDescriptors(loaded), nil
}