// (C)2015 Triacontane // 2.7.0 2022/09/12 ウィンドウ消去時、決定動作によってウィンドウを再表示できる設定を追加(by unaunagiさま) // 1.3.1 2017/07/03 古いYEP_MessageCore.jsのネーム表示ウィンドウが再表示できない不具合の修正(by DarkPlasmaさま) /*: * @plugindesc * @author triacontane * * @param triggerButton * @desc Trigger buttons * (light_click or shift or control) * @default ["light_click"] * @type combo[] * @option light_click * @option shift * @option control * @option tab * @option pageup * @option pagedown * @option debug * * @param triggerSwitch * @desc The window will be erased in conjunction with the specified switch. * @default 0 * @type switch * * @param linkPictureNumbers * @desc Picture number of window show/hide * @default [] * @type number[] * * @param linkShowPictureNumbers * @desc Picture number of window show/hide * @default [] * @type number[] * * @param disableLinkSwitchId * @desc 指定した番号のスイッチがONのとき、ピクチャの連動が無効になります。 * @default 0 * @type switch * * @param disableSwitchId * @desc 指定した番号のスイッチがONのとき、プラグインの機能が無効になります。 * @default 0 * @type switch * * @param disableInBattle * @desc trueのとき、戦闘中にプラグインの機能を無効にします。 * @default false * @type boolean * * @param disableInChoice * @desc 選択肢の表示中はウィンドウを非表示にできなくなります。 * @default true * @type boolean * * @param restoreByDecision * @desc メッセージ消去時、決定動作により非表示になっていたメッセージウィンドウを再表示できます。 * @default false * @type boolean * * @help */ /*:ja * @plugindesc * @author トリアコンタン * * @param triggerButton * @text ボタン名称 * @desc ウィンドウを消去するボタンです。(複数登録可能) プラグイン等で入力可能なボタンを追加した場合は直接入力 * @default ["右クリック"] * @type combo[] * @option 右クリック * @option shift * @option control * @option tab * @option pageup * @option pagedown * @option debug * * @param triggerSwitch * @text トリガースイッチ * @desc 指定したスイッチに連動させてウィンドウを消去します。並列処理などを使ってON/OFFを適切に管理してください。 * @default 0 * @type switch * * @param linkPictureNumbers * @text 連動ピクチャ番号 * @desc ウィンドウ消去時に連動して不透明度を[0]にするピクチャの番号です。 * @default [] * @type number[] * * @param linkShowPictureNumbers * @text 連動表示ピクチャ番号 * @desc ウィンドウ消去時に連動して不透明度を[255]にするピクチャの番号です。 * @default [] * @type number[] * * @param disableLinkSwitchId * @text 連動ピクチャ無効スイッチ * @desc 指定した番号のスイッチがONのとき、ピクチャの連動が無効になります。 * @default 0 * @type switch * * @param disableSwitchId * @text 無効スイッチ * @desc 指定した番号のスイッチがONのとき、プラグイン全体の機能が無効になります。 * @default 0 * @type switch * * @param disableInBattle * @text 戦闘中無効化 * @desc trueのとき、戦闘中にプラグインの機能を無効にします。 * @default false * @type boolean * * @param disableInChoice * @text 選択肢表示中は無効 * @desc 選択肢の表示中はウィンドウを非表示にできなくなります。 * @default true * @type boolean * * @param restoreByDecision * @text 決定動作で復帰 * @desc メッセージ消去時、決定動作により非表示になっていたメッセージウィンドウを再表示できます。 * @default false * @type boolean * * @help */ (function() { 'use strict'; /** * Create plugin parameter. param[paramName] ex. param.commandPrefix * @param pluginName plugin name(EncounterSwitchConditions) * @returns {Object} Created parameter */ var createPluginParameter = function(pluginName) { var paramReplacer = function(key, value) { if (value === 'null') { return value; } if (value[0] === '"' && value[value.length - 1] === '"') { return value; } try { return JSON.parse(value); } catch (e) { return value; } }; var parameter = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer)); PluginManager.setParameters(pluginName, parameter); return parameter; }; var param = createPluginParameter('JsScript14Set'); Game_Picture.prototype.linkWithMessageWindow = function(opacity) { this._opacity = opacity; this._targetOpacity = opacity; }; var _Window_Message_updateWait = Window_Message.prototype.updateWait; Window_Message.prototype.updateWait = function() { if (!this.isClosed() && this.isTriggeredHidden() && this.isEnableInChoice()) { if (!this.isHidden()) { this.hideAllWindow(); } else { this.showAllWindow(); } } else if (this.isHidden() && this.isTriggered() && param.restoreByDecision) { this.showAllWindow(); Input.update(); TouchInput.update(); } var wait = _Window_Message_updateWait.apply(this, arguments); if (this.isHidden() && this.visible) { this.hideAllWindow(); } return wait; }; Window_Message.prototype.isEnableInChoice = function() { return !(param.disableInChoice && $gameMessage.isChoice()); }; Window_Message.prototype.hideAllWindow = function() { this.hide(); this.subWindows().forEach(function(subWindow) { this.hideSubWindow(subWindow); }.bind(this)); if (this.hasNameWindow() && !this.nameWindowIsSubWindow()) this.hideSubWindow(this._nameWindow); this._originalPictureOpacities = {}; this.linkPictures(0, param.linkPictureNumbers); this.linkPictures(255, param.linkShowPictureNumbers); this._hideByMessageWindowHidden = true; MovePict(PN_FukiWin, true, true, 1, 0, true, true); }; Window_Message.prototype.showAllWindow = function() { this.show(); this.subWindows().forEach(function(subWindow) { this.showSubWindow(subWindow); }.bind(this)); if (this.hasNameWindow() && !this.nameWindowIsSubWindow()) this.showSubWindow(this._nameWindow); this.linkPictures(null, param.linkShowPictureNumbers); this.linkPictures(null, param.linkPictureNumbers); this._hideByMessageWindowHidden = false; MovePict(PN_FukiWin, true, true, 1, 255, true, true); }; Window_Message.prototype.isHidden = function() { return this._hideByMessageWindowHidden; }; Window_Message.prototype.linkPictures = function(opacity, pictureNumbers) { if (!pictureNumbers || $gameSwitches.value(param.disableLinkSwitchId)) { return; } pictureNumbers.forEach(function(pictureId) { this.linkPicture(opacity, pictureId); }, this); }; Window_Message.prototype.linkPicture = function(opacity, pictureId) { var picture = $gameScreen.picture(pictureId); if (!picture) { return; } if (opacity === null) { if (!this._originalPictureOpacities.hasOwnProperty(pictureId)) { return; } opacity = this._originalPictureOpacities[pictureId]; } else { this._originalPictureOpacities[pictureId] = picture.opacity(); } picture.linkWithMessageWindow(opacity); }; Window_Message.prototype.hideSubWindow = function(subWindow) { subWindow.prevVisible = subWindow.visible; subWindow.hide(); }; Window_Message.prototype.showSubWindow = function(subWindow) { if (subWindow.prevVisible) subWindow.show(); subWindow.prevVisible = undefined; }; Window_Message.prototype.hasNameWindow = function() { return this._nameWindow && typeof Window_NameBox !== 'undefined'; }; Window_Message.prototype.nameWindowIsSubWindow = function() { return this.subWindows().filter(function(subWindow) { return subWindow === this._nameWindow; }, this).length > 0; }; Window_Message.prototype.disableWindowHidden = function () { return (param.disableSwitchId > 0 && $gameSwitches.value(param.disableSwitchId)) || (param.disableInBattle && $gameParty.inBattle()); }; Window_Message.prototype.isTriggeredHidden = function() { if ($gameTemp.isMessageBacklogOpened()) { return false; } if (this.disableWindowHidden()) { return false; } if (param.triggerSwitch > 0 && this.isTriggeredHiddenSwitch()) { return true; } if (Input.isTriggered('pageup')) { return true; } return param.triggerButton.some(function(button) { switch (button) { case '': case '右クリック': case 'light_click': return TouchInput.isCancelled(); case 'ok': return false; default: return Input.isTriggered(button); } }); }; Window_Message.prototype.isTriggeredHiddenSwitch = function() { var triggerSwitch = $gameSwitches.value(param.triggerSwitch); if (triggerSwitch && !this.isHidden()) { return true; } if (!triggerSwitch && this.isHidden()) { return true; } return false; }; var _Window_Message_updateInput = Window_Message.prototype.updateInput; Window_Message.prototype.updateInput = function() { if (this.isHidden()) return true; return _Window_Message_updateInput.apply(this, arguments); }; var _Window_ChoiceList_update = Window_ChoiceList.prototype.update; Window_ChoiceList.prototype.update = function() { if (!this.visible) return; _Window_ChoiceList_update.apply(this, arguments); }; var _Window_NumberInput_update = Window_NumberInput.prototype.update; Window_NumberInput.prototype.update = function() { if (!this.visible) return; _Window_NumberInput_update.apply(this, arguments); }; var _Window_EventItem_update = Window_EventItem.prototype.update; Window_EventItem.prototype.update = function() { if (!this.visible) return; _Window_EventItem_update.apply(this, arguments); }; })();