669 lines
22 KiB
JavaScript
669 lines
22 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 A Button
|
||
* @desc This is the command name for the A button.
|
||
* @default A Key
|
||
*
|
||
* @param A Help
|
||
* @desc This is the help description for the A button.
|
||
* @default Used for custom action A.
|
||
*
|
||
* @param Ctrl Button
|
||
* @desc This is the command name for the Ctrl button.
|
||
* @default Ctrl Key
|
||
*
|
||
* @param Ctrl Help
|
||
* @desc This is the help description for the Ctrl button.
|
||
* @default Used for custom action Ctrl.
|
||
* @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 A Button
|
||
* @desc Aボタンに対するコマンド名を変更できます
|
||
* @default Aキー
|
||
*
|
||
* @param A Help
|
||
* @desc Aボタンに対するヘルプを設定できます
|
||
* @default カスタムアクションAに使用します
|
||
*
|
||
* @param Ctrl Button
|
||
* @desc Ctrlボタンに対するコマンド名を変更できます
|
||
* @default Ctrlキー
|
||
*
|
||
* @param Ctrl Help
|
||
* @desc Ctrlボタンに対するヘルプを設定できます
|
||
* @default カスタムアクションCtrlに使用します
|
||
* @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.GamepadConfigATx = String(Yanfly.Parameters['A Button']);
|
||
Yanfly.Param.GamepadConfigAHelp = String(Yanfly.Parameters['A Help']);
|
||
Yanfly.Param.GamepadConfigCtrlTx = String(Yanfly.Parameters['Ctrl Button']);
|
||
Yanfly.Param.GamepadConfigCtrlHelp = String(Yanfly.Parameters['Ctrl 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',
|
||
6: 'commonKeyA', // Aキー
|
||
7: 'control', // Ctrlキー
|
||
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',
|
||
6: 'commonKeyA',
|
||
7: 'control',
|
||
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 < 8; ++i) {
|
||
var text = this.getButtonTypeText(i);
|
||
this.addCommand(text, 'button', true);
|
||
}
|
||
this.addCommand(this.getButtonTypeText(8), 'reset', true);
|
||
this.addCommand(this.getButtonTypeText(9), 'finish', true);
|
||
};
|
||
|
||
Window_GamepadConfig.prototype.drawItem = function(index) {
|
||
if (index > 7) {
|
||
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 === 6) return Yanfly.Param.GamepadConfigATx; // Aキー
|
||
if (index === 7) return Yanfly.Param.GamepadConfigCtrlTx; // Ctrlキー
|
||
if (index === 8) return Yanfly.Param.GamepadConfigResetTx; // Reset(index調整)
|
||
if (index === 9) return Yanfly.Param.GamepadConfigFinishTx; // Finish(index調整)
|
||
return '';
|
||
};
|
||
|
||
Window_GamepadConfig.prototype.getButtonConfig = function(index) {
|
||
if (index > 7) 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';
|
||
if (index === 6) return 'commonKeyA'; // Aキー
|
||
if (index === 7) return 'control'; // Ctrlキー
|
||
};
|
||
|
||
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 6:
|
||
this._helpWindow.setText(Yanfly.Param.GamepadConfigAHelp); // Aキー
|
||
break;
|
||
case 7:
|
||
this._helpWindow.setText(Yanfly.Param.GamepadConfigCtrlHelp); // Ctrlキー
|
||
break;
|
||
case 8: // Reset(index調整)
|
||
this._helpWindow.setText(Yanfly.Param.GamepadConfigResetHelp);
|
||
break;
|
||
case 9: // Finish(index調整)
|
||
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',
|
||
6: 'commonKeyA', // Aキー
|
||
7: 'control', // Ctrlキー
|
||
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
|
||
//=============================================================================
|