package descriptors import ( components "github.com/DegustatorPonos/RuinesOfRafdolon/Components" rl "github.com/gen2brain/raylib-go/raylib" ) const WorldsDirName string = "Worlds" type WorldDescriptor struct { Name string // Deprecated TileSize rl.Vector2 `json:"-"` FloorMap []FloorPiece DefaultStartingPosition rl.Vector2 } func (base *WorldDescriptor) IsValid() error { return nil } // Maps the world descriptor by IDs func MapWorldDescriptors(data []*WorldDescriptor) map[string]*WorldDescriptor { var outp = make(map[string]*WorldDescriptor) for _, v := range data { outp[v.Name] = v } return outp } type FloorPiece struct { Position rl.Vector2 Texture string } // Transforms the world descriptor into the game world func (base WorldDescriptor) Parse() components.World { var outp = components.World { Name: base.Name, Floor: make([]components.FloorTile, 0, len(base.FloorMap)), Player: &components.Player{ Texture: *components.Resources.Textures.Textures[3], // TODO: Change Position: base.DefaultStartingPosition, }, Camera: &rl.Camera2D{ Offset: rl.Vector2 {X: 0, Y: 0}, Target: rl.Vector2 {X: 0, Y: 0}, Rotation: 0, Zoom: 1, }, } for _, v := range base.FloorMap { var texture, textureErr = components.Resources.Textures.GetTextureByName(v.Texture) if textureErr != nil { continue } var new = components.FloorTile { Position: v.Position, Texture: texture, } outp.Floor = append(outp.Floor, new) } return outp }