summaryrefslogtreecommitdiff
path: root/engine/Components/Packages/Manager.go
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-09 02:47:26 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-09 02:47:26 +0500
commite6ccb74f77d0d03d33c422ca7dc942422074d7dd (patch)
treed6c04f5a2824f69792c326b192d89bd458ccbbeb /engine/Components/Packages/Manager.go
parenta6abcd529522c6682a4c2a1f25b1eaf6bd74d53d (diff)
Packages pt. 2
Diffstat (limited to 'engine/Components/Packages/Manager.go')
-rw-r--r--engine/Components/Packages/Manager.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/engine/Components/Packages/Manager.go b/engine/Components/Packages/Manager.go
index 47b0476..8a2786b 100644
--- a/engine/Components/Packages/Manager.go
+++ b/engine/Components/Packages/Manager.go
@@ -8,13 +8,14 @@ import (
rl "github.com/gen2brain/raylib-go/raylib"
)
+// The collection of all avaliable packages that are loaded in the system
type PackageManager struct {
AvaliablePackages map[string]Package
}
var Manager *PackageManager = nil
-func LoadPackages() (*PackageManager, error) {
+func loadPackages() (*PackageManager, error) {
var dir, dirErr = os.ReadDir(settings.Current.PackagesLocation)
if dirErr != nil {
return nil, dirErr
@@ -23,19 +24,32 @@ func LoadPackages() (*PackageManager, error) {
AvaliablePackages: make(map[string]Package),
}
for _, v := range dir {
+ var packagePath = ConcantinateFileLocation(settings.Current.PackagesLocation, v.Name())
var newPackage, packageErr = ReadPackage(v)
if packageErr != nil {
- rl.TraceLog(rl.LogWarning, "Failed to load the module %v: %s", v.Name(), packageErr.Error())
+ rl.TraceLog(rl.LogWarning, "Failed to load the module %v: %s", packagePath, packageErr.Error())
continue
}
- _ = newPackage
+
+ // Resource packages cannot contain worlds
+ if newPackage.Description.Type == "story" {
+ var worlds, worldsErr = loadWorldsFromDir(ConcantinateFileLocation(packagePath, "Worlds"))
+ if worldsErr != nil {
+ rl.TraceLog(rl.LogWarning, "Failed to load the world from the module %s: %s", v.Name(), worldsErr)
+ } else {
+ newPackage.Worlds = worlds
+ }
+ }
+
+ outp.AvaliablePackages[newPackage.Description.Name] = *newPackage
rl.TraceLog(rl.LogError, "Loaded the module %s", newPackage.Description.Name)
}
return &outp, nil
}
+// Loads the packages from the specified in settings directory. Panics on serious error
func Init() {
- var manager, err = LoadPackages()
+ var manager, err = loadPackages()
if err != nil {
panic(fmt.Sprintf("Failed to load packages: %v", err.Error()))
}