package main import ( "encoding/json" "fmt" "log" "os" components "github.com/DegustatorPonos/RuinesOfRafdolon/Components" coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" dynamic "github.com/DegustatorPonos/RuinesOfRafdolon/Dynamic" descriptors "github.com/DegustatorPonos/RuinesOfRafdolon/Dynamic/Descriptors" render "github.com/DegustatorPonos/RuinesOfRafdolon/Render" settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings" ui "github.com/DegustatorPonos/RuinesOfRafdolon/UI" ) const CorePackageName string = "core" func main() { settings.ReadSettings() components.InitManager() dynamic.ReadPackages() // The core package contains the main menu and necessary logic. // It should be loaded for the game to boot if (!dynamic.Manager.IsPackageAvaliable(CorePackageName)) { panic("The core package was not loaded") } render.InitWindow() defer render.DeinitWindow() // TEMPORARY SECTION // for _, v := range dynamic.Manager.AvaliablePackages { // log.Printf("%s: %s", k, &v) //components.Resources.LoadedPackages[v.Description.Name] = v.Description.Version //v.LoadTextures() //v.LoadObjects() //v.LoadWorlds() //v.LoadMenus() //} var coreLoadErr = dynamic.Manager.LoadPackage(CorePackageName) if coreLoadErr != nil { panic(fmt.Sprintf("Failed to load core package: %s", coreLoadErr.Error())) } // _ = dynamic.Manager.LoadPackage("testPackage") log.Printf("Resource manager: %s", &components.Resources) var manager = coreobjects.InitSceneManager() // render.StartLoop(manager, components.Resources.Worlds["MainWorld"]) render.StartLoop(manager, components.Resources.Menus["core/MainMenu"]) // render.StartLoop(manager, builtin.MainMenu()) } func test_desc() (ui.UIElement, error) { var file, fErr = os.ReadFile("MainMenu.json") if fErr != nil { return nil, fErr } var desc = descriptors.UIElementDescriptor{} if jsonErr := json.Unmarshal(file, &desc); jsonErr != nil { return nil, jsonErr } var parsed, parseErr = desc.Parse() if parseErr != nil { return nil, parseErr } return parsed, nil }