diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2026-01-10 17:27:55 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2026-01-10 17:27:55 +0500 |
| commit | a364d4330dfd34f953f64e90020f8b8d6f2e82c4 (patch) | |
| tree | db71d125f633832b130821f3aec07d4b714ab7bb /engine/Dynamic/Manager.go | |
| parent | e6ccb74f77d0d03d33c422ca7dc942422074d7dd (diff) | |
World storage system change
Diffstat (limited to 'engine/Dynamic/Manager.go')
| -rw-r--r-- | engine/Dynamic/Manager.go | 51 |
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 +} |
