summaryrefslogtreecommitdiff
path: root/engine/Components/Packages
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/Components/Packages
parente6ccb74f77d0d03d33c422ca7dc942422074d7dd (diff)
World storage system change
Diffstat (limited to 'engine/Components/Packages')
-rw-r--r--engine/Components/Packages/Common.go23
-rw-r--r--engine/Components/Packages/Manager.go57
-rw-r--r--engine/Components/Packages/Package.go70
-rw-r--r--engine/Components/Packages/Validation.go15
4 files changed, 0 insertions, 165 deletions
diff --git a/engine/Components/Packages/Common.go b/engine/Components/Packages/Common.go
deleted file mode 100644
index 0564f08..0000000
--- a/engine/Components/Packages/Common.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package packages
-
-import (
- "encoding/json"
- "fmt"
- "os"
-)
-
-func ReadJSONfromFile(fileLocation string, v any) error {
- var file, openErr = os.ReadFile(fileLocation)
- if openErr != nil {
- return openErr
- }
- var jsonErr = json.Unmarshal(file, v)
- if jsonErr != nil {
- return jsonErr
- }
- return nil
-}
-
-func ConcantinateFileLocation(baseDirLocation string, appendix string) string {
- return fmt.Sprintf("%v/%v", baseDirLocation, appendix)
-}
diff --git a/engine/Components/Packages/Manager.go b/engine/Components/Packages/Manager.go
deleted file mode 100644
index 8a2786b..0000000
--- a/engine/Components/Packages/Manager.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package packages
-
-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
- }
-
- // 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()
- if err != nil {
- panic(fmt.Sprintf("Failed to load packages: %v", err.Error()))
- }
- Manager = manager
-}
diff --git a/engine/Components/Packages/Package.go b/engine/Components/Packages/Package.go
deleted file mode 100644
index 9f2fdd2..0000000
--- a/engine/Components/Packages/Package.go
+++ /dev/null
@@ -1,70 +0,0 @@
-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 := ReadValidJSONfromFile(ConcantinateFileLocation(dirPath, "Description.json"), &desc); descErr != nil {
- return nil, descErr
- }
- return &Package{
- Description: desc,
- }, nil
-}
-
-func (base *PackageDescription) IsValid() error {
- if base.Name == "" {
- return fmt.Errorf("Invalid package descriptor: the name cannot be empty")
- }
- if base.Version == 0{
- return fmt.Errorf("Invalid package descriptor: the version cannot be 0")
- }
- 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
-}
diff --git a/engine/Components/Packages/Validation.go b/engine/Components/Packages/Validation.go
deleted file mode 100644
index 04428d2..0000000
--- a/engine/Components/Packages/Validation.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package packages
-
-type Validatable interface {
- // If the object is returned invalid this function should return the reason
- IsValid() error
-}
-
-// Reads object fron the file and validates it
-func ReadValidJSONfromFile(fileLocation string, v Validatable) error {
- var err = ReadJSONfromFile(fileLocation, v)
- if err != nil {
- return err
- }
- return v.IsValid()
-}