summaryrefslogtreecommitdiff
path: root/engine/Dynamic/Manager.go
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2026-01-10 17:27:55 +0500
committerPhyscik <mynameisgennadiy@vk.com>2026-01-10 17:27:55 +0500
commita364d4330dfd34f953f64e90020f8b8d6f2e82c4 (patch)
treedb71d125f633832b130821f3aec07d4b714ab7bb /engine/Dynamic/Manager.go
parente6ccb74f77d0d03d33c422ca7dc942422074d7dd (diff)
World storage system change
Diffstat (limited to 'engine/Dynamic/Manager.go')
-rw-r--r--engine/Dynamic/Manager.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/engine/Dynamic/Manager.go b/engine/Dynamic/Manager.go
new file mode 100644
index 0000000..7e5a567
--- /dev/null
+++ b/engine/Dynamic/Manager.go
@@ -0,0 +1,51 @@
+package dynamic
+
+import (
+ "fmt"
+ "os"
+
+ settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings"
+ 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) {
+ var dir, dirErr = os.ReadDir(settings.Current.PackagesLocation)
+ if dirErr != nil {
+ return nil, dirErr
+ }
+ var outp = PackageManager{
+ 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", packagePath, packageErr.Error())
+ continue
+ }
+ newPackage.location = packagePath
+
+ // newPackage.LoadTiles()
+ newPackage.LoadWorlds()
+
+ outp.AvaliablePackages[newPackage.Description.Name] = *newPackage
+ rl.TraceLog(rl.LogInfo, "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()
+ if err != nil {
+ panic(fmt.Sprintf("Failed to load packages: %v", err.Error()))
+ }
+ Manager = manager
+}