dead-end-colosseum/www/js/plugins/JsScript11Set.js
2026-01-17 11:28:46 -06:00

1050 lines
39 KiB
JavaScript

// 一度に複数のメッセージウィンドウを表示するプラグイン(v2)
var Imported = Imported || {};
Imported.FTKR_EMW = true;
var FTKR = FTKR || {};
FTKR.EMW = FTKR.EMW || {};
/*:
* @plugindesc
* @author フトコロ
*
* @param --初期設定--
* @desc
*
* @param Create ExWindow Number
* @desc 拡張ウィンドウを生成する数を設定します。
* @default 1
*
* @param --シーン開始時--
* @desc
*
* @param Scene Start Terminate
* @desc シーン開始時にすべてのウィンドウIDを強制終了する。
* 1 - 有効にする、0 - 無効にする
* @default 1
*
* @param --イベント終了時--
* @desc
*
* @param Reset Window Id
* @desc イベント終了時にウィンドウIDをリセットする。
* 1 - 有効にする、0 - 無効にする
* @default 0
*
* @help
*/
FTKR.EMW.parameters = PluginManager.parameters('JsScript11Set');
FTKR.EMW.nameWindows = [];
FTKR.EMW.exwindowNum = Number(FTKR.EMW.parameters['Create ExWindow Number'] || 0);
FTKR.EMW.scene = {
startTerminate:Number(FTKR.EMW.parameters['Scene Start Terminate'] || 0),
};
FTKR.EMW.event = {
resetWindowId:Number(FTKR.EMW.parameters['Reset Window Id'] || 0),
};
var readObjectMeta = function(obj, metacodes) {
if (!obj) return false;
metacodes.some(function(metacode){
var metaReg = new RegExp('<' + metacode + ':[ ]*(.+)>', 'i');
return obj.note.match(metaReg);
});
return RegExp.$1 ? Number(RegExp.$1) : false;
};
var convertPositionX = function(text) {
switch(true){
case /左/.test(text):
case /left/i.test(text):
case Number(text) === 0:
return 0;
case /中/.test(text):
case /center/i.test(text):
case Number(text) === 1:
return 1;
case /右/.test(text):
case /right/i.test(text):
case Number(text) === 2:
return 2;
default:
return undefined;
}
};
var matchTextToRegs = function(test, regs) {
return regs.some( function(reg){
return test.match(reg);
});
};
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (!command.match(/EMW_(.+)/i)) return;
command = RegExp.$1;
if(!matchTextToRegs(command, [/メッセージウィンドウ(.+)/, /MessageWindow_(.+)/i])) return;
command = (RegExp.$1 + '').toUpperCase();
switch (command) {
case '指定':
case 'SET':
this.setMessageWindowId(args);
break;
case 'リセット':
case 'RESET':
this._windowId = 0;
break;
case '強制クローズ':
case '強制終了':
case 'CLOSE':
this.messageWindowTerminate(args);
break;
case '終了禁止':
case 'NOEND':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).prohibitClose();
break;
case '終了許可':
case 'CANCLOSE':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).permitClose();
break;
case 'サイズ設定':
case 'SETSIZE':
this.setMessageWindowSize(args);
break;
case '位置設定':
case 'SETPOSITION':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).setPositionX(args[1]);
break;
case '行動許可':
case 'CANMOVE':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).enabledCanMovePlayer(args[1]);
break;
case '行動禁止':
case 'NOTMOVE':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).disabledCanMovePlayer(args[1]);
break;
case 'テキスト更新':
case 'UPDATE_TEXT':
var windowId = Number(args[0] || 0);
if (windowId >= 0) $gameMessageEx.window(windowId).setFinishDisp();
break;
}
};
Game_Interpreter.prototype.setMessageWindowId = function(args) {
var windowId = Number(args[0] || 0);
if (windowId >= 0) {
this._windowId = windowId;
var width = 0, heightLine = 0;
for (var i = 1; i < args.length; i++) {
var arg = (args[i] + '').toUpperCase();
switch (arg) {
case 'テキスト更新':
case 'UPDATE_TEXT':
$gameMessageEx.window(windowId).setFinishDisp();
break;
case '終了禁止':
case 'NOEND':
$gameMessageEx.window(windowId).prohibitClose();
break;
case '終了許可':
case 'CANCLOSE':
$gameMessageEx.window(windowId).permitClose();
break;
case '行動許可':
case 'CANMOVE':
$gameMessageEx.window(windowId).enabledCanMovePlayer();
break;
case '行動禁止':
case 'NOTMOVE':
$gameMessageEx.window(windowId).disabledCanMovePlayer();
break;
case '幅':
case 'WIDTH':
i++;
width = Number(args[i]);
break;
case '行数':
case 'LINES':
i++;
heightLine = Number(args[i]);
break;
default:
if (convertPositionX(arg) !== undefined) {
$gameMessageEx.window(windowId).setPositionX(arg);
}
break;
}
}
if (width || heightLine) {
$gameMessageEx.window(windowId).setWindowSize(width, heightLine);
}
}
};
Game_Interpreter.prototype.messageWindowTerminate = function(args) {
var arg = (args[0] + '').toUpperCase();
switch (arg) {
case 'すべて':
case 'ALL':
$gameMessageEx.windows().forEach( function(message){
message.terminate();
});
break;
default:
var windowId = Number(args[0] || 0);
if (windowId >= 0) {
$gameMessageEx.window(windowId).terminate();
}
break;
}
};
Game_Interpreter.prototype.setMessageWindowSize = function(args) {
var windowId = Number(args[0] || 0);
if (windowId >= 0) {
var width = 0, heightLine = 0;
for (var i = 1; i < args.length; i++) {
var arg = (args[i] + '').toUpperCase();
switch (arg) {
case '幅':
case 'WIDTH':
i++;
width = Number(args[i]);
break;
case '行数':
case 'LINES':
i++;
heightLine = Number(args[i]);
break;
case 'リセット':
case 'RESET':
width = Graphics.boxWidth;
heightLine = 4;
continue;
}
}
$gameMessageEx.window(windowId).setWindowSize(width, heightLine);
}
};
FTKR.EMW.Game_Message_initialize = Game_Message.prototype.initialize;
Game_Message.prototype.initialize = function() {
FTKR.EMW.Game_Message_initialize.call(this);
this._permissionClose = true;
this._canMovePlayer = false;
this._terminate = false;
this._finishDisp = false;
};
FTKR.EMW.Game_Message_clear = Game_Message.prototype.clear;
Game_Message.prototype.clear = function() {
FTKR.EMW.Game_Message_clear.call(this);
this._lastText = false;
this._positionX = 0;
this._windowWidth = 0;
this._windowHeightLine = 0;
};
FTKR.EMW.Window_Message_initialize = Window_Message.prototype.initialize;
Window_Message.prototype.initialize = function() {
this._windowId = this._windowId || 0;
this._gameMessage = $gameMessageEx.window(this._windowId);
FTKR.EMW.Window_Message_initialize.call(this);
};
FTKR.EMW.Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter;
Window_Message.prototype.processEscapeCharacter = function(code, textState) {
switch (code) {
case 'EMP':
$gameMessageEx.window(this._windowId).enabledCanMovePlayer();
break;
case 'DMP':
$gameMessageEx.window(this._windowId).disabledCanMovePlayer();
break;
default:
FTKR.EMW.Window_Message_processEscapeCharacter.call(this, code, textState);
break;
}
};
Game_Message.prototype.canMovePlayer = function() {
return this._canMovePlayer;
};
Game_Message.prototype.enabledCanMovePlayer = function() {
this._canMovePlayer = true;
};
Game_Message.prototype.disabledCanMovePlayer = function() {
this._canMovePlayer = false;
};
Game_Message.prototype.isBusy = function() {
return $gameMessageEx.windows().some(function(message){
return message.isEmwBusy();
});
};
Game_Message.prototype.isEmwBusy = function() {
return this.canMovePlayer() ? false : this.isEmwEventBusy();
};
Game_Message.prototype.isEmwEventBusy = function() {
return this.isLastText() ? false : this.isBusyBase();
};
Game_Message.prototype.isBusyBase = function() {
return (this.hasText() || this.isChoice() ||
this.isNumberInput() || this.isItemChoice());
};
Window_Message.prototype.update = function() {
this.checkToNotClose();
Window_Base.prototype.update.call(this);
while (this.updateConditions()) {
if (this.updateWait()) {
return;
} else if (this.updateLoading()) {
return;
} else if (this.updateInput()) {
return;
} else if (this.updateMessage()) {
return;
} else if (this.canStart()) {
this.startMessage();
} else {
this.startInput();
return;
}
}
};
Window_Message.prototype.updateConditions = function() {
return !this.isOpening() && !this.isClosing() && !this._gameMessage.isLastText();
};
FTKR.EMW.Window_Message_updateWait = Window_Message.prototype.updateWait;
Window_Message.prototype.updateWait = function() {
if (this._gameMessage.isFinishDisp()) {
this.finishDisplay();
if (this._gameMessage.isTerminate()) {
this._gameMessage.resetTerminate();
}
return false;
}
return FTKR.EMW.Window_Message_updateWait.call(this);
};
Window_Message.prototype.finishDisplay = function() {
this._waitCount = 0;
if(this._textState) this._textState.index = this._textState.text.length;
this._pauseSkip = true;
this.pause = false;
this._gameMessage.resetFinishDisp();
};
FTKR.EMW.Window_Message_terminateMessage = Window_Message.prototype.terminateMessage;
Window_Message.prototype.terminateMessage = function() {
this._gameMessage.lastText();
if (this._gameMessage.canClose()) {
FTKR.EMW.Window_Message_terminateMessage.call(this);
}
};
Game_Message.prototype.isFinishDisp = function() {
return this._finishDisp;
};
Game_Message.prototype.setFinishDisp = function() {
this._finishDisp = true;
};
Game_Message.prototype.resetFinishDisp = function() {
this._finishDisp = false;
};
Game_Message.prototype.isTerminate = function() {
return this._terminate;
};
Game_Message.prototype.setTerminate = function() {
this._terminate = true;
};
Game_Message.prototype.resetTerminate = function() {
this._terminate = false;
};
Game_Message.prototype.terminate = function() {
if (!this.isBusyBase()) return;
this.permitClose();
this.lastText();
this.setFinishDisp();
this.setTerminate();
var message = this.windowMessageEx();
if (message) {
message.activate()
message.terminateMessage();
}
}
Game_Message.prototype.windowMessageEx = function() {
return this._window_MessageEx;
}
Game_Message.prototype.isLastText = function() {
return this._lastText;
};
Game_Message.prototype.firstText = function() {
this._lastText = false;
};
Game_Message.prototype.lastText = function() {
this._lastText = true;
};
Game_Message.prototype.canClose = function() {
return this._permissionClose;
};
Game_Message.prototype.permitClose = function() {
this._permissionClose = true;
};
Game_Message.prototype.prohibitClose = function() {
this._permissionClose = false;
};
Game_Message.prototype.clearText = function() {
this._lastText = false;
this._texts = [];
};
Game_Message.prototype.disp = function(text) {
this.clear();
this.add(text);
}
FTKR.EMW.Window_Message_updatePlacement = Window_Message.prototype.updatePlacement;
Window_Message.prototype.updatePlacement = function() {
if ($gameMessage.windowWidth()) {
this.width = $gameMessage.windowWidth();
}
if ($gameMessage.windowHeightLine()) {
this.height = this.fittingHeight($gameMessage.windowHeightLine());
}
FTKR.EMW.Window_Message_updatePlacement.call(this);
if ($gameMessage.windowPositionX()) {
this._positionX = $gameMessage.windowPositionX();
this.x = this._positionX * (Graphics.boxWidth - this.width) / 2;
}
};
Game_Message.prototype.setWindowSize = function(width, heightLine) {
this._windowWidth = width;
this._windowHeightLine = heightLine;
};
Game_Message.prototype.windowWidth = function() {
return this._windowWidth;
};
Game_Message.prototype.windowHeightLine = function() {
return this._windowHeightLine;
};
Game_Message.prototype.setPositionX = function(positionX) {
this._positionX = convertPositionX(positionX);
};
Game_Message.prototype.windowPositionX = function() {
return this._positionX;
};
FTKR.EMW.Game_Interpreter_initialize = Game_Interpreter.prototype.initialize;
Game_Interpreter.prototype.initialize = function(depth) {
FTKR.EMW.Game_Interpreter_initialize.call(this, depth);
this._windowId = 0;
};
Game_Interpreter.prototype.windowId = function() {
return this._windowId;
};
FTKR.EMW.Game_Interpreter_terminate = Game_Interpreter.prototype.terminate;
Game_Interpreter.prototype.terminate = function() {
FTKR.EMW.Game_Interpreter_terminate.call(this);
if (FTKR.EMW.event.resetWindowId) this._windowId = 0;
};
FTKR.EMW.Game_Interpreter_command101 = Game_Interpreter.prototype.command101;
Game_Interpreter.prototype.command101 = function() {
var windowId = this.windowId();
if (!windowId) {
return FTKR.EMW.Game_Interpreter_command101.call(this);
} else {
if (!$gameMessageEx.window(windowId).isEmwEventBusy()) {
$gameMessageEx.window(windowId).clearText();
$gameMessageEx.window(windowId).setFaceImage(this._params[0], this._params[1]);
$gameMessageEx.window(windowId).setBackground(this._params[2]);
$gameMessageEx.window(windowId).setPositionType(this._params[3]);
this.continueMessages(windowId);
switch (this.nextEventCode()) {
case 102:
this._index++;
this.setupChoices(this.currentCommand().parameters);
break;
case 103:
this._index++;
this.setupNumInput(this.currentCommand().parameters);
break;
case 104:
this._index++;
this.setupItemChoice(this.currentCommand().parameters);
break;
}
this._index++;
this.setWaitMode('message');
}
return false;
}
};
Game_Interpreter.prototype.continueMessages =function(windowId) {
if (Imported.YEP_MessageCore) {
while (this.isContinueMessageString()) {
this._index++;
if (this._list[this._index].code === 401) {
$gameMessageEx.window(windowId).addText(this.currentCommand().parameters[0]);
}
if ($gameMessageEx.window(windowId)._texts.length >= $gameSystem.messageRows()) break;
}
} else {
while (this.nextEventCode() === 401) {
this._index++;
$gameMessageEx.window(windowId).add(this.currentCommand().parameters[0]);
}
}
};
FTKR.EMW.Game_Interpreter_command102 = Game_Interpreter.prototype.command102;
Game_Interpreter.prototype.command102 = function() {
var windowId = this.windowId();
if (!windowId) {
return FTKR.EMW.Game_Interpreter_command102.call(this);
} else {
if (!$gameMessageEx.window(windowId).isEmwEventBusy()) {
this.setupChoices(this._params);
this._index++;
this.setWaitMode('message');
}
return false;
}
};
FTKR.EMW.Game_Interpreter_setupChoices = Game_Interpreter.prototype.setupChoices;
Game_Interpreter.prototype.setupChoices = function(params) {
var windowId = this.windowId();
if (!windowId) {
FTKR.EMW.Game_Interpreter_setupChoices.call(this, params);
} else {
var choices = params[0].clone();
var cancelType = params[1];
var defaultType = params.length > 2 ? params[2] : 0;
var positionType = params.length > 3 ? params[3] : 2;
var background = params.length > 4 ? params[4] : 0;
if (cancelType >= choices.length) {
cancelType = -2;
}
$gameMessageEx.window(windowId).setChoices(choices, defaultType, cancelType);
$gameMessageEx.window(windowId).setChoiceBackground(background);
$gameMessageEx.window(windowId).setChoicePositionType(positionType);
$gameMessageEx.window(windowId).setChoiceCallback(function(n) {
this._branch[this._indent] = n;
}.bind(this));
}
};
FTKR.EMW.Game_Interpreter_command103 = Game_Interpreter.prototype.command103;
Game_Interpreter.prototype.command103 = function() {
var windowId = this.windowId();
if (!windowId) {
return FTKR.EMW.Game_Interpreter_command103.call(this);
} else {
if (!$gameMessageEx.window(windowId).isEmwEventBusy()) {
this.setupNumInput(this._params);
this._index++;
this.setWaitMode('message');
}
return false;
}
};
FTKR.EMW.Game_Interpreter_setupNumInput = Game_Interpreter.prototype.setupNumInput;
Game_Interpreter.prototype.setupNumInput = function(params) {
var windowId = this.windowId();
if (!windowId) {
FTKR.EMW.Game_Interpreter_setupNumInput.call(this, params);
} else {
$gameMessageEx.window(windowId).setNumberInput(params[0], params[1]);
}
};
FTKR.EMW.Game_Interpreter_command104 = Game_Interpreter.prototype.command104;
Game_Interpreter.prototype.command104 = function() {
var windowId = this.windowId();
if (!windowId) {
return FTKR.EMW.Game_Interpreter_command104.call(this);
} else {
if (!$gameMessageEx.window(windowId).isEmwEventBusy()) {
this.setupItemChoice(this._params);
this._index++;
this.setWaitMode('message');
}
return false;
}
};
FTKR.EMW.Game_Interpreter_setupItemChoice = Game_Interpreter.prototype.setupItemChoice;
Game_Interpreter.prototype.setupItemChoice = function(params) {
var windowId = this.windowId();
if (!windowId) {
FTKR.EMW.Game_Interpreter_setupItemChoice.call(this, params);
} else {
$gameMessageEx.window(windowId).setItemChoice(params[0], params[1] || 2);
}
};
function Game_MessageEx() {
this.initialize.apply(this, arguments);
}
Game_MessageEx.prototype.initialize = function() {
this._data = [];
this._data[0] = $gameMessage;
};
Game_MessageEx.prototype.window = function(windowId) {
if (!this._data[windowId]) {
this._data[windowId] = new Game_Message();
}
return this._data[windowId];
};
Game_MessageEx.prototype.windows = function() {
return this._data;
};
function Window_MessageEx(windowId) {
this._windowId = windowId;
this.initialize.apply(this);
}
Window_MessageEx.prototype = Object.create(Window_Message.prototype);
Window_MessageEx.prototype.constructor = Window_MessageEx;
Window_MessageEx.prototype.createSubWindows = function() {
this._goldWindow = new Window_Gold(0, 0);
this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width;
this._goldWindow.openness = 0;
this._choiceWindow = new Window_ChoiceListEx(this, this._windowId);
this._numberWindow = new Window_NumberInputEx(this, this._windowId);
this._itemWindow = new Window_EventItemEx(this, this._windowId);
};
Window_MessageEx.prototype.canStart = function() {
return this._gameMessage.hasText() && !this._gameMessage.scrollMode();
};
Window_MessageEx.prototype.startMessage = function() {
this._textState = {};
this._textState.index = 0;
this._textState.text = this.convertEscapeCharacters(this._gameMessage.allText());
this.newPage(this._textState);
this.updatePlacement();
this.updateBackground();
this.open();
this.activate();
};
Window_MessageEx.prototype.updatePlacement = function() {
if (this._gameMessage.windowWidth()) {
this.width = this._gameMessage.windowWidth();
}
if (this._gameMessage.windowHeightLine()) {
this.height = this.fittingHeight(this._gameMessage.windowHeightLine());
}
this._positionType = this._gameMessage.positionType();
this.y = this._positionType * (Graphics.boxHeight - this.height) / 2;
this._goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - this._goldWindow.height;
var posiX = this._gameMessage.windowPositionX();
if (posiX) this.x = posiX * (Graphics.boxWidth - this.width) / 2;
};
Window_MessageEx.prototype.updateBackground = function() {
this._background = this._gameMessage.background();
this.setBackgroundType(this._background);
};
Window_MessageEx.prototype.terminateMessage = function() {
this._gameMessage.lastText();
if (this._gameMessage.canClose()) {
if (Imported.YEP_MessageCore) this._nameWindow.deactivate();
this.close();
this._goldWindow.close();
this._gameMessage.clear();
} else {
this.deactivate();
}
};
Window_MessageEx.prototype.startInput = function() {
if (this._gameMessage.isChoice()) {
this._choiceWindow.start();
return true;
} else if (this._gameMessage.isNumberInput()) {
this._numberWindow.start();
return true;
} else if (this._gameMessage.isItemChoice()) {
this._itemWindow.start();
return true;
} else {
return false;
}
};
Window_MessageEx.prototype.doesContinue = function() {
return (this._gameMessage.hasText() && !this._gameMessage.scrollMode() &&
!this.areSettingsChanged());
};
Window_MessageEx.prototype.areSettingsChanged = function() {
return (this._background !== this._gameMessage.background() ||
this._positionType !== this._gameMessage.positionType());
};
Window_MessageEx.prototype.loadMessageFace = function() {
this._faceBitmap = ImageManager.reserveFace(this._gameMessage.faceName());
};
Window_MessageEx.prototype.drawMessageFace = function() {
this.drawFace(this._gameMessage.faceName(), this._gameMessage.faceIndex(), 0, 0);
ImageManager.releaseReservation(this._imageReservationId);
};
Window_MessageEx.prototype.newLineX = function() {
return this._gameMessage.faceName() === '' ? 0 : 168;
};
function Window_ChoiceListEx() {
this.initialize.apply(this, arguments);
}
Window_ChoiceListEx.prototype = Object.create(Window_ChoiceList.prototype);
Window_ChoiceListEx.prototype.constructor = Window_ChoiceListEx;
Window_ChoiceListEx.prototype.initialize = function(messageWindow, windowId) {
this._windowId = windowId;
this._gameMessage = $gameMessageEx.window(this._windowId);
Window_ChoiceList.prototype.initialize.call(this, messageWindow);
};
Window_ChoiceListEx.prototype.selectDefault = function() {
this.select(this._gameMessage.choiceDefaultType());
};
Window_ChoiceListEx.prototype.updatePlacement = function() {
var positionType = this._gameMessage.choicePositionType();
var messageY = this._messageWindow.y;
this.width = this.windowWidth();
this.height = this.windowHeight();
switch (positionType) {
case 0:
this.x = 0;
break;
case 1:
this.x = (Graphics.boxWidth - this.width) / 2;
break;
case 2:
this.x = Graphics.boxWidth - this.width;
break;
}
if (messageY >= Graphics.boxHeight / 2) {
this.y = messageY - this.height;
} else {
this.y = messageY + this._messageWindow.height;
}
};
Window_ChoiceListEx.prototype.updateBackground = function() {
this._background = this._gameMessage.choiceBackground();
this.setBackgroundType(this._background);
};
Window_ChoiceListEx.prototype.numVisibleRows = function() {
var messageY = this._messageWindow.y;
var messageHeight = this._messageWindow.height;
var centerY = Graphics.boxHeight / 2;
var choices = this._gameMessage.choices();
var numLines = choices.length;
var maxLines = 8;
if (messageY < centerY && messageY + messageHeight > centerY) {
maxLines = 4;
}
if (numLines > maxLines) {
numLines = maxLines;
}
return numLines;
};
Window_ChoiceListEx.prototype.maxChoiceWidth = function() {
var maxWidth = 96;
var choices = this._gameMessage.choices();
for (var i = 0; i < choices.length; i++) {
var choiceWidth = this.textWidthEx(choices[i]) + this.textPadding() * 2;
if (maxWidth < choiceWidth) {
maxWidth = choiceWidth;
}
}
return maxWidth;
};
Window_ChoiceListEx.prototype.makeCommandList = function() {
var choices = this._gameMessage.choices();
for (var i = 0; i < choices.length; i++) {
this.addCommand(choices[i], 'choice');
}
};
Window_ChoiceListEx.prototype.isCancelEnabled = function() {
return this._gameMessage.choiceCancelType() !== -1;
};
Window_ChoiceListEx.prototype.callOkHandler = function() {
this._gameMessage.onChoice(this.index());
this._messageWindow.terminateMessage();
this.close();
};
Window_ChoiceListEx.prototype.callCancelHandler = function() {
this._gameMessage.onChoice(this._gameMessage.choiceCancelType());
this._messageWindow.terminateMessage();
this.close();
};
function Window_NumberInputEx() {
this.initialize.apply(this, arguments);
}
Window_NumberInputEx.prototype = Object.create(Window_NumberInput.prototype);
Window_NumberInputEx.prototype.constructor = Window_NumberInputEx;
Window_NumberInputEx.prototype.initialize = function(messageWindow, windowId) {
this._windowId = windowId;
this._gameMessage = $gameMessageEx.window(this._windowId);
Window_NumberInput.prototype.initialize.call(this, messageWindow);
};
Window_NumberInputEx.prototype.start = function() {
this._maxDigits = this._gameMessage.numInputMaxDigits();
this._number = $gameVariables.value(this._gameMessage.numInputVariableId());
this._number = this._number.clamp(0, Math.pow(10, this._maxDigits) - 1);
this.updatePlacement();
this.placeButtons();
this.updateButtonsVisiblity();
this.createContents();
this.refresh();
this.open();
this.activate();
this.select(0);
};
Window_NumberInputEx.prototype.processOk = function() {
SoundManager.playOk();
$gameVariables.setValue(this._gameMessage.numInputVariableId(), this._number);
this._messageWindow.terminateMessage();
this.updateInputData();
this.deactivate();
this.close();
};
function Window_EventItemEx() {
this.initialize.apply(this, arguments);
}
Window_EventItemEx.prototype = Object.create(Window_EventItem.prototype);
Window_EventItemEx.prototype.constructor = Window_EventItemEx;
Window_EventItemEx.prototype.initialize = function(messageWindow, windowId) {
this._windowId = windowId;
this._gameMessage = $gameMessageEx.window(this._windowId);
Window_EventItem.prototype.initialize.call(this, messageWindow);
};
Window_EventItemEx.prototype.includes = function(item) {
var itypeId = this._gameMessage.itemChoiceItypeId();
return DataManager.isItem(item) && item.itypeId === itypeId;
};
Window_EventItemEx.prototype.onOk = function() {
var item = this.item();
var itemId = item ? item.id : 0;
$gameVariables.setValue(this._gameMessage.itemChoiceVariableId(), itemId);
this._messageWindow.terminateMessage();
this.close();
};
Window_EventItemEx.prototype.onCancel = function() {
$gameVariables.setValue(this._gameMessage.itemChoiceVariableId(), 0);
this._messageWindow.terminateMessage();
this.close();
};
FTKR.EMW.DataManager_createGameObjects = DataManager.createGameObjects;
DataManager.createGameObjects = function() {
FTKR.EMW.DataManager_createGameObjects.call(this);
$gameMessageEx = new Game_MessageEx();
};
FTKR.EMW.Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
Scene_Map.prototype.createAllWindows = function() {
this.createMessageExWindowAll();
FTKR.EMW.Scene_Map_createAllWindows.call(this);
this._messageExWindows[0] = this._messageWindow;
$gameMessageEx.window(0)._window_MessageEx = this._messageExWindows[0];
FTKR.EMW.scene.startTerminate ? $gameMessageEx.window(0).terminate() :
$gameMessageEx.window(0).firstText();
};
Scene_Map.prototype.readMapMeta = function() {
return readObjectMeta($dataMap, ['EMW_生成数', 'EMW_NUMBER']);
};
Scene_Map.prototype.createMessageExWindowAll = function() {
this._messageExWindows = [];
var number = this.readMapMeta() || FTKR.EMW.exwindowNum;
for (var i = 1; i < number + 1; i++) {
this.createMessageExWindow(i);
}
};
Scene_Map.prototype.createMessageExWindow = function(windowId) {
this._messageExWindows[windowId] = new Window_MessageEx(windowId);
$gameMessageEx.window(windowId)._window_MessageEx = this._messageExWindows[windowId];
FTKR.EMW.scene.startTerminate ? $gameMessageEx.window(windowId).terminate() :
$gameMessageEx.window(windowId).firstText();
this.addWindow(this._messageExWindows[windowId]);
this._messageExWindows[windowId].subWindows().forEach(function(window) {
this.addWindow(window);
}, this);
};
FTKR.EMW.Scene_Map_terminate = Scene_Map.prototype.terminate;
Scene_Map.prototype.terminate = function() {
FTKR.EMW.Scene_Map_terminate.call(this);
if (SceneManager.isNextScene(Scene_Battle) || SceneManager.isNextScene(Scene_Map)) {
$gameMessageEx.windows().forEach( function(message, i){
if (i > 0) message.terminate();
});
}
};
FTKR.EMW.Scene_Battle_createMessagewindow = Scene_Battle.prototype.createMessageWindow;
Scene_Battle.prototype.createMessageWindow = function() {
this.createMessageExWindowAll();
FTKR.EMW.Scene_Battle_createMessagewindow.call(this);
this._messageExWindows[0] = this._messageWindow;
$gameMessageEx.window(0)._window_MessageEx = this._messageExWindows[0];
FTKR.EMW.scene.startTerminate ? $gameMessageEx.window(0).terminate() :
$gameMessageEx.window(0).firstText();
};
Scene_Battle.prototype.readMapMeta = function() {
return readObjectMeta($dataMap, ['EMW_生成数', 'EMW_NUMBER']);
};
Scene_Battle.prototype.createMessageExWindowAll = function() {
this._messageExWindows = [];
var number = this.readMapMeta() || FTKR.EMW.exwindowNum;
for (var i = 1; i < number + 1; i++) {
this.createMessageExWindow(i);
}
};
Scene_Battle.prototype.createMessageExWindow = function(windowId) {
this._messageExWindows[windowId] = new Window_MessageEx(windowId);
$gameMessageEx.window(windowId)._window_MessageEx = this._messageExWindows[windowId];
FTKR.EMW.scene.startTerminate ? $gameMessageEx.window(windowId).terminate() :
$gameMessageEx.window(windowId).firstText();
this.addWindow(this._messageExWindows[windowId]);
this._messageExWindows[windowId].subWindows().forEach(function(window) {
this.addWindow(window);
}, this);
};
FTKR.EMW.Scene_Battle_terminate = Scene_Battle.prototype.terminate;
Scene_Battle.prototype.terminate = function() {
FTKR.EMW.Scene_Battle_terminate.call(this);
$gameMessageEx.windows().forEach( function(message, i){
if (i > 0) message.terminate();
});
};
if (Imported.YEP_MessageCore) {
FTKR.EMW.Window_MessageEx_createSubWindows = Window_MessageEx.prototype.createSubWindows;
Window_MessageEx.prototype.createSubWindows = function() {
FTKR.EMW.Window_MessageEx_createSubWindows.call(this);
this._nameWindow = new Window_NameBoxEx(this, this._windowId);
FTKR.EMW.nameWindows[this._windowId] = this._nameWindow;
var scene = SceneManager._scene;
scene.addChild(this._nameWindow);
};
FTKR.EMW.Window_MessageEx_startMessage = Window_MessageEx.prototype.startMessage;
Window_MessageEx.prototype.startMessage = function() {
this._nameWindow.deactivate();
FTKR.EMW.Window_MessageEx_startMessage.call(this);
};
Window_MessageEx.prototype.wordwrapWidth = function(){
if (Yanfly.Param.MSGTightWrap && this._gameMessage.faceName() !== '') {
return this.contents.width - this.newLineX();
}
return Window_Base.prototype.wordwrapWidth.call(this);
};
Window_MessageEx.prototype.newLineX = function() {
if (this._gameMessage.faceName() === '') {
return 0;
} else {
return eval(Yanfly.Param.MSGFaceIndent);
}
};
Window_MessageEx.prototype.convertNameBox = function(text) {
var windowId = this._windowId;
text = text.replace(/\x1bN\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 1);
}, this);
text = text.replace(/\x1bN1\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 1);
}, this);
text = text.replace(/\x1bN2\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 2);
}, this);
text = text.replace(/\x1bN3\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 3);
}, this);
text = text.replace(/\x1bNC\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 3);
}, this);
text = text.replace(/\x1bN4\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 4);
}, this);
text = text.replace(/\x1bN5\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 5);
}, this);
text = text.replace(/\x1bNR\<(.*?)\>/gi, function() {
return FTKR.EMW.nameWindows[windowId].refresh(arguments[1], 5);
}, this);
return text;
};
Window_MessageEx.prototype.convertActorFace = function(actor) {
this._gameMessage.setFaceImage(actor.faceName(), actor.faceIndex());
return '';
};
if (Yanfly.Param.MSGNameBoxClose) {
Window_MessageEx.prototype.hasDifferentNameBoxText = function() {
var texts = this._gameMessage._texts;
var length = texts.length;
var open = this._nameWindow.isOpen();
for (var i = 0; i < length; ++i) {
var text = texts[i];
if (text.length <= 0) continue;
if (Yanfly.MsgMacro) {
text = this.convertMacroText(text);
text = text.replace(/\x1b/gi, '\\');
}
if (text.match(/\\(?:N|N1|N2|N3|N4|N5|NC|NR)<(.*)>/i)) {
var name = String(RegExp.$1);
} else if (text.match(/\\(?:ND|ND1|ND2|ND3|ND4|ND5|NDC|NDR)<(.*)>/i)) {
var name = String(RegExp.$1);
} else if (text.match(/\\(?:NT|NT1|NT2|NT3|NT4|NT5|NTC|NTR)<(.*)>/i)) {
var name = String(RegExp.$1);
}
if (name) {
name = name.replace(/\\V\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
name = name.replace(/\\V\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
name = name.replace(/\\N\[(\d+)\]/gi, function() {
return this.actorName(parseInt(arguments[1]));
}.bind(this));
name = name.replace(/\\P\[(\d+)\]/gi, function() {
return this.partyMemberName(parseInt(arguments[1]));
}.bind(this));
name = name.replace(/\\/gi, '\x1b');
}
if (name && !open) return true;
if (name && name !== this._nameWindow._lastNameText) {
return true;
}
}
if (open && !name) return true;
return false;
};
}
FTKR.EMW.Window_ChoiceListEx_updatePlacement = Window_ChoiceListEx.prototype.updatePlacement;
Window_ChoiceListEx.prototype.updatePlacement = function() {
FTKR.EMW.Window_ChoiceListEx_updatePlacement.call(this);
var messagePosType = this._gameMessage.positionType();
if (messagePosType === 0) {
this.y = this._messageWindow.height;
} else if (messagePosType === 2) {
this.y = Graphics.boxHeight - this._messageWindow.height - this.height;
}
};
Window_NumberInputEx.prototype.updatePlacement = function() {
Window_NumberInput.prototype.updatePlacement.call(this);
var messageY = this._messageWindow.y;
var messagePosType = this._gameMessage.positionType();
if (messagePosType === 0) {
this.y = this._messageWindow.height;
} else if (messagePosType === 1) {
if (messageY >= Graphics.boxHeight / 2) {
this.y = messageY - this.height;
} else {
this.y = messageY + this._messageWindow.height;
}
} else if (messagePosType === 2) {
this.y = Graphics.boxHeight - this._messageWindow.height - this.height;
}
};
Window_EventItemEx.prototype.updatePlacement = function() {
Window_EventItem.prototype.updatePlacement.call(this);
var messagePosType = this._gameMessage.positionType();
if (messagePosType === 0) {
this.y = Graphics.boxHeight - this.height;
} else if (messagePosType === 2) {
this.y = 0;
}
};
function Window_NameBoxEx() {
this.initialize.apply(this, arguments);
}
Window_NameBoxEx.prototype = Object.create(Window_NameBox.prototype);
Window_NameBoxEx.prototype.constructor = Window_NameBoxEx;
Window_NameBoxEx.prototype.initialize = function(parentWindow, windowId) {
this._windowId = windowId;
this._gameMessage = $gameMessageEx.window(this._windowId);
Window_NameBox.prototype.initialize.call(this, parentWindow);
};
Window_NameBoxEx.prototype.adjustPositionY = function() {
if (this._gameMessage.positionType() === 0) {
this.y = this._parentWindow.y + this._parentWindow.height;
this.y -= eval(Yanfly.Param.MSGNameBoxBufferY);
} else {
this.y = this._parentWindow.y;
this.y -= this.height;
this.y += eval(Yanfly.Param.MSGNameBoxBufferY);
}
if (this.y < 0) {
this.y = this._parentWindow.y + this._parentWindow.height;
this.y -= eval(Yanfly.Param.MSGNameBoxBufferY);
}
};
}