621 lines
20 KiB
JavaScript
621 lines
20 KiB
JavaScript
|
//=============================================================================
|
|||
|
// Yanfly Engine Plugins - Gamepad Config
|
|||
|
// GamepadConfig.js
|
|||
|
// Version: 1.00
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
var Imported = Imported || {};
|
|||
|
Imported.GamepadConfig = true;
|
|||
|
|
|||
|
var Yanfly = Yanfly || {};
|
|||
|
Yanfly.GamepadConfig = Yanfly.GamepadConfig || {};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
/*:
|
|||
|
* @plugindesc v1.00 Allows players to adjust their button configuration
|
|||
|
* for gamepads.
|
|||
|
* @author Yanfly Engine Plugins
|
|||
|
*
|
|||
|
* @param Command Name
|
|||
|
* @desc This is the option name that appears in the main menu.
|
|||
|
* @default Gamepad Config
|
|||
|
*
|
|||
|
* @param Button Name
|
|||
|
* @desc This is how a button name will appear in the config menu.
|
|||
|
* @default Button %1
|
|||
|
*
|
|||
|
* @param OK Button
|
|||
|
* @desc This is the command name for the OK button.
|
|||
|
* @default OK / Talk
|
|||
|
*
|
|||
|
* @param OK Help
|
|||
|
* @desc This is the help description for the OK button.
|
|||
|
* @default Used to accept menu actions and talk to people.
|
|||
|
*
|
|||
|
* @param Cancel Button
|
|||
|
* @desc Cancel Button
|
|||
|
* @desc This is the command name for the Cancel button.
|
|||
|
* @default Cancel
|
|||
|
*
|
|||
|
* @param Cancel Help
|
|||
|
* @desc This is the help description for the Cancel button.
|
|||
|
* @default Used to cancel menu actions.
|
|||
|
*
|
|||
|
* @param Shift Button
|
|||
|
* @desc This is the command name for the Shift button.
|
|||
|
* @default Dash
|
|||
|
*
|
|||
|
* @param Shift Help
|
|||
|
* @desc This is the help description for the Shift button.
|
|||
|
* @default Hold this button to dash on the field.
|
|||
|
*
|
|||
|
* @param Menu Button
|
|||
|
* @desc This is the command name for the Menu button.
|
|||
|
* @default Menu
|
|||
|
*
|
|||
|
* @param Menu Help
|
|||
|
* @desc This is the help description for the Menu button.
|
|||
|
* @default Access the Main Menu from the field.
|
|||
|
*
|
|||
|
* @param PageUp Button
|
|||
|
* @desc This is the command name for the Page Up button.
|
|||
|
* @default Page Up
|
|||
|
*
|
|||
|
* @param PageUp Help
|
|||
|
* @desc This is the help description for the Page Up button.
|
|||
|
* @default Use it to quickly scroll up menus.
|
|||
|
*
|
|||
|
* @param PageDown Button
|
|||
|
* @desc This is the command name for the Page Down button.
|
|||
|
* @default Page Down
|
|||
|
*
|
|||
|
* @param PageDown Help
|
|||
|
* @desc This is the help description for the Page Down button.
|
|||
|
* @default Use it to quickly scroll down menus.
|
|||
|
*
|
|||
|
* @param Reset Default
|
|||
|
* @desc This is the command name to reset the config to default.
|
|||
|
* @default Reset to Default
|
|||
|
*
|
|||
|
* @param Reset Help
|
|||
|
* @desc This is the help description for the Reset button.
|
|||
|
* @default Returns your controller to default settings.
|
|||
|
*
|
|||
|
* @param Finish Config
|
|||
|
* @desc This is the command name for the finish button.
|
|||
|
* @default Finish Configuration
|
|||
|
*
|
|||
|
* @param Finish Help
|
|||
|
* @desc This is the help description for the Finish button.
|
|||
|
* @default Are you done configuring your gamepad?
|
|||
|
*
|
|||
|
* @help
|
|||
|
* Adds a "Gamepad Config" option to the Options Menu if a gamepad is detected.
|
|||
|
* Players can then adjust the button configuration to their liking and it will
|
|||
|
* be loaded automatically each time they play the game. Keep in mind that if
|
|||
|
* at any point where a Gamepad is not detected inside of the Option or Gamepad
|
|||
|
* Config menu, the game will automatically eject the player out the prevent
|
|||
|
* the player from being locked inside.
|
|||
|
*/
|
|||
|
|
|||
|
/*:ja
|
|||
|
* @plugindesc ゲームパッド向けにボタンコンフィグを行なうプラグインです。
|
|||
|
* @author Yanfly Engine Plugins
|
|||
|
*
|
|||
|
* @param Command Name
|
|||
|
* @desc メインメニューに表示されるオプション名を変更できます
|
|||
|
* @default Gamepad Config
|
|||
|
*
|
|||
|
* @param Button Name
|
|||
|
* @desc コンフィグメニューでのボタン名の表示方法を変更できます
|
|||
|
* @default Button %1
|
|||
|
*
|
|||
|
* @param OK Button
|
|||
|
* @desc OKボタンに対するコマンド名を変更できます
|
|||
|
* @default OK / Talk
|
|||
|
*
|
|||
|
* @param OK Help
|
|||
|
* @desc OKボタンに対するヘルプを設定できます
|
|||
|
* @default メニューの決定/人に話しかける際に使うボタンです
|
|||
|
*
|
|||
|
* @param Cancel Button
|
|||
|
* @desc キャンセルボタン
|
|||
|
* @desc キャンセルボタンに対するコマンド名を変更できます
|
|||
|
* @default Cancel
|
|||
|
*
|
|||
|
* @param Cancel Help
|
|||
|
* @desc キャンセルボタンに対するヘルプを設定できます
|
|||
|
* @default メニューアクションをキャンセルする際に使うボタンです
|
|||
|
*
|
|||
|
* @param Shift Button
|
|||
|
* @desc シフトボタンに対するコマンド名を変更できます
|
|||
|
* @default ダッシュ
|
|||
|
*
|
|||
|
* @param Shift Help
|
|||
|
* @desc シフトボタンに対するヘルプを設定できます
|
|||
|
* @default 長押しするとフィールド上をダッシュできます
|
|||
|
*
|
|||
|
* @param Menu Button
|
|||
|
* @desc メニューボタンに対するコマンド名を変更できます
|
|||
|
* @default Menu
|
|||
|
*
|
|||
|
* @param Menu Help
|
|||
|
* @desc メニューボタンに対するヘルプを設定できます
|
|||
|
* @default フィールドからメインメニューにアクセスします
|
|||
|
*
|
|||
|
* @param PageUp Button
|
|||
|
* @desc ページアップボタンに対するコマンド名を変更できます
|
|||
|
* @default Page Up
|
|||
|
*
|
|||
|
* @param PageUp Help
|
|||
|
* @desc ページアップボタンに対するヘルプを設定できます
|
|||
|
* @default メニューを素早くスクロールアップできます
|
|||
|
*
|
|||
|
* @param PageDown Button
|
|||
|
* @desc ページダウンボタンに対するコマンド名を変更できます
|
|||
|
* @default Page Down
|
|||
|
*
|
|||
|
* @param PageDown Help
|
|||
|
* @desc ページダウンボタンに対するヘルプを設定できます
|
|||
|
* @default メニューを素早くスクロールダウンできます
|
|||
|
*
|
|||
|
* @param Reset Default
|
|||
|
* @desc コンフィグをリセットする際のコマンド名を変更できます
|
|||
|
* @default Reset to Default
|
|||
|
*
|
|||
|
* @param Reset Help
|
|||
|
* @desc リセットボタンに対するヘルプを設定できます
|
|||
|
* @default コントローラコンフィグをデフォルトに戻します
|
|||
|
*
|
|||
|
* @param Finish Config
|
|||
|
* @desc コンフィグを完了する際のコマンド名を変更できます
|
|||
|
* @default Finish Configuration
|
|||
|
*
|
|||
|
* @param Finish Help
|
|||
|
* @desc 完了ボタンに対するヘルプを設定できます
|
|||
|
* @default ゲームパッドのコンフィグを完了しますか?
|
|||
|
*
|
|||
|
* @help
|
|||
|
* ゲームパッドが使用される場合、
|
|||
|
* "Gamepad Config"をオプションメニューに追加してください。
|
|||
|
* プレイヤーは好みのコンフィグ設定を行うことができ、
|
|||
|
* その設定は毎回プレイ時に自動的にロードされます。
|
|||
|
*
|
|||
|
* ゲームパッドがオプションやゲームパッドコンフィグから検出されなくなると、
|
|||
|
* ゲームは自動的にプレイヤーを排出し、ゲーム内に閉じ込められることを防ぎます。
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Parameter Variables
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
Yanfly.Parameters = PluginManager.parameters('GamepadConfig');
|
|||
|
Yanfly.Param = Yanfly.Param || {};
|
|||
|
|
|||
|
Yanfly.Param.GamepadConfigName = String(Yanfly.Parameters['Command Name']);
|
|||
|
Yanfly.Param.GamepadConfigButton = String(Yanfly.Parameters['Button Name']);
|
|||
|
Yanfly.Param.GamepadConfigOkTx = String(Yanfly.Parameters['OK Button']);
|
|||
|
Yanfly.Param.GamepadConfigOkHelp = String(Yanfly.Parameters['OK Help']);
|
|||
|
Yanfly.Param.GamepadConfigCancelTx = String(Yanfly.Parameters['Cancel Button']);
|
|||
|
Yanfly.Param.GamepadConfigCancelHelp = String(Yanfly.Parameters['Cancel Help']);
|
|||
|
Yanfly.Param.GamepadConfigShiftTx = String(Yanfly.Parameters['Shift Button']);
|
|||
|
Yanfly.Param.GamepadConfigShiftHelp = String(Yanfly.Parameters['Shift Help']);
|
|||
|
Yanfly.Param.GamepadConfigMenuTx = String(Yanfly.Parameters['Menu Button']);
|
|||
|
Yanfly.Param.GamepadConfigMenuHelp = String(Yanfly.Parameters['Menu Help']);
|
|||
|
Yanfly.Param.GamepadConfigPgUpTx = String(Yanfly.Parameters['PageUp Button']);
|
|||
|
Yanfly.Param.GamepadConfigPgUpHelp = String(Yanfly.Parameters['PageUp Help']);
|
|||
|
Yanfly.Param.GamepadConfigPgDnTx = String(Yanfly.Parameters['PageDown Button']);
|
|||
|
Yanfly.Param.GamepadConfigPgDnHelp = String(Yanfly.Parameters['PageDown Help']);
|
|||
|
Yanfly.Param.GamepadConfigResetTx = String(Yanfly.Parameters['Reset Default']);
|
|||
|
Yanfly.Param.GamepadConfigResetHelp = String(Yanfly.Parameters['Reset Help']);
|
|||
|
Yanfly.Param.GamepadConfigFinishTx = String(Yanfly.Parameters['Finish Config']);
|
|||
|
Yanfly.Param.GamepadConfigFinishHelp = String(Yanfly.Parameters['Finish Help']);
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Input
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
Input.getPressedGamepadButton = function() {
|
|||
|
if (Yanfly.Param.GamepadTimer > 0) {
|
|||
|
Yanfly.Param.GamepadTimer -= 1;
|
|||
|
return -1;
|
|||
|
}
|
|||
|
if (navigator.getGamepads) {
|
|||
|
var gamepads = navigator.getGamepads();
|
|||
|
if (gamepads) {
|
|||
|
for (var i = 0; i < gamepads.length; i++) {
|
|||
|
var gamepad = gamepads[i];
|
|||
|
if (gamepad && gamepad.connected) {
|
|||
|
return this.gamepadButtonId(gamepad);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return -1;
|
|||
|
};
|
|||
|
|
|||
|
Input.gamepadButtonId = function(gamepad) {
|
|||
|
var buttons = gamepad.buttons;
|
|||
|
for (var i = 0; i < buttons.length; i++) {
|
|||
|
if (buttons[i].pressed) return i;
|
|||
|
}
|
|||
|
return -1;
|
|||
|
};
|
|||
|
|
|||
|
Input.getGamepadButton = function(type) {
|
|||
|
for (var i = 0; i < 12; ++i) {
|
|||
|
if (Input.gamepadMapper[i] === type) return i;
|
|||
|
}
|
|||
|
return null;
|
|||
|
};
|
|||
|
|
|||
|
Input.isControllerConnected = function() {
|
|||
|
if (navigator.getGamepads) {
|
|||
|
var gamepads = navigator.getGamepads();
|
|||
|
if (gamepads) {
|
|||
|
for (var i = 0; i < gamepads.length; i++) {
|
|||
|
var gamepad = gamepads[i];
|
|||
|
if (gamepad && gamepad.connected) return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// ConfigManager
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
ConfigManager.gamepadInput = {
|
|||
|
0: 'ok',
|
|||
|
1: 'cancel',
|
|||
|
2: 'shift',
|
|||
|
3: 'menu',
|
|||
|
4: 'pageup',
|
|||
|
5: 'pagedown',
|
|||
|
12: 'up',
|
|||
|
13: 'down',
|
|||
|
14: 'left',
|
|||
|
15: 'right',
|
|||
|
};
|
|||
|
|
|||
|
Yanfly.GamepadConfig.ConfigManager_makeData = ConfigManager.makeData;
|
|||
|
ConfigManager.makeData = function() {
|
|||
|
var config = Yanfly.GamepadConfig.ConfigManager_makeData.call(this);
|
|||
|
config.gamepadInput = this.gamepadInput;
|
|||
|
return config;
|
|||
|
};
|
|||
|
|
|||
|
Yanfly.GamepadConfig.ConfigManager_applyData = ConfigManager.applyData;
|
|||
|
ConfigManager.applyData = function(config) {
|
|||
|
Yanfly.GamepadConfig.ConfigManager_applyData.call(this, config);
|
|||
|
this.gamepadInput = this.readGamepadConfig(config, 'gamepadInput');
|
|||
|
this.applyGamepadConfig();
|
|||
|
};
|
|||
|
|
|||
|
ConfigManager.applyGamepadConfig = function() {
|
|||
|
Input.gamepadMapper = this.gamepadInput;
|
|||
|
Input.update();
|
|||
|
Input.clear();
|
|||
|
};
|
|||
|
|
|||
|
ConfigManager.readGamepadConfig = function(config, name) {
|
|||
|
var value = config[name];
|
|||
|
if (value !== undefined) {
|
|||
|
return value;
|
|||
|
} else {
|
|||
|
return {
|
|||
|
0: 'ok',
|
|||
|
1: 'cancel',
|
|||
|
2: 'shift',
|
|||
|
3: 'menu',
|
|||
|
4: 'pageup',
|
|||
|
5: 'pagedown',
|
|||
|
12: 'up',
|
|||
|
13: 'down',
|
|||
|
14: 'left',
|
|||
|
15: 'right',
|
|||
|
};
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Window_MenuCommand
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
Yanfly.GamepadConfig.Window_Options_addGeneralOptions =
|
|||
|
Window_Options.prototype.addGeneralOptions;
|
|||
|
Window_Options.prototype.addGeneralOptions = function() {
|
|||
|
Yanfly.GamepadConfig.Window_Options_addGeneralOptions.call(this);
|
|||
|
this.addGameConfigCommand();
|
|||
|
};
|
|||
|
|
|||
|
Window_Options.prototype.addGameConfigCommand = function() {
|
|||
|
if (Input.isControllerConnected()) {
|
|||
|
this.addCommand(Yanfly.Param.GamepadConfigName, 'gamepadConfig', true);
|
|||
|
this._addedController = true;
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
Yanfly.GamepadConfig.Window_Options_update =
|
|||
|
Window_Options.prototype.update;
|
|||
|
Window_Options.prototype.update = function() {
|
|||
|
Yanfly.GamepadConfig.Window_Options_update.call(this);
|
|||
|
if (this._addedController && !Input.isControllerConnected()) {
|
|||
|
this.refresh();
|
|||
|
this.height = this.windowHeight();
|
|||
|
this.updatePlacement();
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
Yanfly.GamepadConfig.Window_Options_drawItem =
|
|||
|
Window_Options.prototype.drawItem;
|
|||
|
Window_Options.prototype.drawItem = function(index) {
|
|||
|
if (this.commandSymbol(index) === 'gamepadConfig') {
|
|||
|
var rect = this.itemRectForText(index);
|
|||
|
var text = this.commandName(index);
|
|||
|
this.resetTextColor();
|
|||
|
this.changePaintOpacity(this.isCommandEnabled(index));
|
|||
|
this.drawText(text, rect.x, rect.y, rect.width, 'left');
|
|||
|
} else {
|
|||
|
Yanfly.GamepadConfig.Window_Options_drawItem.call(this, index);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
Yanfly.GamepadConfig.Window_Options_processOk =
|
|||
|
Window_Options.prototype.processOk;
|
|||
|
Window_Options.prototype.processOk = function() {
|
|||
|
if (this.commandSymbol(this.index()) === 'gamepadConfig') {
|
|||
|
Window_Command.prototype.processOk.call(this);
|
|||
|
} else {
|
|||
|
Yanfly.GamepadConfig.Window_Options_processOk.call(this);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Window_GamepadConfig
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
function Window_GamepadConfig() {
|
|||
|
this.initialize.apply(this, arguments);
|
|||
|
}
|
|||
|
|
|||
|
Window_GamepadConfig.prototype = Object.create(Window_Command.prototype);
|
|||
|
Window_GamepadConfig.prototype.constructor = Window_GamepadConfig;
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.initialize = function(helpWindow) {
|
|||
|
var wy = helpWindow.height;
|
|||
|
Window_Command.prototype.initialize.call(this, 0, wy);
|
|||
|
this.setHelpWindow(helpWindow);
|
|||
|
this.height = Graphics.boxHeight - wy;
|
|||
|
this.refresh();
|
|||
|
this.activate();
|
|||
|
this.select(0);
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.windowWidth = function() {
|
|||
|
return Graphics.boxWidth;
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.makeCommandList = function(index) {
|
|||
|
for (var i = 0; i < 6; ++i) {
|
|||
|
var text = this.getButtonTypeText(i);
|
|||
|
this.addCommand(text, 'button', true);
|
|||
|
}
|
|||
|
this.addCommand('', 'filler', true);
|
|||
|
this.addCommand(this.getButtonTypeText(7), 'reset', true);
|
|||
|
this.addCommand(this.getButtonTypeText(8), 'finish', true);
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.drawItem = function(index) {
|
|||
|
if (index > 5) {
|
|||
|
Window_Command.prototype.drawItem.call(this, index);
|
|||
|
} else {
|
|||
|
var rect = this.itemRectForText(index);
|
|||
|
var align = this.itemTextAlign();
|
|||
|
var ww = rect.width / 2;
|
|||
|
this.resetTextColor();
|
|||
|
this.changePaintOpacity(this.isCommandEnabled(index));
|
|||
|
this.drawText(this.commandName(index), rect.x, rect.y, ww, align);
|
|||
|
var text = this.getButtonConfig(index);
|
|||
|
this.drawText(text, rect.x + ww, rect.y, ww, align);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.getButtonTypeText = function(index) {
|
|||
|
if (index === 0) return Yanfly.Param.GamepadConfigOkTx;
|
|||
|
if (index === 1) return Yanfly.Param.GamepadConfigCancelTx;
|
|||
|
if (index === 2) return Yanfly.Param.GamepadConfigShiftTx;
|
|||
|
if (index === 3) return Yanfly.Param.GamepadConfigMenuTx;
|
|||
|
if (index === 4) return Yanfly.Param.GamepadConfigPgUpTx;
|
|||
|
if (index === 5) return Yanfly.Param.GamepadConfigPgDnTx;
|
|||
|
if (index === 7) return Yanfly.Param.GamepadConfigResetTx;
|
|||
|
if (index === 8) return Yanfly.Param.GamepadConfigFinishTx;
|
|||
|
return '';
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.getButtonConfig = function(index) {
|
|||
|
if (index > 5) return '';
|
|||
|
var key = this.getButtonKey(index);
|
|||
|
var button = Input.getGamepadButton(key);
|
|||
|
return Yanfly.Param.GamepadConfigButton.format(button);
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.getButtonKey = function(index) {
|
|||
|
if (index === 0) return 'ok';
|
|||
|
if (index === 1) return 'cancel';
|
|||
|
if (index === 2) return 'shift';
|
|||
|
if (index === 3) return 'menu';
|
|||
|
if (index === 4) return 'pageup';
|
|||
|
if (index === 5) return 'pagedown';
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.itemTextAlign = function() {
|
|||
|
return 'center';
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.clearButtonConfig = function(index) {
|
|||
|
var rect = this.itemRectForText(index);
|
|||
|
rect.x += rect.width / 2;
|
|||
|
rect.width /= 2;
|
|||
|
this.contents.clearRect(rect.x, rect.y, rect.width, rect.height);
|
|||
|
};
|
|||
|
|
|||
|
Window_GamepadConfig.prototype.updateHelp = function() {
|
|||
|
if (!this._helpWindow) return;
|
|||
|
switch (this.index()) {
|
|||
|
case 0:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigOkHelp);
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigCancelHelp);
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigShiftHelp);
|
|||
|
break;
|
|||
|
case 3:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigMenuHelp);
|
|||
|
break;
|
|||
|
case 4:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigPgUpHelp);
|
|||
|
break;
|
|||
|
case 5:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigPgDnHelp);
|
|||
|
break;
|
|||
|
case 7:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigResetHelp);
|
|||
|
break;
|
|||
|
case 8:
|
|||
|
this._helpWindow.setText(Yanfly.Param.GamepadConfigFinishHelp);
|
|||
|
break;
|
|||
|
default:
|
|||
|
this._helpWindow.clear();
|
|||
|
break;
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Scene_Options
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
Yanfly.GamepadConfig.Scene_Options_createOptionsWindow =
|
|||
|
Scene_Options.prototype.createOptionsWindow;
|
|||
|
Scene_Options.prototype.createOptionsWindow = function() {
|
|||
|
Yanfly.GamepadConfig.Scene_Options_createOptionsWindow.call(this);
|
|||
|
this._optionsWindow.setHandler('gamepadConfig',
|
|||
|
this.commandGamepadConfig.bind(this));
|
|||
|
};
|
|||
|
|
|||
|
Scene_Options.prototype.commandGamepadConfig = function() {
|
|||
|
SceneManager.push(Scene_GamepadConfig);
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// Scene_GamepadConfig
|
|||
|
//=============================================================================
|
|||
|
|
|||
|
function Scene_GamepadConfig() {
|
|||
|
this.initialize.apply(this, arguments);
|
|||
|
}
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype = Object.create(Scene_MenuBase.prototype);
|
|||
|
Scene_GamepadConfig.prototype.constructor = Scene_GamepadConfig;
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.initialize = function() {
|
|||
|
Scene_MenuBase.prototype.initialize.call(this);
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.create = function() {
|
|||
|
Scene_MenuBase.prototype.create.call(this);
|
|||
|
this.createHelpWindow();
|
|||
|
this.createGamepadConfigWindow();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.terminate = function() {
|
|||
|
Scene_MenuBase.prototype.terminate.call(this);
|
|||
|
ConfigManager.save();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.update = function() {
|
|||
|
Scene_MenuBase.prototype.update.call(this);
|
|||
|
this.updateAttachedController();
|
|||
|
this.updateButtonConfig();
|
|||
|
this.updateAfterConfig();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.updateAttachedController = function() {
|
|||
|
if (Input.isControllerConnected()) return;
|
|||
|
this.popScene();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.createGamepadConfigWindow = function() {
|
|||
|
this._configWindow = new Window_GamepadConfig(this._helpWindow);
|
|||
|
this._configWindow.setHandler('button', this.commandButton.bind(this));
|
|||
|
this._configWindow.setHandler('reset', this.commandReset.bind(this));
|
|||
|
this._configWindow.setHandler('finish', this.popScene.bind(this));
|
|||
|
this.addWindow(this._configWindow);
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.commandButton = function() {
|
|||
|
var index = this._configWindow.index();
|
|||
|
this._configWindow.clearButtonConfig(index);
|
|||
|
this._configEnabled = true;
|
|||
|
Yanfly.Param.GamepadTimer = 12;
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.commandReset = function() {
|
|||
|
ConfigManager.gamepadInput = {
|
|||
|
0: 'ok',
|
|||
|
1: 'cancel',
|
|||
|
2: 'shift',
|
|||
|
3: 'menu',
|
|||
|
4: 'pageup',
|
|||
|
5: 'pagedown',
|
|||
|
12: 'up',
|
|||
|
13: 'down',
|
|||
|
14: 'left',
|
|||
|
15: 'right',
|
|||
|
};
|
|||
|
ConfigManager.applyGamepadConfig();
|
|||
|
this.refreshWindows();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.refreshWindows = function() {
|
|||
|
this._configWindow.refresh();
|
|||
|
this._configWindow.activate();
|
|||
|
ConfigManager.save();
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.updateButtonConfig = function() {
|
|||
|
if (!this._configEnabled) return;
|
|||
|
var buttonId = Input.getPressedGamepadButton();
|
|||
|
if (buttonId > 11) return;
|
|||
|
if (buttonId >= 0) this.applyButtonConfig(buttonId);
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.applyButtonConfig = function(buttonId) {
|
|||
|
this._configEnabled = false;
|
|||
|
var index = this._configWindow.index();
|
|||
|
var newConfig = this._configWindow.getButtonKey(index);
|
|||
|
var formerConfig = Input.gamepadMapper[buttonId];
|
|||
|
var formerButton = Input.getGamepadButton(newConfig);
|
|||
|
ConfigManager.gamepadInput[buttonId] = newConfig;
|
|||
|
ConfigManager.gamepadInput[formerButton] = formerConfig;
|
|||
|
ConfigManager.applyGamepadConfig();
|
|||
|
this._configTimer = 12;
|
|||
|
};
|
|||
|
|
|||
|
Scene_GamepadConfig.prototype.updateAfterConfig = function() {
|
|||
|
if (!this._configTimer) return;
|
|||
|
if (--this._configTimer > 0) return;
|
|||
|
SoundManager.playEquip();
|
|||
|
this.refreshWindows();
|
|||
|
};
|
|||
|
|
|||
|
//=============================================================================
|
|||
|
// End of File
|
|||
|
//=============================================================================
|