Mesukemo-Hime-no-Kaisuiyoku/js/plugins/KeyboardConfig.js

1011 lines
33 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//=============================================================================
// Yanfly Engine Plugins - Template
// KeyboardConfig.js
// Version: 1.00
//=============================================================================
var Imported = Imported || {};
Imported.KeyboardConfig = true;
var Yanfly = Yanfly || {};
Yanfly.KeyConfig = Yanfly.KeyboardConfig || {};
//=============================================================================
/*:
* @plugindesc v1.00 Allows players to adjust their button configuration
* for keyboards.
* @author Yanfly Engine Plugins
*
* @param Command Name
* @desc This is the option name that appears in the main menu.
* @default Keyboard Config
*
* @param Key Help
* @desc This is the help message that will display for keys.
* @default Change the configuration of this key?
*
* @param Default Layout
* @desc This is the text for switching to the default layout.
* @default Default Keyboard Layout
*
* @param Default Help
* @desc This is the help message that will display for keys.
* @default Reverts your keyboard setting to the default setup.
*
* @param WASD Layout
* @desc This is the text for switching to the WASD layout.
* @default WASD Movement Layout
*
* @param WASD Help
* @desc This is the help message that will display for WASD.
* @default Changes your keyboard to WASD movement.
*
* @param Finish Config
* @desc This is the text for finishing with keyboard configuration.
* @default Finish Configuration
*
* @param Finish Help
* @desc This is the help message that will display for Finish.
* @default Are you done configuring your keyboard?
*
* @param Assigned Color
* @desc This is the background color of a key that's assigned.
* @default 21
*
* @param Action Color
* @desc This is the text color of an assigned action.
* @default 4
*
* @param Clear Text
* @desc This is the Clear action will appear for the config text.
* @default Clear
*
* @param OK Key
* @desc This is the OK action will appear on a key.
* @default OK
*
* @param OK Text
* @desc This is the OK action will appear for the config text.
* @default OK / Talk
*
* @param Escape Key
* @desc This is the Escape action will appear on a key.
* @default X
*
* @param Escape Text
* @desc This is the Escape action will appear for the config text.
* @default Cancel / Menu
*
* @param Cancel Key
* @desc This is the Cancel action will appear on a key.
* @default Cancel
*
* @param Cancel Text
* @desc This is the Cancel action will appear for the config text.
* @default Cancel
*
* @param Menu Key
* @desc This is the Menu action will appear on a key.
* @default Menu
*
* @param Menu Text
* @desc This is the Menu action will appear for the config text.
* @default Menu
*
* @param Shift Key
* @desc This is the Shift action will appear on a key.
* @default Dash
*
* @param Shift Text
* @desc This is the Shift action will appear for the config text.
* @default Dash
*
* @param PageUp Key
* @desc This is the PageUp action will appear on a key.
* @default PgUp
*
* @param PageUp Text
* @desc This is the PageUp action will appear for the config text.
* @default Page Up
*
* @param PageDown Key
* @desc This is the PageUp action will appear on a key.
* @default PgDn
*
* @param PageDown Text
* @desc This is the PageUp action will appear for the config text.
* @default Page Down
*
* @param Left Key
* @desc This is the Left action will appear on a key.
* @default ◄
*
* @param Left Text
* @desc This is the Left action will appear for the config text.
* @default Move ◄ Left
*
* @param Up Key
* @desc This is the Up action will appear on a key.
* @default ▲
*
* @param Up Text
* @desc This is the Up action will appear for the config text.
* @default Move ▲ Up
*
* @param Right Key
* @desc This is the Right action will appear on a key.
* @default ►
*
* @param Right Text
* @desc This is the Right action will appear for the config text.
* @default Move ► Right
*
* @param Down Key
* @desc This is the Down action will appear on a key.
* @default ▼
*
* @param Down Text
* @desc This is the Down action will appear for the config text.
* @default Move ▼ Down*
*
* @help
* 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.
*/
/*:ja
* @plugindesc キーボード向けにボタンコンフィグを行なうプラグインです。
* @author Yanfly Engine Plugins
*
* @param Command Name
* @desc メインメニューに表示されるオプション名を変更できます
* @default Keyboard Config
*
* @param Key Help
* @desc キー設定時に表示される補助メッセージです
* @default このキーのコンフィグを変更しますか?
*
* @param Default Layout
* @desc デフォルトのレイアウトに変更する際のテキストメッセージです.
* @default デフォルトレイアウト
*
* @param Default Help
* @desc デフォルト設定に対するヘルプメッセージを設定できます
* @default キーボード設定をデフォルトに戻します
*
* @param WASD Layout
* @desc WASDのレイアウトに切り替える際のテキストを設定します
* @default WASDレイアウト
*
* @param WASD Help
* @desc WADSD設定に対するヘルプメッセージを設定できます
* @default キーボードをWASDレイアウトに変更します
*
* @param Finish Config
* @desc キーボードコンフィグを完了する際のコマンド名を変更できます
* @default Finish Configuration
*
* @param Finish Help
* @desc 完了時のヘルプを設定できます
* @default キーボードのコンフィグを完了しますか?
*
* @param Assigned Color
* @desc アサインされたキーの背景色を設定できます
* @default 21
*
* @param Action Color
* @desc アサインされたアクションのテキストカラーを設定できます
* @default 4
*
* @param Clear Text
* @desc コンフィグテキストに表れるClearの説明文を変更できます
* @default Clear
*
* @param OK Key
* @desc キー上に表れるOKアクションの表記を変更できます
* @default OK
*
* @param OK Text
* @desc コンフィグテキストに表れるOKの説明文を変更できます
* @default OK / 話す
*
* @param Escape Key
* @desc キー上に表れるEscapeアクションの表記を変更できます
* @default X
*
* @param Escape Text
* @desc コンフィグテキストに表れるEscapeの説明文を変更できます
* @default Cancel / Menu
*
* @param Cancel Key
* @desc キー上に表れるキャンセルアクションの表記を変更できます
* @default Cancel
*
* @param Cancel Text
* @desc コンフィグテキストに表れるキャンセルの説明文を変更できます
* @default キャンセル
*
* @param Menu Key
* @desc キー上に表れるメニューアクションの表記を変更できます
* @default Menu
*
* @param Menu Text
* @desc コンフィグテキストに表れるメニューの説明文を変更できます
* @default Menu
*
* @param Shift Key
* @desc キー上に表れるShiftアクションの表記を変更できます
* @default Dash
*
* @param Shift Text
* @desc コンフィグテキストに表れるShiftの説明文を変更できます
* @default ダッシュする
*
* @param PageUp Key
* @desc キー上に表れるPageUpアクションの表記を変更できます
* @default PgUp
*
* @param PageUp Text
* @desc コンフィグテキストに表れるPageUpの説明文を変更できます
* @default ページアップ
*
* @param PageDown Key
* @desc キー上に表れるPageDownアクションの表記を変更できます
* @default PgDn
*
* @param PageDown Text
* @desc コンフィグテキストに表れるPageDownの説明文を変更できます
* @default ページダウン
*
* @param Left Key
* @desc キー上に表れるレフトキーアクションの表記を変更できます
* @default ◄
*
* @param Left Text
* @desc コンフィグテキストに表れるレフトキーの説明文を変更できます
* @default 左へ ◄
*
* @param Up Key
* @desc キー上に表れるアップキーアクションの表記を変更できます
* @default ▲
*
* @param Up Text
* @desc コンフィグテキストに表れるアップキーの説明文を変更できます
* @default 上へ ▲
*
* @param Right Key
* @desc キー上に表れるライトキーアクションの表記を変更できます
* @default ►
*
* @param Right Text
* @desc コンフィグテキストに表れるライトキーの説明文を変更できます
* @default 右へ ►
*
* @param Down Key
* @desc キー上に表れるダウンキーアクションの表記を変更できます
* @default ▼
*
* @param Down Text
* @desc コンフィグテキストに表れるダウンキーの説明文を変更できます
* @default 下へ ▼
*
* @help
* このプラグインを用いて、ゲーム内オプションから
* キーボードコンフィグを変更することができます。PCのみ有効
* プレイヤーは、ゲームとは別のスクリーンにて
* キーボードにアクションをアサインすることができます。
*
* プレイヤーがコンフィグスクリーンに閉じ込められてしまうことが無いように、
* エンターキーと矢印キーは変更できないようになっています。
* それ以外の殆どのキーは、プレイヤーの好きなように変更することができます。
*
*/
//=============================================================================
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('KeyboardConfig');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.KeyConfigName = String(Yanfly.Parameters['Command Name']);
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']);
//=============================================================================
// ConfigManager
//=============================================================================
ConfigManager.keyMapper = {
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',
45: 'escape',
81: 'pageup',
87: 'pagedown',
88: 'escape',
90: 'ok',
96: 'escape',
98: 'down',
100: 'left',
102: 'right',
104: 'up',
120: 'debug'
};
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 {
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',
45: 'escape',
46: 'ok',
35: 'escape',
36: 'menu',
81: 'pageup',
87: 'pagedown',
88: 'escape',
90: 'ok',
96: 'escape',
98: 'down',
100: 'left',
102: 'right',
104: 'up',
120: 'debug'
};
}
};
//=============================================================================
// Window_Options
//=============================================================================
Yanfly.KeyConfig.Window_Options_addGeneralOptions =
Window_Options.prototype.addGeneralOptions;
Window_Options.prototype.addGeneralOptions = function() {
Yanfly.KeyConfig.Window_Options_addGeneralOptions.call(this);
this.addKeyConfigCommand();
};
Window_Options.prototype.addKeyConfigCommand = function() {
if (Utils.isMobileDevice()) return;
this.addCommand(Yanfly.Param.KeyConfigName, 'keyConfig', true);
};
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);
}
};
//=============================================================================
// 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;
}
};
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.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');
};
//=============================================================================
// 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.popScene.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 = {
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',
45: 'escape',
46: 'ok',
35: 'escape',
36: 'menu',
81: 'pageup',
87: 'pagedown',
88: 'escape',
90: 'ok',
96: 'escape',
98: 'down',
100: 'left',
102: 'right',
104: 'up',
120: 'debug'
};
ConfigManager.applyKeyConfig();
this.refreshWindows();
};
Scene_KeyConfig.prototype.commandWasd = function() {
ConfigManager.keyMapper = {
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'
};
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();
};
//=============================================================================
// End of File
//=============================================================================