//============================================================================= // TRP_ParticleMZ_ExOption.js //============================================================================= /*: * @target MZ * @plugindesc 負荷調整用のオプション追加 * @author Thirop * @orderAfter TRP_ParticleMZ * @help * 【更新履歴】 * 1.13 2022/4/18 設定のparse方式変更 * 1.12 2021/10/31 設定のparse方式変更 * 1.07 2021/6/22 ゲーム起動時の不具合修正 * 1.00 2021/4/10 初版 * * @param name * @text オプション名 * @desc オプションに表示する名称 * @type string * @default パーティクル演出量 * * @param index * @text 表示順 * @desc オプションの上から何番目に表示するか。(正しく反映するにはプラグインをなるべく下に配置) * @type number * @default 999 * * @param levels * @text 負荷設定リスト * @desc 各段階の負荷設定 * @type struct[] * @default ["{\"name\":\"最高\",\"value\":\"0\"}","{\"name\":\"高\",\"value\":\"2000\"}","{\"name\":\"中\",\"value\":\"1000\"}","{\"name\":\"低\",\"value\":\"300\"}","{\"name\":\"最低\",\"value\":\"100\"}"] * * */ //============================================================================= /*~struct~OptionLevel: * @param name * @text 負荷表示名 * @desc 選択時のオプション表示名 * @default 最高 * * @param value * @text 発生キャパシティ * @desc パーティクル発生能力の値。(maxコマンドと同じ仕様。0で制限無し) * @default 0 * @type number * @min 0 */ //============================================================================= //PRAGMA: englishHeader //PRAGMA_END: englishHeader (function(){ var parameters = PluginManager.parameters('TRP_ParticleMZ_ExOption'); var commandIndex = Number(parameters.index); var commandName = parameters.name; var commandLevels; try{ if(parameters.levels){ commandLevels = parameters.levels.replace(/(.)\"/g,(p,p1)=>{ if(p1==='\\')return '"' else return p1; }); if(commandLevels[commandLevels.length-1]!=']'){ commandLevels = commandLevels.substring(0,commandLevels.length-1); } commandLevels = JSON.parse(commandLevels); } }catch(e){} commandLevels = commandLevels || [{"name":"最高","value":"0"},{"name":"高","value":"2000"},{"name":"中","value":"1000"},{"name":"低","value":"300"},{"name":"最低","value":"100"}];; var DEFAULT_LEVEL = {name:'無制限',value:0}; var TARGET_SYMBOL = 'trpParticleNumLevel'; //============================================================================= // ConfigManager //============================================================================= ConfigManager.trpParticleNumLevel = 0; var _ConfigManager_load = ConfigManager.load; ConfigManager.load = function() { _ConfigManager_load.call(this); this.applyTrpParticleNum(); }; var _ConfigManager_save = ConfigManager.save; ConfigManager.save = function() { _ConfigManager_save.call(this); this.applyTrpParticleNum(); }; var _ConfigManager_makeData = ConfigManager.makeData; ConfigManager.makeData = function() { var config = _ConfigManager_makeData.call(this); config.trpParticleNumLevel = this.trpParticleNumLevel||0; return config; }; var _ConfigManager_applyData = ConfigManager.applyData; ConfigManager.applyData = function(config) { _ConfigManager_applyData.call(this,config); this.trpParticleNumLevel = Number(config.trpParticleNumLevel)||0; }; ConfigManager.applyTrpParticleNum = function(){ if($gameScreen && $gameScreen._particle){ $gameScreen._particle.resetMaxParticlesIfNotCustomValueSet(); } }; ConfigManager.trpParticleNum = function(){ var level = commandLevels[this.trpParticleNumLevel]||commandLevels[0]||DEFAULT_LEVEL; return level.value; }; //============================================================================= // Game_Particle //============================================================================= Game_Particle.prototype.resetMaxParticlesIfNotCustomValueSet = function(){ if(this._customMaxValueSet)return; this._maxParticles = ConfigManager.trpParticleNum(); }; Game_Particle.prototype.resetMaxParticles = function(){ this._maxParticles = ConfigManager.trpParticleNum(); this._customMaxValueSet = false; }; Object.defineProperty(Game_Particle.prototype, 'maxParticles', { get: function() { return this._maxParticles||0; },set: function(value){ this._maxParticles = value||0; this._customMaxValueSet = true; }, configurable: true }); //============================================================================= // Window_Options //============================================================================= var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList; Window_Options.prototype.makeCommandList = function() { _Window_Options_makeCommandList.call(this); this.addCommand(commandName, TARGET_SYMBOL); var command = this._list.pop(); var index = commandIndex.clamp(0,this._list.length); this._list.splice(index,0,command); }; var _Window_Options_statusText = Window_Options.prototype.statusText; Window_Options.prototype.statusText = function(index) { var symbol = this.commandSymbol(index); if(symbol === TARGET_SYMBOL){ var value = this.getConfigValue(symbol); return this.trpParticleNumText(value); }else{ return _Window_Options_statusText.call(this,index); } }; Window_Options.prototype.trpParticleNumText = function(value){ var level = commandLevels[value]; if(!level)level = commandLevels[0]||DEFAULT_LEVEL; return level.name; }; var _Window_Options_processOk = Window_Options.prototype.processOk; Window_Options.prototype.processOk = function() { var index = this.index(); var symbol = this.commandSymbol(index); if (symbol === TARGET_SYMBOL) { this.changeTrpParticleNumValue(symbol,-1); } else { _Window_Options_processOk.call(this); } }; Window_Options.prototype.changeTrpParticleNumValue = function(symbol, delta){ var value = this.getConfigValue(symbol); value += delta; value = value.clamp(0,commandLevels.length-1); this.setConfigValue(symbol, value); this.redrawItem(this.findSymbol(symbol)); SoundManager.playCursor(); }; var _Window_Options_cursorRight = Window_Options.prototype.cursorRight; Window_Options.prototype.cursorRight = function(wrap) { var index = this.index(); var symbol = this.commandSymbol(index); if(symbol === TARGET_SYMBOL){ this.changeTrpParticleNumValue(symbol,-1); }else{ _Window_Options_cursorRight.call(this,wrap); } }; var _Window_Options_cursorLeft = Window_Options.prototype.cursorLeft; Window_Options.prototype.cursorLeft = function(wrap) { var index = this.index(); var symbol = this.commandSymbol(index); if(symbol === TARGET_SYMBOL){ this.changeTrpParticleNumValue(symbol,1); }else{ _Window_Options_cursorLeft.call(this); } }; })();