white-thirst/www/js/plugins/NovelMessage.js
2025-01-07 13:09:58 -06:00

157 lines
5.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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(this);
}
};
})();