UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 3.35 kB
var s,e;s=void 0,e=function(){var s=function(s){if("object"!=typeof s||null===s)return s;if(Array.isArray(s))s.length=0;else for(var e in s)delete s[e];return s};const e=Phaser.Data.DataManager,i=Phaser.Utils.Objects.GetValue,t=Phaser.Events.EventEmitter;class r extends e{constructor(s,e,i){var r=void 0===e;if(r&&(e=new t),super(s,e),r){var n=s.events?s.events:s;n&&n.once("destroy",this.destroy,this)}this._recordEnable=!0,this.resetFromJSON(i),this.events.on("changedata",this.onValueChange,this).on("setdata",(function(s,e,i){this.onValueChange(s,e,i,null)}),this).on("removedata",(function(s,e,i){this.onValueChange(s,e,null,i)}),this)}resetFromJSON(s){this._version=i(s,"version",0),this._versionAlias=i(s,"versionAlias",""),this._repository=i(s,"repository",[]),this._versionAliases=i(s,"versionAliases",{});var e=i(s,"changeList",{}),t=i(s,"data",void 0);if(t)this._recordEnable=!1,this.set(t),this._recordEnable=!0;else{var r=""!==this._versionAlias?this._versionAlias:this._version;for(var n in this._version=0,this.restore(r),this._recordEnable=!1,e)this.setValue(n,e[n][0]);this._recordEnable=!0}this._changeList=e}toJSON(s){void 0===s&&(s=!1);var e={version:this._version,versionAlias:this._versionAlias,changeList:this._changeList,repository:this._repository,versionAliases:this._versionAliases};return s&&(e.data=this.list),e}get version(){return this._version}set version(e){var i;if("string"==typeof e&&(i=e,e=this._versionAliases[e]),"number"==typeof e){if(this._versionAlias=i||"",0===e)return this._recordEnable=!1,super.reset(),this._version=0,s(this._changeList),void(this._recordEnable=!0);e=Math.min(e,this._repository.length);var t,r={};for(var n in this._changeList)r[n]=this._changeList[n][1],delete this._changeList[n];if(this._version===e);else if(this._version<e)for(var o=this._version;o<e;o++)for(var n in t=this._repository[o])r[n]=t[n][0];else for(o=this._version-1;o>=e;o--)for(var n in t=this._repository[o])r[n]=t[n][1];for(var n in this._version=e,this._recordEnable=!1,r)null===(e=r[n])?this.removeValue(n):this.setValue(n,e);this._recordEnable=!0}else this._versionAlias=""}get versionAlias(){return this._versionAlias}get lastVersion(){return this._repository.length}get versionAliases(){var s=[];for(var e in this._versionAliases)s.push(e);return s}commit(s){for(var e in this._repository.length=this._version,this._versionAliases)this._versionAliases[e]>this._version&&delete this._versionAliases[e];return this._repository.push(this._changeList),this._changeList={},this._version++,"string"==typeof s&&(this._versionAlias=s,this._versionAliases[s]=this._version),this}restore(s,e){return void 0===s&&(s=""!==this._versionAlias?this._versionAlias:this._version),void 0===e&&(e=!1),e&&(this.version=0),this.version=s,this}reset(){return this.restore(0),this._repository.length=0,s(this._versionAliases),this}onValueChange(s,e,i,t){this._recordEnable&&(this._changeList.hasOwnProperty(e)?this._changeList[e][0]=i:this._changeList[e]=[i,t])}}class n extends Phaser.Plugins.BasePlugin{constructor(s){super(s)}start(){this.game.events.on("destroy",this.destroy,this)}add(s,e,i){return new r(s,e,i)}}return n},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(s="undefined"!=typeof globalThis?globalThis:s||self).rexrestorabledataplugin=e();