mysecretsummervacation2/www/js/plugins/MessageSkip.js
2023-08-14 15:30:44 -05:00

287 lines
11 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.

//=============================================================================
// MessageSkip.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.0.1 2016/02/15 モバイル端末での動作が遅くなる不具合を修正
// 1.0.0 2016/01/15 初版
// ----------------------------------------------------------------------------
// [Blog] : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc メッセージスキッププラグイン
* @author トリアコンタン
*
* @param スキップキー
* @desc メッセージスキップに該当するキー
* (キーのアルファベット/shift/control/tab)
* @default S
*
* @param オートキー
* @desc メッセージオートに該当するキー
* (キーのアルファベット/shift/control/tab)
* @default A
*
* @param スキップアイコン
* @desc メッセージスキップ中にウィンドウ右下に表示されるアイコン
* @default 140
*
* @param オートアイコン
* @desc メッセージオート中にウィンドウ右下に表示されるアイコン
* @default 75
*
* @param オート待機フレーム
* @desc オートモードが有効の場合にメッセージを表示しておくフレーム数
* @default 240
*
* @param イベント終了で解除
* @desc イベント終了と共にスキップ、オート状態を解除します。(ON/OFF)
* @default ON
*
* @help メッセージウィンドウでメッセージのスキップやオートモードの切替ができます。
*
* このプラグインにはプラグインコマンドはありません。
*
* 利用規約:
* 作者に無断で改変、再配布が可能で、利用形態商用、18禁利用等
* についても制限はありません。
* このプラグインはもうあなたのものです。
*/
(function () {
'use strict';
var pluginName = 'MessageSkip';
var getParamString = function (paramNames, upperFlg) {
var value = getParamOther(paramNames);
return value == null ? '' : upperFlg ? value.toUpperCase() : value;
};
var getParamNumber = function (paramNames, min, max) {
var value = getParamOther(paramNames);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(value, 10) || 0).clamp(min, max);
};
var getParamBoolean = function (paramNames) {
var value = getParamOther(paramNames);
return (value || '').toUpperCase() == 'ON';
};
var getParamOther = function (paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames[i]];
if (name) return name;
}
return null;
};
Number.prototype.times = function (handler) {
var i = 0;
while (i < this) handler.call(this, i++);
};
Input.keyCodeReverseMapper = {
a: 65, b: 66, c: 67, d: 68, e: 69, f: 70, g: 71,
h: 72, i: 73, j: 74, k: 75, l: 76, m: 77, n: 78,
o: 79, p: 80, q: 81, r: 82, s: 83, t: 84, u: 85,
v: 86, w: 87, x: 88, y: 89, z: 90,
backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, pause: 19, esc: 27, space: 32,
page_up: 33, page_down: 34, end: 35, home: 36, left: 37, right: 38, up: 39, down: 40, insert: 45, delete: 46
};
(9).times(function (i) {
Input.keyCodeReverseMapper[i] = i + 48;
});
(12).times(function (i) {
Input.keyCodeReverseMapper['f' + (i + 1)] = i + 112;
});
var skipKeyName = getParamString('スキップキー').toLowerCase();
var skipKeyCode = Input.keyCodeReverseMapper[skipKeyName];
var autoKeyName = getParamString('オートキー').toLowerCase();
var autoKeyCode = Input.keyCodeReverseMapper[autoKeyName];
if (skipKeyCode) {
Input.keyMapper[skipKeyCode] == null ? Input.keyMapper[skipKeyCode] = 'messageSkip' :
skipKeyName = Input.keyMapper[skipKeyCode];
}
if (autoKeyCode) {
Input.keyMapper[autoKeyCode] == null ? Input.keyMapper[autoKeyCode] = 'messageAuto' :
autoKeyName = Input.keyMapper[autoKeyCode];
}
var _Game_Message_initialize = Game_Message.prototype.initialize;
Game_Message.prototype.initialize = function () {
_Game_Message_initialize.apply(this, arguments);
this.clearSkipInfo();
this._autoClearSkip = getParamBoolean('イベント終了で解除');
};
Game_Message.prototype.toggleSkip = function () {
this.setSkipFlg(!this._skipFlg);
if (this._skipFlg) this._autoFlg = false;
};
Game_Message.prototype.toggleAuto = function () {
if (!this._skipFlg) this.setAutoFlg(!this._autoFlg);
};
Game_Message.prototype.skipFlg = function () {
return this._skipFlg;
};
Game_Message.prototype.autoFlg = function () {
return this._autoFlg;
};
Game_Message.prototype.setSkipFlg = function (value) {
this._skipFlg = value;
};
Game_Message.prototype.setAutoFlg = function (value) {
this._autoFlg = value;
};
Game_Message.prototype.clearSkipInfo = function () {
this._skipFlg = false;
this._autoFlg = false;
};
Game_Message.prototype.terminateEvent = function () {
if (this._autoClearSkip) this.clearSkipInfo();
};
var _Game_Interpreter_terminate = Game_Interpreter.prototype.terminate;
Game_Interpreter.prototype.terminate = function () {
_Game_Interpreter_terminate.apply(this, arguments);
$gameMessage.terminateEvent();
};
var _Window_Message_initialize = Window_Message.prototype.initialize;
Window_Message.prototype.initialize = function () {
_Window_Message_initialize.apply(this, arguments);
this._icon = new Sprite_Frame(16, 20, ImageManager.loadSystem('IconSet'), -1);
this._icon.x = this.width - this._icon.width;
this._icon.y = this.height - this._icon.height;
this.addChild(this._icon);
};
var _Window_Message_startMessage = Window_Message.prototype.startMessage;
Window_Message.prototype.startMessage = function () {
_Window_Message_startMessage.apply(this, arguments);
this._messageAutoCount = getParamNumber('オート待機フレーム', 1);
};
var _Window_Message_update = Window_Message.prototype.update;
Window_Message.prototype.update = function () {
this.updateAutoIcon();
return _Window_Message_update.apply(this, arguments);
};
Window_Message.prototype.updateAutoIcon = function () {
if (this.messageSkip() && this.openness === 255) {
this._icon.refresh(getParamNumber('スキップアイコン'));
this._icon.flashSpeed = 16;
this._icon.flash = true;
} else if (this.messageAuto() && this.openness === 255) {
this._icon.refresh(getParamNumber('オートアイコン'));
this._icon.flashSpeed = 2;
this._icon.flash = true;
} else {
this._icon.refresh(0);
this._icon.flash = false;
}
};
var _Window_Message_updateWait = Window_Message.prototype.updateWait;
Window_Message.prototype.updateWait = function () {
this.updateSkipAuto();
return _Window_Message_updateWait.apply(this, arguments);
};
Window_Message.prototype.updateSkipAuto = function () {
if (this.isAnySubWindowActive()) {
$gameMessage.clearSkipInfo();
} else if (this.isTriggeredMessageSkip()) {
$gameMessage.toggleSkip();
} else if (this.isTriggeredMessageAuto()) {
$gameMessage.toggleAuto();
}
};
Window_Message.prototype.messageAuto = function () {
return $gameMessage.autoFlg();
};
Window_Message.prototype.messageSkip = function () {
return $gameMessage.skipFlg();
};
var _Window_Message_updateInput = Window_Message.prototype.updateInput;
Window_Message.prototype.updateInput = function () {
if (this.messageAuto() && this._messageAutoCount > 0 && this.visible) this._messageAutoCount--;
return _Window_Message_updateInput.apply(this, arguments);
};
Window_Message.prototype.isTriggeredMessageSkip = function () {
return Input.isTriggered('messageSkip') || Input.isTriggered(skipKeyName);
};
Window_Message.prototype.isTriggeredMessageAuto = function () {
return Input.isTriggered('messageAuto') || Input.isTriggered(autoKeyName);
};
var _Window_Message_isTriggered = Window_Message.prototype.isTriggered;
Window_Message.prototype.isTriggered = function () {
return _Window_Message_isTriggered.apply(this, arguments) || this.messageSkip() ||
(this.messageAuto() && this._messageAutoCount <= 0);
};
var _Window_Message_startPause = Window_Message.prototype.startPause;
Window_Message.prototype.startPause = function () {
_Window_Message_startPause.apply(this, arguments);
if (this.messageSkip()) this.startWait(2);
};
function Sprite_Frame() {
this.initialize.apply(this, arguments);
}
Sprite_Frame.prototype = Object.create(Sprite.prototype);
Sprite_Frame.prototype.constructor = Sprite_Frame;
Sprite_Frame.prototype.initialize = function (column, row, bitmap, index) {
Sprite.prototype.initialize.call(this);
this._column = column;
this._row = row;
this.bitmap = bitmap;
this.anchor.x = 0.5;
this.anchor.y = 0.5;
this.flash = false;
this.flashSpeed = 2;
this._flashAlpha = 0;
this.refresh(index ? index : 0);
};
Sprite_Frame.prototype.refresh = function (index) {
if (!this.bitmap.isReady()) return;
var w = Math.floor(this.bitmap.width / this._column);
var h = Math.floor(this.bitmap.height / this._row);
this.setFrame((index % this._column) * w, Math.floor(index / this._column) * h, w, h);
};
Sprite_Frame.prototype.update = function () {
if (this.flash) {
if (this._flashAlpha <= -64) this._flashAlpha = 192;
this.setBlendColor([255, 255, 255, this._flashAlpha]);
this._flashAlpha -= this.flashSpeed;
}
};
})();