1191 lines
42 KiB
JavaScript
1191 lines
42 KiB
JavaScript
//=============================================================================
|
|
// Yanfly Engine Plugins - Keyboard Configuration
|
|
// YEP_KeyboardConfig.js
|
|
//=============================================================================
|
|
|
|
var Imported = Imported || {};
|
|
Imported.YEP_KeyboardConfig = true;
|
|
|
|
var Yanfly = Yanfly || {};
|
|
Yanfly.KeyConfig = Yanfly.KeyConfig || {};
|
|
Yanfly.KeyConfig.version = 1.04;
|
|
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc v1.04 Allows players to adjust their button configuration
|
|
* for keyboards.
|
|
* @author Yanfly Engine Plugins
|
|
*
|
|
* @param ---General---
|
|
* @default
|
|
*
|
|
* @param Command Name
|
|
* @parent ---General---
|
|
* @desc This is the option name that appears in the main menu.
|
|
* @default Keyboard Config
|
|
*
|
|
* @param Button Events
|
|
* @parent ---General---
|
|
* @desc Requires YEP_ButtonCommonEvents. This is a list of common
|
|
* events you can bind to key presses. Separate with a space.
|
|
* @default 1 2 3
|
|
*
|
|
* @param Button Events List
|
|
* @parent ---General---
|
|
* @type number[]
|
|
* @desc Requires YEP_ButtonCommonEvents. This is a list of common
|
|
* events you can bind to key presses. MV 1.5.0+
|
|
* @default []
|
|
*
|
|
* @param ---Help Text---
|
|
* @default
|
|
*
|
|
* @param Key Help
|
|
* @parent ---Help Text---
|
|
* @desc This is the help message that will display for keys.
|
|
* @default Change the configuration of this key?
|
|
*
|
|
* @param Default Layout
|
|
* @parent ---Help Text---
|
|
* @desc This is the text for switching to the default layout.
|
|
* @default Default Keyboard Layout
|
|
*
|
|
* @param Default Help
|
|
* @parent ---Help Text---
|
|
* @desc This is the help message that will display for keys.
|
|
* @default Reverts your keyboard setting to the default setup.
|
|
*
|
|
* @param WASD Layout
|
|
* @parent ---Help Text---
|
|
* @desc This is the text for switching to the WASD layout.
|
|
* @default WASD Movement Layout
|
|
*
|
|
* @param WASD Help
|
|
* @parent ---Help Text---
|
|
* @desc This is the help message that will display for WASD.
|
|
* @default Changes your keyboard to WASD movement.
|
|
*
|
|
* @param Finish Config
|
|
* @parent ---Help Text---
|
|
* @desc This is the text for finishing with keyboard configuration.
|
|
* @default Finish Configuration
|
|
*
|
|
* @param Finish Help
|
|
* @parent ---Help Text---
|
|
* @desc This is the help message that will display for Finish.
|
|
* @default Are you done configuring your keyboard?
|
|
*
|
|
* @param Assigned Color
|
|
* @parent ---Help Text---
|
|
* @type number
|
|
* @min 0
|
|
* @max 31
|
|
* @desc This is the background color of a key that's assigned.
|
|
* @default 21
|
|
*
|
|
* @param Action Color
|
|
* @parent ---Help Text---
|
|
* @type number
|
|
* @min 0
|
|
* @max 31
|
|
* @desc This is the text color of an assigned action.
|
|
* @default 4
|
|
*
|
|
* @param Clear Text
|
|
* @parent ---Help Text---
|
|
* @desc This is the Clear action will appear for the config text.
|
|
* @default Clear
|
|
*
|
|
* @param ---Key Names---
|
|
* @default
|
|
*
|
|
* @param OK Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the OK action will appear on a key.
|
|
* @default OK
|
|
*
|
|
* @param OK Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the OK action will appear for the config text.
|
|
* @default OK / Talk
|
|
*
|
|
* @param Escape Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Escape action will appear on a key.
|
|
* @default X
|
|
*
|
|
* @param Escape Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Escape action will appear for the config text.
|
|
* @default Cancel / Menu
|
|
*
|
|
* @param Cancel Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Cancel action will appear on a key.
|
|
* @default Cancel
|
|
*
|
|
* @param Cancel Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Cancel action will appear for the config text.
|
|
* @default Cancel
|
|
*
|
|
* @param Menu Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Menu action will appear on a key.
|
|
* @default Menu
|
|
*
|
|
* @param Menu Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Menu action will appear for the config text.
|
|
* @default Menu
|
|
*
|
|
* @param Shift Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Shift action will appear on a key.
|
|
* @default Dash
|
|
*
|
|
* @param Shift Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Shift action will appear for the config text.
|
|
* @default Dash
|
|
*
|
|
* @param PageUp Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the PageUp action will appear on a key.
|
|
* @default PgUp
|
|
*
|
|
* @param PageUp Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the PageUp action will appear for the config text.
|
|
* @default Page Up
|
|
*
|
|
* @param PageDown Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the PageUp action will appear on a key.
|
|
* @default PgDn
|
|
*
|
|
* @param PageDown Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the PageUp action will appear for the config text.
|
|
* @default Page Down
|
|
*
|
|
* @param Left Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Left action will appear on a key.
|
|
* @default ◄
|
|
*
|
|
* @param Left Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Left action will appear for the config text.
|
|
* @default Move ◄ Left
|
|
*
|
|
* @param Up Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Up action will appear on a key.
|
|
* @default ▲
|
|
*
|
|
* @param Up Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Up action will appear for the config text.
|
|
* @default Move ▲ Up
|
|
*
|
|
* @param Right Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Right action will appear on a key.
|
|
* @default ►
|
|
*
|
|
* @param Right Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Right action will appear for the config text.
|
|
* @default Move ► Right
|
|
*
|
|
* @param Down Key
|
|
* @parent ---Key Names---
|
|
* @desc This is the Down action will appear on a key.
|
|
* @default ▼
|
|
*
|
|
* @param Down Text
|
|
* @parent ---Key Names---
|
|
* @desc This is the Down action will appear for the config text.
|
|
* @default Move ▼ Down
|
|
*
|
|
* @help
|
|
* ============================================================================
|
|
* Introduction
|
|
* ============================================================================
|
|
*
|
|
* This plugin allows players to change their keyboard configuration from the
|
|
* in-game Options menu provided that they're using a computer to play the
|
|
* game and not from a mobile device. The "Keyboard Config" option will send
|
|
* the player to a different screen where they can assign actions to each of
|
|
* the allowed keys on the keyboard.
|
|
*
|
|
* Certain measures are made to prevent the player from locking himself or
|
|
* herself in the configuration screen. These measures are that the Enter keys
|
|
* and arrow keys cannot be changed. Almost every other key is capable of being
|
|
* changed to something of the player's liking.
|
|
*
|
|
* Note: If you are using Button Common Events, place this plugin beneath
|
|
* Button Common Events in the plugin parameter list.
|
|
*
|
|
* ============================================================================
|
|
* Button Common Event - Comment Tags
|
|
* ============================================================================
|
|
*
|
|
* If you're using Button Common Events, you can make certain Common Events
|
|
* able to be bound to the keyboard using Comment Tags. To make a Comment Tag,
|
|
* use a Comment Event inside of your Common Event, and insert the following to
|
|
* achieve the desired effect:
|
|
*
|
|
* Comment Tag:
|
|
*
|
|
* <Config Key: text>
|
|
* This is the text displayed on the keyboard if this common event is bound
|
|
* to a keyboard key. If this text isn't used, then the text displayed will
|
|
* be the common event's name.
|
|
*
|
|
* <Config Text: text>
|
|
* This is the text displayed when selecting a key to bind for the keyboard
|
|
* key. This is the text displayed in the selection list. If this text isn't
|
|
* used, then the text displayed will be the common event's name.
|
|
*
|
|
* <Config Required>
|
|
* This makes the common event required to be bound on the keyboard before
|
|
* the player can exit the configuration menu. In order for this to work
|
|
* properly, there needs to be a Button Common Event bound for this common
|
|
* event as well.
|
|
*
|
|
* ============================================================================
|
|
* Options Core Settings - Adding the New Options
|
|
* ============================================================================
|
|
*
|
|
* If you are using YEP_OptionsCore.js, you can add a new Option using this
|
|
* plugin. Here's the following code/parameter settings you can use with it.
|
|
*
|
|
* ---------
|
|
* Settings:
|
|
* ---------
|
|
*
|
|
* Name:
|
|
* \i[83]Keyboard Config
|
|
*
|
|
* Help Description:
|
|
* Configure the game's keyboard settings.
|
|
*
|
|
* Symbol:
|
|
* keyConfig
|
|
*
|
|
* Show/Hide:
|
|
* if (Imported.YEP_KeyboardConfig) {
|
|
* show = !Utils.isMobileDevice();
|
|
* } else {
|
|
* show = false;
|
|
* }
|
|
*
|
|
* Enable:
|
|
* enabled = true;
|
|
*
|
|
* Ext:
|
|
* ext = 0;
|
|
*
|
|
* ----------
|
|
* Functions:
|
|
* ----------
|
|
*
|
|
* Make Option Code:
|
|
* this.addCommand(name, symbol, enabled, ext);
|
|
*
|
|
* Draw Option Code:
|
|
* var rect = this.itemRectForText(index);
|
|
* var statusWidth = this.statusWidth();
|
|
* var titleWidth = rect.width - statusWidth;
|
|
* this.resetTextColor();
|
|
* this.changePaintOpacity(this.isCommandEnabled(index));
|
|
* this.drawOptionsName(index);
|
|
*
|
|
* Process OK Code:
|
|
* this.playOkSound();
|
|
* SceneManager.push(Scene_KeyConfig);
|
|
*
|
|
* Cursor Right Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Cursor Left Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Default Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Save Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Load Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* ============================================================================
|
|
* Changelog
|
|
* ============================================================================
|
|
*
|
|
* Version 1.04:
|
|
* - Compatibility update with YEP_OptionsCore.js.
|
|
*
|
|
* Version 1.03:
|
|
* - Bug fixed that prevented the plugin from working if specific other plugins
|
|
* weren't present.
|
|
*
|
|
* Version 1.02:
|
|
* - Updated for RPG Maker MV version 1.5.0.
|
|
*
|
|
* Version 1.01:
|
|
* - Compatibility update with Button Common Events.
|
|
* - Added <Config Key: text>, <Config Text: text>, and <Config Required>
|
|
* comment tags. These tags work together with Button Common Events.
|
|
*
|
|
* Version 1.00:
|
|
* - Finished Plugin!
|
|
*/
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Parameter Variables
|
|
//=============================================================================
|
|
|
|
Yanfly.Parameters = PluginManager.parameters('YEP_KeyboardConfig');
|
|
Yanfly.Param = Yanfly.Param || {};
|
|
|
|
Yanfly.Param.KeyConfigName = String(Yanfly.Parameters['Command Name']);
|
|
Yanfly.SetupParameters = function() {
|
|
if (Imported.YEP_ButtonCommonEvents) {
|
|
Yanfly.Param.KeyConfigEv = String(Yanfly.Parameters['Button Events']);
|
|
Yanfly.Param.KeyConfigEv = Yanfly.Param.KeyConfigEv.split(' ');
|
|
for (var i = 0; i < Yanfly.Param.KeyConfigEv.length; ++i) {
|
|
Yanfly.Param.KeyConfigEv[i] =
|
|
parseInt(Yanfly.Param.KeyConfigEv[i]);
|
|
};
|
|
Yanfly.Param.KeyConfigKeys = {};
|
|
for (var key in Yanfly.Param.BCEList) {
|
|
value = Yanfly.Param.BCEList[key];
|
|
Yanfly.Param.KeyConfigKeys[value] = key;
|
|
}
|
|
var array = JSON.parse(Yanfly.Parameters['Button Events List'] || '[]');
|
|
for (var j = 0; j < array.length; ++j) {
|
|
if (Yanfly.Param.KeyConfigEv.contains(array[j])) continue;
|
|
Yanfly.Param.KeyConfigEv.push(parseInt(array[j]));
|
|
}
|
|
} else {
|
|
Yanfly.Param.KeyConfigEv = [];
|
|
};
|
|
};
|
|
Yanfly.SetupParameters();
|
|
|
|
Yanfly.Param.KeyConfigKeyHelp = String(Yanfly.Parameters['Key Help']);
|
|
Yanfly.Param.KeyConfigDefaultTx = String(Yanfly.Parameters['Default Layout']);
|
|
Yanfly.Param.KeyConfigDefaultHelp = String(Yanfly.Parameters['Default Help']);
|
|
Yanfly.Param.KeyConfigWasdTx = String(Yanfly.Parameters['WASD Layout']);
|
|
Yanfly.Param.KeyConfigWasdHelp = String(Yanfly.Parameters['WASD Help']);
|
|
Yanfly.Param.KeyConfigFinishTx = String(Yanfly.Parameters['Finish Config']);
|
|
Yanfly.Param.KeyConfigFinishHelp = String(Yanfly.Parameters['Finish Help']);
|
|
Yanfly.Param.KeyConfigAssignColor = Number(Yanfly.Parameters['Assigned Color']);
|
|
Yanfly.Param.KeyConfigActionColor = Number(Yanfly.Parameters['Action Color']);
|
|
Yanfly.Param.KeyConfigClearTx = String(Yanfly.Parameters['Clear Text']);
|
|
|
|
Yanfly.Param.KeyConfigOkKey = String(Yanfly.Parameters['OK Key']);
|
|
Yanfly.Param.KeyConfigOkTx = String(Yanfly.Parameters['OK Text']);
|
|
Yanfly.Param.KeyConfigEscKey = String(Yanfly.Parameters['Escape Key']);
|
|
Yanfly.Param.KeyConfigEscTx = String(Yanfly.Parameters['Escape Text']);
|
|
Yanfly.Param.KeyConfigCancelKey = String(Yanfly.Parameters['Cancel Key']);
|
|
Yanfly.Param.KeyConfigCancelTx = String(Yanfly.Parameters['Cancel Text']);
|
|
Yanfly.Param.KeyConfigMenuKey = String(Yanfly.Parameters['Menu Key']);
|
|
Yanfly.Param.KeyConfigMenuTx = String(Yanfly.Parameters['Menu Text']);
|
|
Yanfly.Param.KeyConfigShiftKey = String(Yanfly.Parameters['Shift Key']);
|
|
Yanfly.Param.KeyConfigShiftTx = String(Yanfly.Parameters['Shift Text']);
|
|
Yanfly.Param.KeyConfigPageUpKey = String(Yanfly.Parameters['PageUp Key']);
|
|
Yanfly.Param.KeyConfigPageUpTx = String(Yanfly.Parameters['PageUp Text']);
|
|
Yanfly.Param.KeyConfigPageDnKey = String(Yanfly.Parameters['PageDown Key']);
|
|
Yanfly.Param.KeyConfigPageDnTx = String(Yanfly.Parameters['PageDown Text']);
|
|
Yanfly.Param.KeyConfigLeftKey = String(Yanfly.Parameters['Left Key']);
|
|
Yanfly.Param.KeyConfigLeftTx = String(Yanfly.Parameters['Left Text']);
|
|
Yanfly.Param.KeyConfigUpKey = String(Yanfly.Parameters['Up Key']);
|
|
Yanfly.Param.KeyConfigUpTx = String(Yanfly.Parameters['Up Text']);
|
|
Yanfly.Param.KeyConfigRightKey = String(Yanfly.Parameters['Right Key']);
|
|
Yanfly.Param.KeyConfigRightTx = String(Yanfly.Parameters['Right Text']);
|
|
Yanfly.Param.KeyConfigDownKey = String(Yanfly.Parameters['Down Key']);
|
|
Yanfly.Param.KeyConfigDownTx = String(Yanfly.Parameters['Down Text']);
|
|
|
|
//=============================================================================
|
|
// DataManager
|
|
//=============================================================================
|
|
|
|
Yanfly.KeyConfig.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
|
|
DataManager.isDatabaseLoaded = function() {
|
|
if (!Yanfly.KeyConfig.DataManager_isDatabaseLoaded.call(this)) return false;
|
|
this.processKeyConfigCommentTags($dataCommonEvents);
|
|
return true;
|
|
};
|
|
|
|
DataManager.processKeyConfigCommentTags = function(group) {
|
|
Yanfly.KeyConfig.RequiredCommonEvents = [];
|
|
for (var n = 1; n < group.length; n++) {
|
|
var obj = group[n];
|
|
var list = obj.list;
|
|
var length = list.length;
|
|
var comment = '';
|
|
for (var i = 0; i < length; ++i) {
|
|
var ev = list[i];
|
|
if ([108, 408].contains(ev.code)) comment += ev.parameters[0] + '\n';
|
|
}
|
|
this.extraKeyConfigCommentTags(obj, comment);
|
|
}
|
|
};
|
|
|
|
DataManager.extraKeyConfigCommentTags = function(obj, comment) {
|
|
obj.configKey = obj.name;
|
|
obj.configText = obj.name;
|
|
obj.configRequired = false;
|
|
if (comment === '') return;
|
|
if (!Imported.YEP_ButtonCommonEvents) return;
|
|
var notedata = comment.split(/[\r\n]+/);
|
|
for (var i = 0; i < notedata.length; ++i) {
|
|
var line = notedata[i];
|
|
if (line.match(/<(?:CONFIG KEY):[ ](.*)>/i)) {
|
|
obj.configKey = String(RegExp.$1);
|
|
} else if (line.match(/<(?:CONFIG TEXT):[ ](.*)>/i)) {
|
|
obj.configText = String(RegExp.$1);
|
|
} else if (line.match(/<(?:CONFIG REQUIRED)>/i)) {
|
|
obj.configRequired = true;
|
|
Yanfly.KeyConfig.RequiredCommonEvents.push(obj.id);
|
|
}
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Input
|
|
//=============================================================================
|
|
|
|
if (Imported.YEP_ButtonCommonEvents) {
|
|
|
|
Input._revertButton = function(button) {
|
|
};
|
|
|
|
Input._switchButton = function(button) {
|
|
};
|
|
|
|
}; // Imported.YEP_ButtonCommonEvents
|
|
|
|
//=============================================================================
|
|
// ConfigManager
|
|
//=============================================================================
|
|
|
|
ConfigManager.keyMapper = JSON.parse(JSON.stringify(Input.keyMapper));
|
|
ConfigManager.defaultMap = JSON.parse(JSON.stringify(Input.keyMapper));
|
|
ConfigManager.wasdMap = {
|
|
9: 'tab', 13: 'ok', 16: 'shift', 17: 'control', 18: 'control', 27: 'escape',
|
|
32: 'ok', 33: 'pageup', 34: 'pagedown', 37: 'left', 38: 'up', 39: 'right',
|
|
40: 'down', 87: 'up', 65: 'left', 83: 'down', 68: 'right', 74: 'ok',
|
|
75: 'escape', 77: 'menu', 219: 'pageup', 221: 'pagedown', 45: 'escape',
|
|
46: 'ok', 35: 'escape', 36: 'menu', 96: 'escape', 98: 'down', 100: 'left',
|
|
102: 'right', 104: 'up', 120: 'debug'
|
|
};
|
|
|
|
if (Imported.YEP_ButtonCommonEvents) {
|
|
if (Yanfly.Param.BCEList['tilde'] !== 0) ConfigManager.wasdMap[192] = 'tilde';
|
|
if (Yanfly.Param.BCEList['1'] !== 0) ConfigManager.wasdMap[49] = '1';
|
|
if (Yanfly.Param.BCEList['2'] !== 0) ConfigManager.wasdMap[50] = '2';
|
|
if (Yanfly.Param.BCEList['3'] !== 0) ConfigManager.wasdMap[51] = '3';
|
|
if (Yanfly.Param.BCEList['4'] !== 0) ConfigManager.wasdMap[52] = '4';
|
|
if (Yanfly.Param.BCEList['5'] !== 0) ConfigManager.wasdMap[53] = '5';
|
|
if (Yanfly.Param.BCEList['6'] !== 0) ConfigManager.wasdMap[54] = '6';
|
|
if (Yanfly.Param.BCEList['7'] !== 0) ConfigManager.wasdMap[55] = '7';
|
|
if (Yanfly.Param.BCEList['8'] !== 0) ConfigManager.wasdMap[56] = '8';
|
|
if (Yanfly.Param.BCEList['9'] !== 0) ConfigManager.wasdMap[57] = '9';
|
|
if (Yanfly.Param.BCEList['0'] !== 0) ConfigManager.wasdMap[48] = '0';
|
|
if (Yanfly.Param.BCEList['minus'] !== 0) ConfigManager.wasdMap[189] = 'minus';
|
|
if (Yanfly.Param.BCEList['equal'] !== 0) ConfigManager.wasdMap[187] = 'equal';
|
|
|
|
if (Yanfly.Param.BCEList['q'] !== 0) ConfigManager.wasdMap[81] = 'q';
|
|
if (Yanfly.Param.BCEList['w'] !== 0) ConfigManager.wasdMap[87] = 'w';
|
|
if (Yanfly.Param.BCEList['e'] !== 0) ConfigManager.wasdMap[69] = 'e';
|
|
if (Yanfly.Param.BCEList['r'] !== 0) ConfigManager.wasdMap[82] = 'r';
|
|
if (Yanfly.Param.BCEList['t'] !== 0) ConfigManager.wasdMap[84] = 't';
|
|
if (Yanfly.Param.BCEList['y'] !== 0) ConfigManager.wasdMap[89] = 'y';
|
|
if (Yanfly.Param.BCEList['u'] !== 0) ConfigManager.wasdMap[85] = 'u';
|
|
if (Yanfly.Param.BCEList['i'] !== 0) ConfigManager.wasdMap[73] = 'i';
|
|
if (Yanfly.Param.BCEList['o'] !== 0) ConfigManager.wasdMap[79] = 'o';
|
|
if (Yanfly.Param.BCEList['p'] !== 0) ConfigManager.wasdMap[80] = 'p';
|
|
if (Yanfly.Param.BCEList['foreBrack'] !== 0) ConfigManager.wasdMap[219] =
|
|
'foreBrack';
|
|
if (Yanfly.Param.BCEList['backBrack'] !== 0) ConfigManager.wasdMap[221] =
|
|
'backBrack';
|
|
if (Yanfly.Param.BCEList['backSlash'] !== 0) ConfigManager.wasdMap[220] =
|
|
'backSlash';
|
|
|
|
if (Yanfly.Param.BCEList['a'] !== 0) ConfigManager.wasdMap[65] = 'a';
|
|
if (Yanfly.Param.BCEList['s'] !== 0) ConfigManager.wasdMap[83] = 's';
|
|
if (Yanfly.Param.BCEList['d'] !== 0) ConfigManager.wasdMap[68] = 'd';
|
|
if (Yanfly.Param.BCEList['f'] !== 0) ConfigManager.wasdMap[70] = 'f';
|
|
if (Yanfly.Param.BCEList['g'] !== 0) ConfigManager.wasdMap[71] = 'g';
|
|
if (Yanfly.Param.BCEList['h'] !== 0) ConfigManager.wasdMap[72] = 'h';
|
|
if (Yanfly.Param.BCEList['j'] !== 0) ConfigManager.wasdMap[74] = 'j';
|
|
if (Yanfly.Param.BCEList['k'] !== 0) ConfigManager.wasdMap[75] = 'k';
|
|
if (Yanfly.Param.BCEList['l'] !== 0) ConfigManager.wasdMap[76] = 'l';
|
|
if (Yanfly.Param.BCEList['semicolon'] !== 0) ConfigManager.wasdMap[186] =
|
|
'semicolon';
|
|
if (Yanfly.Param.BCEList['quote'] !== 0) ConfigManager.wasdMap[222] = 'quote';
|
|
if (Yanfly.Param.BCEList['enter'] !== 0) ConfigManager.wasdMap[13] = 'enter';
|
|
|
|
if (Yanfly.Param.BCEList['keyShift'] !== 0) ConfigManager.wasdMap[16] =
|
|
'keyShift';
|
|
if (Yanfly.Param.BCEList['z'] !== 0) ConfigManager.wasdMap[90] = 'z';
|
|
if (Yanfly.Param.BCEList['x'] !== 0) ConfigManager.wasdMap[88] = 'x';
|
|
if (Yanfly.Param.BCEList['c'] !== 0) ConfigManager.wasdMap[67] = 'c';
|
|
if (Yanfly.Param.BCEList['v'] !== 0) ConfigManager.wasdMap[86] = 'v';
|
|
if (Yanfly.Param.BCEList['b'] !== 0) ConfigManager.wasdMap[66] = 'b';
|
|
if (Yanfly.Param.BCEList['n'] !== 0) ConfigManager.wasdMap[78] = 'n';
|
|
if (Yanfly.Param.BCEList['m'] !== 0) ConfigManager.wasdMap[77] = 'm';
|
|
if (Yanfly.Param.BCEList['comma'] !== 0) ConfigManager.wasdMap[188] = 'comma';
|
|
if (Yanfly.Param.BCEList['period'] !== 0) ConfigManager.wasdMap[190] = 'period';
|
|
if (Yanfly.Param.BCEList['foreSlash'] !== 0) ConfigManager.wasdMap[191] =
|
|
'foreSlash';
|
|
|
|
if (Yanfly.Param.BCEList['space'] !== 0) ConfigManager.wasdMap[32] = 'space';
|
|
if (Yanfly.Param.BCEList['dirLeft'] !== 0) ConfigManager.wasdMap[37] =
|
|
'dirLeft';
|
|
if (Yanfly.Param.BCEList['dirUp'] !== 0) ConfigManager.wasdMap[38] = 'dirUp';
|
|
if (Yanfly.Param.BCEList['dirRight'] !== 0) ConfigManager.wasdMap[39] =
|
|
'dirRight';
|
|
if (Yanfly.Param.BCEList['dirDown'] !== 0) ConfigManager.wasdMap[40] =
|
|
'dirDown';
|
|
if (Yanfly.Param.BCEList['ins'] !== 0) ConfigManager.wasdMap[45] = 'ins';
|
|
if (Yanfly.Param.BCEList['del'] !== 0) ConfigManager.wasdMap[46] = 'del';
|
|
if (Yanfly.Param.BCEList['home'] !== 0) ConfigManager.wasdMap[36] = 'home';
|
|
if (Yanfly.Param.BCEList['end'] !== 0) ConfigManager.wasdMap[35] = 'end';
|
|
if (Yanfly.Param.BCEList['pageUp'] !== 0) ConfigManager.wasdMap[33] = 'pageUp';
|
|
if (Yanfly.Param.BCEList['pageDown'] !== 0) ConfigManager.wasdMap[34] =
|
|
'pageDown';
|
|
|
|
if (Yanfly.Param.BCEList['num0'] !== 0) ConfigManager.wasdMap[96] = 'num0';
|
|
if (Yanfly.Param.BCEList['num1'] !== 0) ConfigManager.wasdMap[97] = 'num1';
|
|
if (Yanfly.Param.BCEList['num2'] !== 0) ConfigManager.wasdMap[98] = 'num2';
|
|
if (Yanfly.Param.BCEList['num3'] !== 0) ConfigManager.wasdMap[99] = 'num3';
|
|
if (Yanfly.Param.BCEList['num4'] !== 0) ConfigManager.wasdMap[100] = 'num4';
|
|
if (Yanfly.Param.BCEList['num5'] !== 0) ConfigManager.wasdMap[101] = 'num5';
|
|
if (Yanfly.Param.BCEList['num6'] !== 0) ConfigManager.wasdMap[102] = 'num6';
|
|
if (Yanfly.Param.BCEList['num7'] !== 0) ConfigManager.wasdMap[103] = 'num7';
|
|
if (Yanfly.Param.BCEList['num8'] !== 0) ConfigManager.wasdMap[104] = 'num8';
|
|
if (Yanfly.Param.BCEList['num9'] !== 0) ConfigManager.wasdMap[105] = 'num9';
|
|
if (Yanfly.Param.BCEList['numPeriod'] !== 0) ConfigManager.wasdMap[110] =
|
|
'numPeriod';
|
|
if (Yanfly.Param.BCEList['numPlus'] !== 0) ConfigManager.wasdMap[107] =
|
|
'numPlus';
|
|
if (Yanfly.Param.BCEList['numMinus'] !== 0) ConfigManager.wasdMap[109] =
|
|
'numMinus';
|
|
if (Yanfly.Param.BCEList['numTimes'] !== 0) ConfigManager.wasdMap[106] =
|
|
'numTimes';
|
|
if (Yanfly.Param.BCEList['numDivide'] !== 0) ConfigManager.wasdMap[111] =
|
|
'numDivide';
|
|
};
|
|
|
|
Yanfly.KeyConfig.ConfigManager_makeData = ConfigManager.makeData;
|
|
ConfigManager.makeData = function() {
|
|
var config = Yanfly.KeyConfig.ConfigManager_makeData.call(this);
|
|
config.keyMapper = this.keyMapper;
|
|
return config;
|
|
};
|
|
|
|
Yanfly.KeyConfig.ConfigManager_applyData = ConfigManager.applyData;
|
|
ConfigManager.applyData = function(config) {
|
|
Yanfly.KeyConfig.ConfigManager_applyData.call(this, config);
|
|
this.keyMapper = this.readKeyConfig(config, 'keyMapper');
|
|
this.applyKeyConfig();
|
|
};
|
|
|
|
ConfigManager.applyKeyConfig = function() {
|
|
Input.keyMapper = this.keyMapper;
|
|
Input.update();
|
|
Input.clear();
|
|
};
|
|
|
|
ConfigManager.readKeyConfig = function(config, name) {
|
|
var value = config[name];
|
|
if (value !== undefined) {
|
|
return value;
|
|
} else {
|
|
return JSON.parse(JSON.stringify(ConfigManager.defaultMap));
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_Options
|
|
//=============================================================================
|
|
|
|
Yanfly.KeyConfig.Window_Options_addGeneralOptions =
|
|
Window_Options.prototype.addGeneralOptions;
|
|
Window_Options.prototype.addGeneralOptions = function() {
|
|
Yanfly.KeyConfig.Window_Options_addGeneralOptions.call(this);
|
|
if (!Imported.YEP_OptionsCore) this.addKeyConfigCommand();
|
|
};
|
|
|
|
Window_Options.prototype.addKeyConfigCommand = function() {
|
|
if (Utils.isMobileDevice()) return;
|
|
this.addCommand(Yanfly.Param.KeyConfigName, 'keyConfig', true);
|
|
};
|
|
|
|
if (!Imported.YEP_OptionsCore) {
|
|
|
|
Yanfly.KeyConfig.Window_Options_drawItem =
|
|
Window_Options.prototype.drawItem;
|
|
Window_Options.prototype.drawItem = function(index) {
|
|
if (this.commandSymbol(index) === 'keyConfig') {
|
|
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.KeyConfig.Window_Options_drawItem.call(this, index);
|
|
}
|
|
};
|
|
|
|
Yanfly.KeyConfig.Window_Options_processOk =
|
|
Window_Options.prototype.processOk;
|
|
Window_Options.prototype.processOk = function() {
|
|
if (this.commandSymbol(this.index()) === 'keyConfig') {
|
|
Window_Command.prototype.processOk.call(this);
|
|
} else {
|
|
Yanfly.KeyConfig.Window_Options_processOk.call(this);
|
|
}
|
|
};
|
|
|
|
}; // Imported.YEP_OptionsCore
|
|
|
|
|
|
//=============================================================================
|
|
// Window_KeyConfig
|
|
//=============================================================================
|
|
|
|
function Window_KeyConfig() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
Window_KeyConfig._keyLayout = [
|
|
'~', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', ' ', 'Ins',
|
|
'Home', 'PgUp', ' ', '#pD/', '*', '#pD-', ' ', 'Q', 'W', 'E', 'R', 'T', 'Y',
|
|
'U', 'I', 'O', 'P', '[', ']', '\\', 'Del', 'End', 'PgDn', '#pD7', '#pD8',
|
|
'#pD9', '+', ' ', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', "'",
|
|
'Enter', 'Enter', ' ', ' ', ' ', '#pD4', '#pD5', '#pD6', '+', 'Shift',
|
|
'Shift', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'Shift', 'Shift',
|
|
' ', '↑', ' ', '#pD1', '#pD2', '#pD3', 'En', ' ', ' ', ' ', 'Space', 'Space',
|
|
'Space', 'Space', 'Space', 'Space', 'Space', ' ', ' ', ' ', ' ', '←', '↓',
|
|
'→', '#pD0', '#pD0', '#pD.', 'En'
|
|
];
|
|
|
|
Window_KeyConfig._refId = {
|
|
'~': 192, '0': 48, '1': 49, '2': 50, '3': 51, '4': 52,
|
|
'5': 53, '6': 54, '7': 55, '8': 56, '9': 57, '-': 189,
|
|
'=': 187, 'Ins': 45, 'Home': 36, 'PgUp': 33, '#pD/': 111, '*': 106,
|
|
'#pD-': 109, 'Q': 81, 'W': 87, 'E': 69, 'R': 82, 'T': 84,
|
|
'Y': 89, 'U': 85, 'I': 73, 'O': 79, 'P': 80, '[': 219,
|
|
']': 221, '\\': 220, 'Del': 46, 'End': 35, 'PgDn': 34, '#pD7': 103,
|
|
'#pD8': 104, '#pD9': 105, '+': 107, 'A': 65, 'S': 83, 'D': 68,
|
|
'F': 70, 'G': 71, 'H': 72, 'J': 74, 'K': 75, 'L': 76,
|
|
';': 186, "'": 222, 'Enter': 13, '#pD4': 100, '#pD5': 101, '#pD6': 102,
|
|
'Shift': 16, 'Z': 90, 'X': 88, 'C': 67, 'V': 86, 'B': 66,
|
|
'N': 78, 'M': 77, ',': 188, '.': 190, '/': 191, 'Shift': 16,
|
|
'↑': 38, '#pD1': 97, '#pD2': 98, '#pD3': 99, 'En': 13, 'Space': 32,
|
|
'←': 37, '↓': 40, '→': 39, '#pD0': 96, '#pD.': 110
|
|
};
|
|
|
|
Window_KeyConfig.prototype = Object.create(Window_Command.prototype);
|
|
Window_KeyConfig.prototype.constructor = Window_KeyConfig;
|
|
|
|
Window_KeyConfig.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_KeyConfig.prototype.windowWidth = function() {
|
|
return Graphics.boxWidth;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.maxCols = function() {
|
|
return 21;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.spacing = function() {
|
|
return 1;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.itemHeight = function() {
|
|
return this.lineHeight() * 2;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.itemTextAlign = function() {
|
|
return 'center';
|
|
};
|
|
|
|
Window_KeyConfig.prototype.makeCommandList = function(index) {
|
|
for (var i = 0; i < Window_KeyConfig._keyLayout.length; ++i) {
|
|
var keyName = Window_KeyConfig._keyLayout[i];
|
|
var enabled = this.isKeyEnabled(keyName);
|
|
this.addCommand(keyName, 'key', enabled);
|
|
}
|
|
this.addCommand(Yanfly.Param.KeyConfigDefaultTx, 'default', true);
|
|
for (var i = 0; i < 6; ++i) this.addCommand(' ', 'default', true);
|
|
this.addCommand(Yanfly.Param.KeyConfigWasdTx, 'wasd', true);
|
|
for (var i = 0; i < 6; ++i) this.addCommand(' ', 'wasd', true);
|
|
this.addCommand(Yanfly.Param.KeyConfigFinishTx, 'cancel', true);
|
|
for (var i = 0; i < 6; ++i) this.addCommand(' ', 'cancel', true);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.isKeyEnabled = function(keyName) {
|
|
return !([' ', 'Enter', 'En', '↑', '←', '↓', '→'].contains(keyName));
|
|
};
|
|
|
|
Window_KeyConfig.prototype.itemRect = function(index) {
|
|
var rect = Window_Selectable.prototype.itemRect.call(this, index);
|
|
var maxCols = this.maxCols();
|
|
if ([41, 62].contains(index)) {
|
|
rect.y = Math.floor(41 / maxCols) * rect.height - this._scrollY;
|
|
rect.height = this.itemHeight() * 2;
|
|
} else if ([54, 55].contains(index)) {
|
|
rect.x = 54 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 2 - this.spacing();
|
|
} else if ([63, 64].contains(index)) {
|
|
rect.x = 63 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 2 - this.spacing();
|
|
} else if ([75, 76].contains(index)) {
|
|
rect.x = 75 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 2 - this.spacing();
|
|
} else if ([83, 104].contains(index)) {
|
|
rect.y = Math.floor(83 / maxCols) * rect.height - this._scrollY;
|
|
rect.height = this.itemHeight() * 2;
|
|
} else if ([87, 88, 89, 90, 91, 92, 93].contains(index)) {
|
|
rect.x = 87 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 7 - this.spacing();
|
|
} else if ([101, 102].contains(index)) {
|
|
rect.x = 101 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 2 - this.spacing();
|
|
} else if ([105, 106, 107, 108, 109, 110, 111].contains(index)) {
|
|
rect.x = 105 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 7 - this.spacing();
|
|
} else if ([112, 113, 114, 115, 116, 117, 118].contains(index)) {
|
|
rect.x = 112 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 7 - this.spacing();
|
|
} else if ([119, 120, 121, 122, 123, 124, 125].contains(index)) {
|
|
rect.x = 119 % maxCols * (rect.width + this.spacing()) - this._scrollX;
|
|
rect.width = (this.itemWidth() + this.spacing()) * 7 - this.spacing();
|
|
}
|
|
rect.y += Math.max(0, (this.contents.height - this.lineHeight() * 12) / 2);
|
|
return rect;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.leaveEmpty = function(index) {
|
|
return [55, 56, 57, 58, 62, 64, 76, 77, 79, 84, 85, 86, 88, 89, 90, 91,
|
|
92, 93, 94, 95, 96, 97, 102, 104, 106, 107, 108, 109, 110, 111, 113, 114,
|
|
115, 116, 117, 118, 120, 121, 122, 123, 124, 125].contains(index);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.drawItem = function(index) {
|
|
if (this.leaveEmpty(index)) return;
|
|
this.drawItemRect(index);
|
|
this.drawItemKey(index);
|
|
this.drawItemAction(index);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.drawItemRect = function(index) {
|
|
var rect = this.itemRect(index);
|
|
var color = this.getRectColor(index);
|
|
this.drawRect(rect.x+1, rect.y+1, rect.width-2, rect.height-2, color);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.getRectColor = function(index) {
|
|
if (index > 104) return this.gaugeBackColor();
|
|
var key = Window_KeyConfig._refId[this.commandName(index)];
|
|
var action = Input.keyMapper[key];
|
|
if (action !== undefined) {
|
|
return this.textColor(Yanfly.Param.KeyConfigAssignColor);
|
|
} else {
|
|
return this.gaugeBackColor();
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.drawRect = function(dx, dy, dw, dh, color) {
|
|
this.changePaintOpacity(false);
|
|
this.contents.fillRect(dx, dy, dw, dh, color);
|
|
this.changePaintOpacity(true);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.drawItemKey = function(index) {
|
|
this.resetFontSettings();
|
|
this.contents.fontSize -= 8;
|
|
this.resetTextColor();
|
|
this.changePaintOpacity(true);
|
|
var rect = this.itemRectForText(index);
|
|
var align = this.itemTextAlign();
|
|
this.drawText(this.visualName(index), rect.x, rect.y, rect.width, align);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.visualName = function(index) {
|
|
var text = this._list[index].name;
|
|
text = text.replace(/#pD/gi, '' );
|
|
return text;
|
|
};
|
|
|
|
Window_KeyConfig.prototype.drawItemAction = function(index) {
|
|
var key = Window_KeyConfig._refId[this.commandName(index)];
|
|
var action = Input.keyMapper[key];
|
|
if (action === undefined) return;
|
|
this.resetFontSettings();
|
|
this.contents.fontSize -= 8;
|
|
var color = this.textColor(Yanfly.Param.KeyConfigActionColor);
|
|
this.changeTextColor(color);
|
|
this.changePaintOpacity(true);
|
|
var rect = this.itemRectForText(index);
|
|
rect.y += this.lineHeight();
|
|
var align = this.itemTextAlign();
|
|
this.drawText(this.actionKey(action), rect.x, rect.y, rect.width, align);
|
|
};
|
|
|
|
Window_KeyConfig.prototype.actionKey = function(action) {
|
|
switch(action) {
|
|
case 'ok':
|
|
return Yanfly.Param.KeyConfigOkKey;
|
|
break;
|
|
case 'escape':
|
|
return Yanfly.Param.KeyConfigEscKey;
|
|
break;
|
|
case 'cancel':
|
|
return Yanfly.Param.KeyConfigCancelKey;
|
|
break;
|
|
case 'menu':
|
|
return Yanfly.Param.KeyConfigMenuKey;
|
|
break;
|
|
case 'shift':
|
|
return Yanfly.Param.KeyConfigShiftKey;
|
|
break;
|
|
case 'pageup':
|
|
return Yanfly.Param.KeyConfigPageUpKey;
|
|
break;
|
|
case 'pagedown':
|
|
return Yanfly.Param.KeyConfigPageDnKey;
|
|
break;
|
|
case 'left':
|
|
return Yanfly.Param.KeyConfigLeftKey;
|
|
break;
|
|
case 'up':
|
|
return Yanfly.Param.KeyConfigUpKey;
|
|
break;
|
|
case 'right':
|
|
return Yanfly.Param.KeyConfigRightKey;
|
|
break;
|
|
case 'down':
|
|
return Yanfly.Param.KeyConfigDownKey;
|
|
break;
|
|
default:
|
|
if (Imported.YEP_ButtonCommonEvents) {
|
|
if (Yanfly.Param.BCEList[action]) {
|
|
var id = Yanfly.Param.BCEList[action];
|
|
var ev = $dataCommonEvents[id];
|
|
return ev.configKey;
|
|
}
|
|
}
|
|
return '';
|
|
break;
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.cursorDown = function(wrap) {
|
|
var index = this.index();
|
|
if (index >= 105) {
|
|
this.select(index - 104);
|
|
} else if ([41, 62].contains(index)) {
|
|
this.select(83);
|
|
} else if ([83, 104].contains(index)) {
|
|
this.select(125);
|
|
} else {
|
|
Window_Command.prototype.cursorDown.call(this, wrap);
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.cursorUp = function(wrap) {
|
|
var index = this.index();
|
|
if (index === 0) {
|
|
this.select(125);
|
|
} else if (index <= 20) {
|
|
this.select(index + 104);
|
|
} else if ([41, 62].contains(index)) {
|
|
this.select(20);
|
|
} else if ([83, 104].contains(index)) {
|
|
this.select(41);
|
|
} else {
|
|
Window_Command.prototype.cursorUp.call(this, wrap);
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.cursorRight = function(wrap) {
|
|
var index = this.index();
|
|
if ([54, 55].contains(index)) {
|
|
this.select(56);
|
|
} else if ([63, 64].contains(index)) {
|
|
this.select(65);
|
|
} else if ([75, 76].contains(index)) {
|
|
this.select(77);
|
|
} else if ([87, 88, 89, 90, 91, 92, 93].contains(index)) {
|
|
this.select(94);
|
|
} else if ([101, 102].contains(index)) {
|
|
this.select(103);
|
|
} else if ([105, 106, 107, 108, 109, 110, 111].contains(index)) {
|
|
this.select(112);
|
|
} else if ([112, 113, 114, 115, 116, 117, 118].contains(index)) {
|
|
this.select(119);
|
|
} else if ([119, 120, 121, 122, 123, 124, 125].contains(index)) {
|
|
this.select(0);
|
|
} else {
|
|
Window_Command.prototype.cursorRight.call(this, wrap);
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.cursorLeft = function(wrap) {
|
|
var index = this.index();
|
|
if (index === 0) {
|
|
this.select(125);
|
|
} else if ([54, 55].contains(index)) {
|
|
this.select(53);
|
|
} else if ([63, 64].contains(index)) {
|
|
this.select(62);
|
|
} else if ([75, 76].contains(index)) {
|
|
this.select(74);
|
|
} else if ([87, 88, 89, 90, 91, 92, 93].contains(index)) {
|
|
this.select(86);
|
|
} else if ([101, 102].contains(index)) {
|
|
this.select(100);
|
|
} else if ([105, 106, 107, 108, 109, 110, 111].contains(index)) {
|
|
this.select(104);
|
|
} else if ([112, 113, 114, 115, 116, 117, 118].contains(index)) {
|
|
this.select(111);
|
|
} else if ([119, 120, 121, 122, 123, 124, 125].contains(index)) {
|
|
this.select(118);
|
|
} else {
|
|
Window_Command.prototype.cursorLeft.call(this, wrap);
|
|
}
|
|
};
|
|
|
|
Window_KeyConfig.prototype.updateHelp = function() {
|
|
if (!this._helpWindow) return;
|
|
switch (this.currentSymbol()) {
|
|
case 'key':
|
|
this._helpWindow.setText(Yanfly.Param.KeyConfigKeyHelp);
|
|
break;
|
|
case 'default':
|
|
this._helpWindow.setText(Yanfly.Param.KeyConfigDefaultHelp);
|
|
break;
|
|
case 'wasd':
|
|
this._helpWindow.setText(Yanfly.Param.KeyConfigWasdHelp);
|
|
break;
|
|
case 'cancel':
|
|
this._helpWindow.setText(Yanfly.Param.KeyConfigFinishHelp);
|
|
break;
|
|
default:
|
|
this._helpWindow.clear();
|
|
break;
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_KeyAction
|
|
//=============================================================================
|
|
|
|
function Window_KeyAction() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
Window_KeyAction.prototype = Object.create(Window_Command.prototype);
|
|
Window_KeyAction.prototype.constructor = Window_KeyAction;
|
|
|
|
Window_KeyAction.prototype.initialize = function() {
|
|
Window_Command.prototype.initialize.call(this, 0, 0);
|
|
this.x = (Graphics.boxWidth - this.width) / 2;
|
|
this.y = (Graphics.boxHeight - this.height) / 2;
|
|
this.openness = 0;
|
|
this.deactivate();
|
|
};
|
|
|
|
Window_KeyAction.prototype.windowWidth = function() {
|
|
return Graphics.boxWidth / 2;
|
|
};
|
|
|
|
Window_KeyAction.prototype.windowHeight = function() {
|
|
var value = this.fittingHeight(this.numVisibleRows())
|
|
return Math.min(value, Graphics.boxHeight);
|
|
};
|
|
|
|
Window_KeyAction.prototype.makeCommandList = function() {
|
|
this.addCommand(Yanfly.Param.KeyConfigClearTx, 'ok', true, 'clear');
|
|
this.addCommand(Yanfly.Param.KeyConfigOkTx, 'ok', true, 'ok');
|
|
this.addCommand(Yanfly.Param.KeyConfigEscTx, 'ok', true, 'escape');
|
|
this.addCommand(Yanfly.Param.KeyConfigCancelTx, 'ok', true, 'cancel');
|
|
this.addCommand(Yanfly.Param.KeyConfigMenuTx, 'ok', true, 'menu');
|
|
this.addCommand(Yanfly.Param.KeyConfigShiftTx, 'ok', true, 'shift');
|
|
this.addCommand(Yanfly.Param.KeyConfigPageUpTx, 'ok', true, 'pageup');
|
|
this.addCommand(Yanfly.Param.KeyConfigPageDnTx, 'ok', true, 'pagedown');
|
|
this.addCommand(Yanfly.Param.KeyConfigLeftTx, 'ok', true, 'left');
|
|
this.addCommand(Yanfly.Param.KeyConfigUpTx, 'ok', true, 'up');
|
|
this.addCommand(Yanfly.Param.KeyConfigRightTx, 'ok', true, 'right');
|
|
this.addCommand(Yanfly.Param.KeyConfigDownTx, 'ok', true, 'down');
|
|
if (Imported.YEP_ButtonCommonEvents) this.addButtonCommonEvents();
|
|
};
|
|
|
|
Window_KeyAction.prototype.addButtonCommonEvents = function() {
|
|
var length = Yanfly.Param.KeyConfigEv.length;
|
|
for (var i = 0 ; i < length; ++i) {
|
|
var eventId = Yanfly.Param.KeyConfigEv[i];
|
|
if (Yanfly.Param.KeyConfigKeys[eventId]) {
|
|
var ev = $dataCommonEvents[eventId];
|
|
var key = Yanfly.Param.KeyConfigKeys[eventId];
|
|
var text = ev.configText;
|
|
this.addCommand(text, 'ok', true, key);
|
|
}
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Scene_Options
|
|
//=============================================================================
|
|
|
|
Yanfly.KeyConfig.Scene_Options_createOptionsWindow =
|
|
Scene_Options.prototype.createOptionsWindow;
|
|
Scene_Options.prototype.createOptionsWindow = function() {
|
|
Yanfly.KeyConfig.Scene_Options_createOptionsWindow.call(this);
|
|
this._optionsWindow.setHandler('keyConfig', this.commandKeyConfig.bind(this));
|
|
};
|
|
|
|
Scene_Options.prototype.commandKeyConfig = function() {
|
|
SceneManager.push(Scene_KeyConfig);
|
|
};
|
|
|
|
//=============================================================================
|
|
// Scene_KeyConfig
|
|
//=============================================================================
|
|
|
|
function Scene_KeyConfig() {
|
|
this.initialize.apply(this, arguments);
|
|
}
|
|
|
|
Scene_KeyConfig.prototype = Object.create(Scene_MenuBase.prototype);
|
|
Scene_KeyConfig.prototype.constructor = Scene_KeyConfig;
|
|
|
|
Scene_KeyConfig.prototype.initialize = function() {
|
|
Scene_MenuBase.prototype.initialize.call(this);
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.create = function() {
|
|
Scene_MenuBase.prototype.create.call(this);
|
|
this.createHelpWindow();
|
|
this.createKeyConfigWindow();
|
|
this.createKeyActionWindow();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.terminate = function() {
|
|
Scene_MenuBase.prototype.terminate.call(this);
|
|
ConfigManager.save();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.refreshWindows = function() {
|
|
this._configWindow.refresh();
|
|
this._configWindow.activate();
|
|
ConfigManager.save();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.createKeyConfigWindow = function() {
|
|
this._configWindow = new Window_KeyConfig(this._helpWindow);
|
|
this._configWindow.setHandler('default', this.commandDefault.bind(this));
|
|
this._configWindow.setHandler('wasd', this.commandWasd.bind(this));
|
|
this._configWindow.setHandler('cancel', this.commandExit.bind(this));
|
|
this._configWindow.setHandler('key', this.commandKey.bind(this));
|
|
this.addWindow(this._configWindow);
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.createKeyActionWindow = function() {
|
|
this._actionWindow = new Window_KeyAction();
|
|
this._actionWindow.setHandler('ok', this.onActionOk.bind(this));
|
|
this._actionWindow.setHandler('cancel', this.onActionCancel.bind(this));
|
|
this.addWindow(this._actionWindow);
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.commandDefault = function() {
|
|
ConfigManager.keyMapper =
|
|
JSON.parse(JSON.stringify(ConfigManager.defaultMap));
|
|
ConfigManager.applyKeyConfig();
|
|
this.refreshWindows();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.commandWasd = function() {
|
|
ConfigManager.keyMapper = JSON.parse(JSON.stringify(ConfigManager.wasdMap));
|
|
ConfigManager.applyKeyConfig();
|
|
this.refreshWindows();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.commandKey = function() {
|
|
this._actionWindow.select(0);
|
|
this._actionWindow.open();
|
|
this._actionWindow.activate();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.onActionCancel = function() {
|
|
this._actionWindow.close();
|
|
this._actionWindow.deactivate();
|
|
this._configWindow.activate();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.onActionOk = function() {
|
|
var action = this._actionWindow.currentExt();
|
|
var name = this._configWindow.commandName(this._configWindow.index());
|
|
var key = Window_KeyConfig._refId[name];
|
|
if (action === 'clear') {
|
|
ConfigManager.keyMapper[key] = undefined;
|
|
} else {
|
|
ConfigManager.keyMapper[key] = action;
|
|
}
|
|
SoundManager.playEquip();
|
|
ConfigManager.applyKeyConfig();
|
|
this.onActionCancel();
|
|
this.refreshWindows();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.commandExit = function() {
|
|
if (!this.canExit()) {
|
|
SoundManager.playBuzzer();
|
|
this._configWindow.activate();
|
|
return;
|
|
}
|
|
this.popScene();
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.canExit = function() {
|
|
if (!Imported.YEP_ButtonCommonEvents) return true;
|
|
for (var i = 0; i < Yanfly.KeyConfig.RequiredCommonEvents.length; ++i) {
|
|
var commonEventId = Yanfly.KeyConfig.RequiredCommonEvents[i];
|
|
if (!this.isCommonEventBound(commonEventId)) return false;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
Scene_KeyConfig.prototype.isCommonEventBound = function(id) {
|
|
var length = Window_KeyConfig._keyLayout.length;
|
|
for (var i = 0; i < length; ++i) {
|
|
var key = Window_KeyConfig._refId[this._configWindow.commandName(i)];
|
|
var action = Input.keyMapper[key];
|
|
if (Yanfly.Param.BCEList[action] === id) return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
//=============================================================================
|
|
// End of File
|
|
//=============================================================================
|