package components import ( "encoding/json" "fmt" coreobjects "github.com/DegustatorPonos/RuinesOfRafdolon/CoreObjects" settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings" rl "github.com/gen2brain/raylib-go/raylib" ) var Resources ResourceManager type ResourceManager struct { LoadedPackages map[string]*settings.AppVersion Textures TextrueManager objects map[string]*coreobjects.DynamicObject Worlds map[string]*World } func InitManager() { Resources = ResourceManager{ LoadedPackages: make(map[string]*settings.AppVersion), Worlds: make(map[string]*World), objects: make(map[string]*coreobjects.DynamicObject), Textures: TextrueManager{ Textures: make([]*rl.Texture2D, 0), NameToId: make(map[string]uint64), }, } } func (base *ResourceManager) RegisterObject(PackageName string, obejctName string, new *coreobjects.DynamicObject) error { var displayName = fmt.Sprintf("%s/%s", PackageName, obejctName) if _, exists := base.objects[displayName]; exists { return fmt.Errorf("Failed to register the obejct: another obejct with that name already exists") } base.objects[displayName] = new return nil } func (base *ResourceManager) GetObject(name string) (*coreobjects.DynamicObject, error) { var obj, exists = base.objects[name] if !exists { return nil, fmt.Errorf("An object '%s' was not found", name) } return obj, nil } func (base *ResourceManager) String() string { var outp, jsonErr = json.Marshal(base) if jsonErr != nil { return fmt.Sprintf("Failed to parse settings: %s", jsonErr.Error()) } return string(outp) }