//============================================================================= // BMSP.js (BMSPベースプラグイン) //============================================================================= /*: * @plugindesc BMSPベースプラグインです。 * @author gentlawk * @website http://blueredzone.com * @url https://github.com/gentlawk/BMSP_MV * @license * Copyright(c) 2015 BlueRedZone, gentlawk * Released under the MIT license * https://github.com/gentlawk/BMSP_MV/blob/master/LICENSE * * @version 1.11 * * @help * 使用方法: * BMSPプラグインシリーズのベースとなるプラグインです。 * * ●追加位置 * 全てのBMSPプラグインシリーズより上に配置してください。 */ function BMSP() { throw new Error('This is a static class'); } /* * プラグインの導入チェック */ PluginManager._versions = {}; PluginManager.version = function (name) { if(!(name.toLowerCase() in this._versions)) return 0; return this._versions[name.toLowerCase()]; }; PluginManager.setVersion = function (name, version) { this._versions[name.toLowerCase()] = version; }; BMSP.checkPluginName = function (name) { return PluginManager._scripts.indexOf(name) >= 0; }; BMSP.checkPluginVersion = function (name, version) { var now = PluginManager.version(name); return now >= version; }; BMSP.includedPlugin = function (name, version) { if (!this.checkPluginName(name)) return false; if (version === undefined) return true; return this.checkPluginVersion(name, version); }; BMSP.requirePlugin = function (name, version) { if (!this.checkPluginName(name)) { throw new Error('no such plugin: ' + name); } if (version === undefined) return; if (!this.checkPluginVersion(name, version)){ var now = PluginManager.version(name); throw new Error('need version ' + version + ' and over: ' + name + ' version ' + now); } }; /* * プラグインバージョン */ PluginManager.setVersion('BMSP', 1.11); /* * オブジェクトのユニークID管理 */ BMSP.getUniqueId = function () { return new Date().getTime() + Math.floor(Math.random() * 1000); }; BMSP.getObjectId = function (object) { if (!object){ return 0; } if (!('_bmsp_object_id' in object)) { object._bmsp_object_id = BMSP.getUniqueId(); } return object._bmsp_object_id; }; /* * Ruby(他Perl等)ライクな剰余演算 */ BMSP.rubyLikeMod = function (a, b) { return (a%b+b)%b; }; /* * シャローコピー */ BMSP.shallowCopy = function (object) { if (object instanceof Array) { return [].concat(object); } var copy = {}; for (var prop in object) { copy[prop] = object[prop]; } return copy; };