//============================================================================= // NovelMessage.js //============================================================================= /*: * @plugindesc Provides the full screen type message window. * @author Yoji Ojima, Sasuke KANNAZUKI * * @param Switch ID * @desc The ID of the switch to determine novel mode. * @default 11 * * @help * Use control character '\F' to page break in novel mode. * * This plugin does not provide plugin commands. */ /*:ja * @plugindesc 全画面型のメッセージウィンドウです。 * @author Yoji Ojima, 神無月サスケ * * @param Switch ID * @desc ノベルモードにするためのスイッチのIDです。 * @default 11 * * @help * ノベルモードにて改ページをするには、制御文字「\F」を使用してください。 * * このプラグインには、プラグインコマンドはありません。 */ (function() { var parameters = PluginManager.parameters('NovelMessage'); var switchId = Number(parameters['Switch ID'] || 11); function isNovelMode() { return $gameSwitches.value(switchId); }; var _Window_Message_initMembers = Window_Message.prototype.initMembers; Window_Message.prototype.initMembers = function() { _Window_Message_initMembers.call(this); this._novelLineY = 0; this._novelNewPage = true; }; var _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement; Window_Message.prototype.updatePlacement = function() { if (!isNovelMode()) { this.width = this.windowWidth(); this.height = this.windowHeight(); this.x = (Graphics.boxWidth - this.width) / 2; } _Window_Message_updatePlacement.call(this); if (isNovelMode()) { this.move(0, 0, Graphics.boxWidth, Graphics.boxHeight); } if (this.contents.height !== this.contentsHeight()) { this.contents.resize(this.contentsWidth(), this.contentsHeight()); } }; var _Window_Message_updateBackground = Window_Message.prototype.updateBackground; Window_Message.prototype.updateBackground = function() { _Window_Message_updateBackground.call(this); if (isNovelMode()) { this.setBackgroundType(2); } }; var _Window_Message_onEndOfText = Window_Message.prototype.onEndOfText; Window_Message.prototype.onEndOfText = function() { if (isNovelMode()) { this.processNewLine(this._textState); } _Window_Message_onEndOfText.call(this); }; var _Window_Message_startMessage = Window_Message.prototype.startMessage; Window_Message.prototype.startMessage = function() { _Window_Message_startMessage.call(this); if (isNovelMode()) { this._textState.y = this._novelLineY; } }; var _Window_Message_newPage = Window_Message.prototype.newPage; Window_Message.prototype.newPage = function(textState) { if (!isNovelMode() || this._novelNewPage) { _Window_Message_newPage.call(this, textState); this._novelLineY = 0; this._novelNewPage = false; } if (isNovelMode()) { textState.x = this.newLineX(); textState.left = this.newLineX(); textState.height = this.calcTextHeight(textState, false); this._lineShowFast = false; this._pauseSkip = false; if (this.needsNewPage(textState)) { textState.y = this.contents.height; this._novelNewPage = true; this._textState.index--; this.startPause(); } } }; var _Window_Message_processNewLine = Window_Message.prototype.processNewLine; Window_Message.prototype.processNewLine = function(textState) { _Window_Message_processNewLine.call(this, textState); if (isNovelMode()) { this._novelLineY = this._textState.y; } }; var _Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter; Window_Message.prototype.processEscapeCharacter = function(code, textState) { if (isNovelMode() && code === 'F') { textState.y = this.contents.height; this._novelNewPage = true; return; } _Window_Message_processEscapeCharacter.call(this, code, textState); }; var _Window_ChoiceList_updatePlacement = Window_ChoiceList.prototype.updatePlacement; Window_ChoiceList.prototype.updatePlacement = function() { _Window_ChoiceList_updatePlacement.call(this); if (isNovelMode()) { this.y = Graphics.boxHeight - this.height - 8; } }; var _Window_NumberInput_updatePlacement = Window_NumberInput.prototype.updatePlacement; Window_NumberInput.prototype.updatePlacement = function() { _Window_NumberInput_updatePlacement.call(this); if (isNovelMode()) { this.y = Graphics.boxHeight - this.height - 8; } }; var _Window_NumberInput_buttonY = Window_NumberInput.prototype.buttonY; Window_NumberInput.prototype.buttonY = function() { if (isNovelMode()) { return 0 - this._buttons[0].height - 8; } else { return _Window_NumberInput_buttonY.call(); } }; })();