diff options
Diffstat (limited to 'engine/Components')
| -rw-r--r-- | engine/Components/Packages/Common.go | 23 | ||||
| -rw-r--r-- | engine/Components/Packages/Manager.go | 57 | ||||
| -rw-r--r-- | engine/Components/Packages/Package.go | 70 | ||||
| -rw-r--r-- | engine/Components/Packages/Validation.go | 15 | ||||
| -rw-r--r-- | engine/Components/World/Descriptor.go | 29 | ||||
| -rw-r--r-- | engine/Components/World/Tile.go | 12 | ||||
| -rw-r--r-- | engine/Components/World/World.go | 11 |
7 files changed, 11 insertions, 206 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() -} diff --git a/engine/Components/World/Descriptor.go b/engine/Components/World/Descriptor.go deleted file mode 100644 index 553aa5b..0000000 --- a/engine/Components/World/Descriptor.go +++ /dev/null @@ -1,29 +0,0 @@ -package world - -import rl "github.com/gen2brain/raylib-go/raylib" - -type Descriptor struct { - TileSize rl.Vector2 - Textures map[int]string `json:"textures"` - WorldMap [][]TileDescriptor `json:"worldmap"` -} - -func (base *Descriptor) GenerateMap() *World { - var outp = &World { - TileSize: base.TileSize, - TextureNames: base.Textures, - Tiles: make([][]Tile, len(base.WorldMap)), - } - for x := range base.WorldMap { - outp.Tiles[x] = make([]Tile, len(base.WorldMap[x])) - for y, tile := range base.WorldMap[x] { - outp.Tiles[x][y] = &StandardTile { - X: float32(x), - Y: float32(y), - ParentWorld: outp, - Descriptor: tile, - } - } - } - return outp -} diff --git a/engine/Components/World/Tile.go b/engine/Components/World/Tile.go index a630062..0ef3a00 100644 --- a/engine/Components/World/Tile.go +++ b/engine/Components/World/Tile.go @@ -1,6 +1,9 @@ package world -import rl "github.com/gen2brain/raylib-go/raylib" +import ( + descriptors "github.com/DegustatorPonos/RuinesOfRafdolon/Dynamic/Descriptors" + rl "github.com/gen2brain/raylib-go/raylib" +) // The square that will be displayed at the screen type Tile interface { @@ -12,7 +15,7 @@ type StandardTile struct { X float32 Y float32 ParentWorld *World - Descriptor TileDescriptor + Descriptor descriptors.TileDescriptor } func (base *StandardTile) Update() { @@ -34,8 +37,3 @@ func (base *StandardTile) Draw() { rl.White) } } - -type TileDescriptor struct { - TextureId int `json:"textureid"` - OveralyTextureId int `json:"overalytextureid"` -} diff --git a/engine/Components/World/World.go b/engine/Components/World/World.go index 80ef7e9..d360adc 100644 --- a/engine/Components/World/World.go +++ b/engine/Components/World/World.go @@ -9,11 +9,12 @@ var Texture rl.Texture2D // The scene full of tiles type World struct { - TileSize rl.Vector2 - TextureNames map[int]string - Textures map[int]rl.Texture2D - Tiles [][]Tile - Camera rl.Camera2D + Name string `json:"name"` + TileSize rl.Vector2 `json:"tilesize"` + TextureNames map[int]string `json:"textures"` + Textures map[int]rl.Texture2D `json:"-"` + Tiles [][]Tile `json:"tiles"` + Camera rl.Camera2D `json:"-"` } func (base *World) IsValid() error { |
