var t = require; var e = module; var i = exports; Object.defineProperty(i, "__esModule", {value: !0}), (i.ResRecycle = void 0); const o = t("App"), a = "_global_tag_"; class s { constructor() { (this.texturesToClean = {}), (this.assets = {}), (this.urlRef = {}), (this.urlsToClean = {}), (this._isAutoRelease = !1); } addUrl(t, e = a) { this.urlRef[t] ? this.urlRef[t]++ : (this.urlRef[t] = 1), this.urlsToClean[e] ? this.urlsToClean[e].includes(t) || this.urlsToClean[e].push(t) : (this.urlsToClean[e] = [t]); } decRefByUrl(t, e) { var i; !this.urlsToClean[e] || (-1 < (i = this.urlsToClean[e].indexOf(t)) && (this.urlsToClean[e].splice(i, 1), this.urlRef[t]--, this.urlRef[t] <= 0 && (delete this.urlRef[t], o.default.ResManager.releaseAsset(t, cc.SpriteFrame)))); } clearUrlByTag(t = a) { var e = this.urlsToClean[t]; if (e) { delete this.urlsToClean[t]; var i = e.length; for (let t = 0; t < i; t++) { var s = e[t]; this.urlRef[s]--, this.urlRef[s] <= 0 && o.default.ResManager.releaseAsset(s, cc.SpriteFrame); } } } addRef(t) { this.assets[t._uuid] ? this.assets[t._uuid].refCount++ : (t.addRef(), (this.assets[t._uuid] = {asset: t, refCount: 1})); } clearAssets() { for (const t in this.assets) this.assets[t].refCount <= 0 && (this.assets[t].asset.decRef(), delete this.assets[t]); } decRef(t) { this.assets[t._uuid] && this.assets[t._uuid].refCount--; } startAutoRelease() { this.clearAssets(), this._isAutoRelease || o.default.TimerManager.doTimer(3e4, 0, this.clearAssets, this); } static getInstance() { let t = s.__instance; return (t = t || (s.__instance = new s())), t; } destroy() { this.cleanupAll(), (s.__instance = null); } addTexture(t, e = a) { if (t) { const i = (this.texturesToClean[e] = this.texturesToClean[e] || {}), s = String(t._uuid); (i[s] = t), cc.log(1, "add", e, t.loaded, s.substring(0, 8)); } } addSpriteFrame(t, e) { t && t.isValid && (t = t.getTexture()) && this.addTexture(t, e); } addSprite(t, e) { t.spriteFrame && this.addSpriteFrame(t.spriteFrame, e); } addNode(t, e) { if (t) { const i = t.getComponent(cc.Sprite); if (i && i.isValid) { const t = i.spriteFrame; t && t.isValid && ((i.spriteFrame = null), (i.spriteFrame = t), this.addSpriteFrame(t, e)); } } } removeTexture(t, e = a) { if (t && this.texturesToClean) { const i = this.texturesToClean[e]; i && delete i[t._uuid]; } } removeSpriteFrame(t, e) { t && t.isValid && (t = t.getTexture()) && this.removeTexture(t, e); } removeSprite(t, e) { t.spriteFrame && this.removeSpriteFrame(t.spriteFrame, e); } removeNode(t, e) { if (t) { t = t.getComponent(cc.Sprite); if (t && t.isValid) { const i = t.spriteFrame; i && i.isValid && this.removeSpriteFrame(i, e); } } } cleanup(t = a) { if (this.texturesToClean) { var e = this.texturesToClean[t]; if (e) { for (const s in e) { var i = e[s]; i.loaded ? (cc.log(2, "clean", t, i.loaded, s.substring(0, 8)), this.cleanupImageCache(i)) : console.warn(3, "cleanup", t, i.loaded, s.substring(0, 8)); } delete this.texturesToClean[t]; } } } cleanupImageCache(t) { (t.loaded = !1), t._image && (t._cleanupImageCache(), (t._image = null)), t._texture && (t._texture.destroy(), (t._texture = null)); } cleanupAll() { if (this.texturesToClean) { for (const t in this.texturesToClean) this.cleanup(t); this.texturesToClean = null; } } } i.ResRecycle = s;