1170 lines
34 KiB
JavaScript
1170 lines
34 KiB
JavaScript
//=============================================================================
|
||
// 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
|
||
//=============================================================================
|