diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2026-01-09 02:47:26 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2026-01-09 02:47:26 +0500 |
| commit | e6ccb74f77d0d03d33c422ca7dc942422074d7dd (patch) | |
| tree | d6c04f5a2824f69792c326b192d89bd458ccbbeb /engine/Components/Packages/Package.go | |
| parent | a6abcd529522c6682a4c2a1f25b1eaf6bd74d53d (diff) | |
Packages pt. 2
Diffstat (limited to 'engine/Components/Packages/Package.go')
| -rw-r--r-- | engine/Components/Packages/Package.go | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/engine/Components/Packages/Package.go b/engine/Components/Packages/Package.go index 51e2a80..9f2fdd2 100644 --- a/engine/Components/Packages/Package.go +++ b/engine/Components/Packages/Package.go @@ -1,37 +1,48 @@ package packages import ( + "encoding/json" "fmt" "os" + world "github.com/DegustatorPonos/RuinesOfRafdolon/Components/World" settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings" + rl "github.com/gen2brain/raylib-go/raylib" ) type PackageDescription struct { Name string `json:"name"` Version uint64 `json:"version"` Type string `json:"type"` + MinimumVersion *settings.AppVersion + MaximumVersion *settings.AppVersion } type Package struct { Description PackageDescription `json:"description"` + Worlds map[string]world.World `json:"-"` +} + +func (base *Package) String() string { + var outp, jsonErr = json.Marshal(base) + if jsonErr != nil { + return fmt.Sprintf("Failed to parse settings: %s", jsonErr.Error()) + } + return string(outp) } func ReadPackage(dir os.DirEntry) (*Package, error) { var dirPath = ConcantinateFileLocation(settings.Current.PackagesLocation, dir.Name()) var desc = PackageDescription{} - if descErr := ReadJSONfromFile(ConcantinateFileLocation(dirPath, "Description.json"), &desc); descErr != nil { + if descErr := ReadValidJSONfromFile(ConcantinateFileLocation(dirPath, "Description.json"), &desc); descErr != nil { return nil, descErr } - if descErr := desc.Validate(); descErr != nil { - return nil, fmt.Errorf("Failed to parse descriptor: %s", descErr.Error()) - } return &Package{ Description: desc, }, nil } -func (base *PackageDescription) Validate() error { +func (base *PackageDescription) IsValid() error { if base.Name == "" { return fmt.Errorf("Invalid package descriptor: the name cannot be empty") } @@ -40,3 +51,20 @@ func (base *PackageDescription) Validate() error { } return nil } + +func loadWorldsFromDir(dirLocation string) (map[string]world.World, error) { + var files, err = os.ReadDir(dirLocation) + if err != nil { + return nil, err + } + var outp = make(map[string]world.World) + for _, v := range files { + var new = world.World{} + var loadErr = ReadJSONfromFile(ConcantinateFileLocation(dirLocation, v.Name()), &new) + if loadErr != nil { + rl.TraceLog(rl.LogWarning, "Failed to load the world %s: %s", v.Name(), loadErr) + continue + } + } + return outp, nil +} |
