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 = ResourceManager{ LoadedPackages: make(map[string]*settings.AppVersion), objects: make(map[string]*coreobjects.DynamicObject), Scenes: make(map[string]coreobjects.Scene), Textures: TextrueManager{ Textures: make([]*rl.Texture2D, 0), NameToId: make(map[string]uint64), }, } type ResourceManager struct { LoadedPackages map[string]*settings.AppVersion Textures TextrueManager objects map[string]*coreobjects.DynamicObject Scenes map[string]coreobjects.Scene } 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") } new.PrototypeName = displayName 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 resource manager %s", jsonErr.Error()) } return string(outp) }