pure-white-gf/js/plugins/MessageSkip_Gamepad.js
2024-10-30 22:27:55 -05:00

163 lines
6 KiB
JavaScript

//=============================================================================
// MessageSkip_GamePad.js
//
// ----------------------------------------------------------------------------
// by ecf5DTTzl6h6lJj02
// 2024/09/09
// ----------------------------------------------------------------------------
// Copyright (C) 202X ecf5DTTzl6h6lJj02
// This software is released under the MIT lisence.
// http://opensource.org/licenses/mit-license.php
//=============================================================================
/*:
* @plugindesc メッセージスキップ ゲームパッドオプション
* @author ecf5DTTzl6h6lJj02
* @target MZ
* @base MessageSkip
* @orderAfter MessageSkip
*
*
* @param GamepadSkipButton
* @text スキップ用ボタン番号
* @desc メッセージスキップに該当するゲームパッドのボタン
* @default 6
* @type select
* @option なし
* @value
* @option ボタン 7(LT)
* @value 6
* @option ボタン 8(RT)
* @value 7
* @option ボタン 9(BACK)
* @value 8
* @option ボタン 10(START)
* @value 9
* @option ボタン 11(左スティックボタン)
* @value 10
* @option ボタン 12(右スティックボタン)
* @value 11
*
* @param GamepadAutoButton
* @text オート用ボタン番号
* @desc メッセージオートに該当するゲームパッドのボタン
* @default 7
* @type select
* @option なし
* @value
* @option ボタン 7(LT)
* @value 6
* @option ボタン 8(RT)
* @value 7
* @option ボタン 9(BACK)
* @value 8
* @option ボタン 10(START)
* @value 9
* @option ボタン 11(左スティックボタン)
* @value 10
* @option ボタン 12(右スティックボタン)
* @value 11
*
*
* @help
* トリアコンタン様作 メッセージスキッププラグイン(MessageSkip.js)
* https://github.com/triacontane/RPGMakerMV/tree/mz_master/MessageSkip.js
*
* の スキップ/オート 用のボタンを、
* ゲームパッドに割り当てるためのオプションプラグインです。
*
* このプラグインは、メッセージスキッププラグインが有効になっていない場合は、
* 何の動作もしません。
*
* ボタン 1 から ボタン 6 は、MZの標準で機能が割り当てられているため、
* 割り当てられません。
*
* 内部的に、ボタン 1 を 0 番として扱っているため、
* パラメータに、1つ前の番号が表示されますが、
* 正常に設定されています。
*
* このプラグインが、ゲームパッドのボタンに対して機能を割り当てようとした時に、
* 既に他のプラグイン等で機能が割り当てられている場合には、
* 機能の上書きが発生します。
* また、このプラグインよりも後に読み込まれるプラグインで、
* このプラグインで設定しているボタンに対して、機能の上書きがされた場合、
* メッセージ表示時にエラーが発生するようにしています。
* ご注意ください。
*
* XBOX 用のゲームパッドのボタン配置を基準にしています。
* Xinput準拠 や、PlayStation4・5 用のゲームパッドであれば、
* 同様のボタン割り当てなのはずなので、問題なく割り当てられますが、
* PlayStation、PlayStation2 用のゲームパッドをコンバータを利用して接続している、
* Nintendo Switch のコントローラを接続している、という場合は、
* ボタン割り当てが違っていると思いますので、
* ゲームパッドのプロパティ等で、ボタン番号をよく確認して、割り当ててください。
* こちらでは、Xinput準拠 のゲームパッド以外でのボタン割り当てまでは保証しません。
* ご了承ください。
*/
(() => {
"use strict";
if (
$plugins.some((plugin) => plugin.name === "MessageSkip" && plugin.status)
) {
// プラグインパラメータ
const pluginName = "MessageSkip_Gamepad";
const params = PluginManager.parameters(pluginName);
const skipButtonNumber = params["GamepadSkipButton"];
const autoButtonNumber = params["GamepadAutoButton"];
console.log(skipButtonNumber, autoButtonNumber);
if (
skipButtonNumber &&
autoButtonNumber &&
skipButtonNumber === autoButtonNumber
) {
throw Error("スキップ用ボタンとオート用ボタンの番号が同じです。");
}
if (skipButtonNumber) {
if (Input.gamepadMapper[skipButtonNumber]) {
console.warn(
"スキップ用に設定したボタンに既に機能が割り当てられていました。\n\
機能の上書きが発生していますのでご注意ください。"
);
}
Input.gamepadMapper[skipButtonNumber] = "messageSkip";
}
if (autoButtonNumber) {
if (!Input.gamepadMapper[autoButtonNumber]) {
Input.gamepadMapper[autoButtonNumber] = "messageAuto";
} else {
console.warn(
"オート用に設定したボタンに既に機能が割り当てられていました。\n\
機能の上書きが発生していますのでご注意ください。"
);
}
}
const _Window_Message_startMessage = Window_Message.prototype.startMessage;
Window_Message.prototype.startMessage = function () {
console.log(
Input.gamepadMapper[skipButtonNumber],
Input.gamepadMapper[autoButtonNumber]
);
if (
skipButtonNumber &&
Input.gamepadMapper[skipButtonNumber] !== "messageSkip"
) {
throw Error(
"スキップ用に設定したボタンに異なる機能が割り当てられています。"
);
}
if (
autoButtonNumber &&
Input.gamepadMapper[autoButtonNumber] !== "messageAuto"
) {
throw Error(
"オート用に設定したボタンに異なる機能が割り当てられています。"
);
}
_Window_Message_startMessage.apply(this, arguments);
};
}
})();