refactor to simplify the overcomplicated config file (#1)
* refactor done * starting gamepad tests * renamed testspull/685/head
parent
85a0debb6c
commit
7ca1a276a3
|
@ -165,7 +165,43 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_BACKSPACE: "T_Backspace_Alt_Key_Dark.png",
|
KEY_BACKSPACE: "T_Backspace_Alt_Key_Dark.png",
|
||||||
KEY_ALT: "T_Alt_Key_Dark.png"
|
KEY_ALT: "T_Alt_Key_Dark.png"
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
|
[SettingKeyboard.Button_Up]: Button.UP,
|
||||||
|
[SettingKeyboard.Button_Down]: Button.DOWN,
|
||||||
|
[SettingKeyboard.Button_Left]: Button.LEFT,
|
||||||
|
[SettingKeyboard.Button_Right]: Button.RIGHT,
|
||||||
|
[SettingKeyboard.Button_Submit]: Button.SUBMIT,
|
||||||
|
[SettingKeyboard.Button_Action]: Button.ACTION,
|
||||||
|
[SettingKeyboard.Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingKeyboard.Button_Menu]: Button.MENU,
|
||||||
|
[SettingKeyboard.Button_Stats]: Button.STATS,
|
||||||
|
[SettingKeyboard.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingKeyboard.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingKeyboard.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingKeyboard.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingKeyboard.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingKeyboard.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingKeyboard.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingKeyboard.Button_Slow_Down]: Button.SLOW_DOWN,
|
||||||
|
[SettingKeyboard.Alt_Button_Up]: Button.UP,
|
||||||
|
[SettingKeyboard.Alt_Button_Down]: Button.DOWN,
|
||||||
|
[SettingKeyboard.Alt_Button_Left]: Button.LEFT,
|
||||||
|
[SettingKeyboard.Alt_Button_Right]: Button.RIGHT,
|
||||||
|
[SettingKeyboard.Alt_Button_Submit]: Button.SUBMIT,
|
||||||
|
[SettingKeyboard.Alt_Button_Action]: Button.ACTION,
|
||||||
|
[SettingKeyboard.Alt_Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingKeyboard.Alt_Button_Menu]: Button.MENU,
|
||||||
|
[SettingKeyboard.Alt_Button_Stats]: Button.STATS,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingKeyboard.Alt_Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingKeyboard.Alt_Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingKeyboard.Alt_Button_Slow_Down]: Button.SLOW_DOWN,
|
||||||
|
},
|
||||||
|
default: {
|
||||||
KEY_ARROW_UP: SettingKeyboard.Button_Up,
|
KEY_ARROW_UP: SettingKeyboard.Button_Up,
|
||||||
KEY_ARROW_DOWN: SettingKeyboard.Button_Down,
|
KEY_ARROW_DOWN: SettingKeyboard.Button_Down,
|
||||||
KEY_ARROW_LEFT: SettingKeyboard.Button_Left,
|
KEY_ARROW_LEFT: SettingKeyboard.Button_Left,
|
||||||
|
@ -183,62 +219,25 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_V: SettingKeyboard.Button_Cycle_Variant,
|
KEY_V: SettingKeyboard.Button_Cycle_Variant,
|
||||||
KEY_PLUS: SettingKeyboard.Button_Speed_Up,
|
KEY_PLUS: SettingKeyboard.Button_Speed_Up,
|
||||||
KEY_MINUS: SettingKeyboard.Button_Slow_Down,
|
KEY_MINUS: SettingKeyboard.Button_Slow_Down,
|
||||||
|
|
||||||
KEY_Z: SettingKeyboard.Alt_Button_Up,
|
|
||||||
KEY_S: SettingKeyboard.Alt_Button_Down,
|
|
||||||
KEY_Q: SettingKeyboard.Alt_Button_Left,
|
|
||||||
KEY_D: SettingKeyboard.Alt_Button_Right,
|
|
||||||
KEY_CTRL: SettingKeyboard.Alt_Button_Submit,
|
|
||||||
KEY_W: SettingKeyboard.Alt_Button_Action,
|
|
||||||
KEY_X: SettingKeyboard.Alt_Button_Cancel,
|
|
||||||
KEY_TAB: SettingKeyboard.Alt_Button_Menu,
|
|
||||||
KEY_SHIFT: SettingKeyboard.Alt_Button_Stats,
|
|
||||||
KEY_P: SettingKeyboard.Alt_Button_Cycle_Shiny,
|
|
||||||
KEY_M: SettingKeyboard.Alt_Button_Cycle_Form,
|
|
||||||
KEY_O: SettingKeyboard.Alt_Button_Cycle_Gender,
|
|
||||||
KEY_L: SettingKeyboard.Alt_Button_Cycle_Ability,
|
|
||||||
KEY_I: SettingKeyboard.Alt_Button_Cycle_Nature,
|
|
||||||
KEY_K: SettingKeyboard.Alt_Button_Cycle_Variant,
|
|
||||||
KEY_PAGE_UP: SettingKeyboard.Alt_Button_Speed_Up,
|
|
||||||
KEY_PAGE_DOWN: SettingKeyboard.Alt_Button_Slow_Down,
|
|
||||||
},
|
|
||||||
default: {
|
|
||||||
KEY_ARROW_UP: Button.UP,
|
|
||||||
KEY_ARROW_DOWN: Button.DOWN,
|
|
||||||
KEY_ARROW_LEFT: Button.LEFT,
|
|
||||||
KEY_ARROW_RIGHT: Button.RIGHT,
|
|
||||||
KEY_ENTER: Button.SUBMIT,
|
|
||||||
KEY_SPACE: Button.ACTION,
|
|
||||||
KEY_BACKSPACE: Button.CANCEL,
|
|
||||||
KEY_ESC: Button.MENU,
|
|
||||||
KEY_C: Button.STATS,
|
|
||||||
KEY_R: Button.CYCLE_SHINY,
|
|
||||||
KEY_F: Button.CYCLE_FORM,
|
|
||||||
KEY_G: Button.CYCLE_GENDER,
|
|
||||||
KEY_E: Button.CYCLE_ABILITY,
|
|
||||||
KEY_N: Button.CYCLE_NATURE,
|
|
||||||
KEY_V: Button.CYCLE_VARIANT,
|
|
||||||
KEY_PLUS: Button.SPEED_UP,
|
|
||||||
KEY_MINUS: Button.SLOW_DOWN,
|
|
||||||
KEY_A: -1,
|
KEY_A: -1,
|
||||||
KEY_B: -1,
|
KEY_B: -1,
|
||||||
KEY_D: Button.RIGHT,
|
KEY_D: SettingKeyboard.Alt_Button_Right,
|
||||||
KEY_H: -1,
|
KEY_H: -1,
|
||||||
KEY_I: Button.CYCLE_NATURE,
|
KEY_I: SettingKeyboard.Alt_Button_Cycle_Nature,
|
||||||
KEY_J: -1,
|
KEY_J: -1,
|
||||||
KEY_K: Button.CYCLE_VARIANT,
|
KEY_K: SettingKeyboard.Alt_Button_Cycle_Variant,
|
||||||
KEY_L: Button.CYCLE_ABILITY,
|
KEY_L: SettingKeyboard.Alt_Button_Cycle_Ability,
|
||||||
KEY_M: Button.CYCLE_FORM,
|
KEY_M: SettingKeyboard.Alt_Button_Cycle_Form,
|
||||||
KEY_O: Button.CYCLE_GENDER,
|
KEY_O: SettingKeyboard.Alt_Button_Cycle_Gender,
|
||||||
KEY_P: Button.CYCLE_SHINY,
|
KEY_P: SettingKeyboard.Alt_Button_Cycle_Shiny,
|
||||||
KEY_Q: Button.LEFT,
|
KEY_Q: SettingKeyboard.Alt_Button_Left,
|
||||||
KEY_S: Button.DOWN,
|
KEY_S: SettingKeyboard.Alt_Button_Down,
|
||||||
KEY_T: -1,
|
KEY_T: -1,
|
||||||
KEY_U: -1,
|
KEY_U: -1,
|
||||||
KEY_W: Button.ACTION,
|
KEY_W: SettingKeyboard.Alt_Button_Action,
|
||||||
KEY_X: Button.CANCEL,
|
KEY_X: SettingKeyboard.Alt_Button_Cancel,
|
||||||
KEY_Y: -1,
|
KEY_Y: -1,
|
||||||
KEY_Z: Button.UP,
|
KEY_Z: SettingKeyboard.Alt_Button_Up,
|
||||||
KEY_0: -1,
|
KEY_0: -1,
|
||||||
KEY_1: -1,
|
KEY_1: -1,
|
||||||
KEY_2: -1,
|
KEY_2: -1,
|
||||||
|
@ -249,7 +248,7 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_7: -1,
|
KEY_7: -1,
|
||||||
KEY_8: -1,
|
KEY_8: -1,
|
||||||
KEY_9: -1,
|
KEY_9: -1,
|
||||||
KEY_CTRL: Button.SUBMIT,
|
KEY_CTRL: SettingKeyboard.Alt_Button_Submit,
|
||||||
KEY_DEL: -1,
|
KEY_DEL: -1,
|
||||||
KEY_END: -1,
|
KEY_END: -1,
|
||||||
KEY_F1: -1,
|
KEY_F1: -1,
|
||||||
|
@ -266,17 +265,19 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_F12: -1,
|
KEY_F12: -1,
|
||||||
KEY_HOME: -1,
|
KEY_HOME: -1,
|
||||||
KEY_INSERT: -1,
|
KEY_INSERT: -1,
|
||||||
KEY_PAGE_DOWN: Button.SLOW_DOWN,
|
KEY_PAGE_DOWN: SettingKeyboard.Alt_Button_Slow_Down,
|
||||||
KEY_PAGE_UP: Button.SPEED_UP,
|
KEY_PAGE_UP: SettingKeyboard.Alt_Button_Speed_Up,
|
||||||
KEY_QUOTATION: -1,
|
KEY_QUOTATION: -1,
|
||||||
KEY_SHIFT: Button.STATS,
|
KEY_SHIFT: SettingKeyboard.Alt_Button_Stats,
|
||||||
KEY_TAB: Button.MENU,
|
KEY_TAB: SettingKeyboard.Alt_Button_Menu,
|
||||||
KEY_TILDE: -1,
|
KEY_TILDE: -1,
|
||||||
KEY_LEFT_BRACKET: -1,
|
KEY_LEFT_BRACKET: -1,
|
||||||
KEY_RIGHT_BRACKET: -1,
|
KEY_RIGHT_BRACKET: -1,
|
||||||
KEY_SEMICOLON: -1,
|
KEY_SEMICOLON: -1,
|
||||||
KEY_ALT: -1
|
KEY_ALT: -1
|
||||||
}
|
},
|
||||||
|
main: [],
|
||||||
|
alt: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default cfg_keyboard_azerty;
|
export default cfg_keyboard_azerty;
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
export function getKeyWithKeycode(config, keycode) {
|
||||||
|
return Object.keys(config.gamepadMapping).find(key => config.gamepadMapping[key] === keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getSettingNameWithKeycode(config, keycode) {
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
return config.custom[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getIconWithKeycode(config, keycode) {
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
return config.icons[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getButtonWithKeycode(config, keycode) {
|
||||||
|
const settingName = getSettingNameWithKeycode(config, keycode);
|
||||||
|
return config.settings[settingName];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getKeycodeWithKey(config, key) {
|
||||||
|
return config.gamepadMapping[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getKeyWithSettingName(config, settingName) {
|
||||||
|
return Object.keys(config.custom).find(key => config.custom[key] === settingName);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getSettingNameWithKey(config, key) {
|
||||||
|
return config.custom[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getIconWithKey(config, key) {
|
||||||
|
return config.icons[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getIconSpecialCase(config, keycode, settingName) {
|
||||||
|
const potentialKey = isAlreadyBinded(config, keycode, settingName);
|
||||||
|
if (potentialKey) return getIconWithKey(config, potentialKey);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getButtonWithSettingName(config, settingName) {
|
||||||
|
return config.settings[settingName];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getButtonWithKey(config, key) {
|
||||||
|
const settingName = config.custom[key];
|
||||||
|
return getButtonWithSettingName(config, settingName);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getIconWithSettingName(config, settingName) {
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
return getIconWithKey(config, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getKeycodeWithSettingName(config, settingName) {
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
return getKeycodeWithKey(config, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getSettingNameWithButton(config, button, alt= false) {
|
||||||
|
return Object.keys(config.settings).find(k => {
|
||||||
|
const a = !alt && !k.includes("ALT_");
|
||||||
|
const b = alt && k.includes("ALT_");
|
||||||
|
const c = config.settings[k] === button;
|
||||||
|
return (a || b) && c;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getKeyWithButton(config, button, alt= false) {
|
||||||
|
const settingName = getSettingNameWithButton(config, button, alt);
|
||||||
|
return getKeyWithSettingName(config, settingName);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getKeycodeWithButton(config, button, alt= false) {
|
||||||
|
const key = getKeyWithButton(config, button, alt);
|
||||||
|
return getKeycodeWithKey(config, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getIconWithButton(config, button, alt= false) {
|
||||||
|
const key = getKeyWithButton(config, button, alt);
|
||||||
|
return getIconWithKey(config, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isAlreadyBinded(config, keycode, settingNameTarget) {
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
const isMain = config.main.includes(key);
|
||||||
|
|
||||||
|
const isTargetMain = !settingNameTarget.includes("ALT_");
|
||||||
|
const potentialExistingButton = getButtonWithSettingName(config, settingNameTarget);
|
||||||
|
const potentialExistingKey = getKeyWithButton(config, potentialExistingButton, !isMain);
|
||||||
|
|
||||||
|
if (potentialExistingKey && isMain !== isTargetMain) return potentialExistingKey;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function swap(config, settingNameTarget, keycode) {
|
||||||
|
// 2 alt can't do the same thing
|
||||||
|
// 2 main can't do the same thing
|
||||||
|
// can't swap an alt if another alt is already doing the same
|
||||||
|
// can't swap a main if another main is already doing the same
|
||||||
|
const isDeleted = !getKeyWithSettingName(config, settingNameTarget);
|
||||||
|
if (isDeleted) {
|
||||||
|
const new_key = getKeyWithKeycode(config, keycode);
|
||||||
|
config.custom[new_key] = settingNameTarget;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const potentialExistingKey = isAlreadyBinded(config, keycode, settingNameTarget);
|
||||||
|
|
||||||
|
const prev_key = potentialExistingKey || getKeyWithSettingName(config, settingNameTarget);
|
||||||
|
const prev_settingName = getSettingNameWithKey(config, prev_key);
|
||||||
|
|
||||||
|
const new_key = getKeyWithKeycode(config, keycode);
|
||||||
|
const new_settingName = getSettingNameWithKey(config, new_key);
|
||||||
|
|
||||||
|
config.custom[prev_key] = new_settingName;
|
||||||
|
config.custom[new_key] = prev_settingName;
|
||||||
|
regenerateIdentifiers(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deleteBind(config, settingName) {
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
config.custom[key] = -1;
|
||||||
|
regenerateIdentifiers(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function regenerateIdentifiers(config) {
|
||||||
|
config.main = Object.keys(config.custom).filter(key => {
|
||||||
|
const value = config.custom[key]
|
||||||
|
return value !== -1 && !value.includes("ALT_");
|
||||||
|
});
|
||||||
|
config.alt = Object.keys(config.custom).filter(key => {
|
||||||
|
const value = config.custom[key]
|
||||||
|
return value !== -1 && value.includes("ALT_");
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,184 +0,0 @@
|
||||||
import {InterfaceConfig} from "../inputs-controller";
|
|
||||||
import {Button} from "#app/enums/buttons";
|
|
||||||
import {deepCopy} from "#app/utils";
|
|
||||||
|
|
||||||
// Given a button index from an input event, return its naming from the mapping config
|
|
||||||
export function getKeyFromMapping(config: InterfaceConfig, index: number): String | null {
|
|
||||||
for (const key of Object.keys(config.gamepadMapping)) {
|
|
||||||
if (config.gamepadMapping[key] === index) return key;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Given a setting name, return the key assigned to it from the config file
|
|
||||||
export function getKeyForSettingName(config: InterfaceConfig, settingName: string): String | null {
|
|
||||||
for (const key of Object.keys(config.setting)) {
|
|
||||||
if (config.setting[key] === settingName) return key;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Given a setting name, return the key assigned to it from the config file
|
|
||||||
export function getIconForSettingName(config: InterfaceConfig, settingName: string): String | null {
|
|
||||||
const key = getKeyForSettingName(config, settingName);
|
|
||||||
return config.icons[key];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Given a Button, return the custom key assigned to it from the config file
|
|
||||||
export function getKeyWithAction(config: InterfaceConfig, action: Button, alt: boolean = false): String | null {
|
|
||||||
// need to find a way to differentiate main/alt button
|
|
||||||
const { key } = getKeyAndSettingNameFromCurrentKeysWithAction(config, action, alt);
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Given a button index from an input event, return its icon from the config file
|
|
||||||
export function getIconWithPressedButton(config: InterfaceConfig, pressedButton: number): String {
|
|
||||||
const key = getKeyFromMapping(config, pressedButton);
|
|
||||||
return config.icons[key];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Given a setting name, return the icon currently assigned to this setting name
|
|
||||||
export function getIconWithSettingName(config: InterfaceConfig, settingName: string): string {
|
|
||||||
const { icon } = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName)
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getKeyAndSettingNameFromCurrentKeysWithAction(config, _action, alt: boolean = false) {
|
|
||||||
for (const _settingName of Object.keys(config.currentKeys)) {
|
|
||||||
if (alt && !_settingName.includes("ALT_")) continue;
|
|
||||||
if (config.currentKeys[_settingName].action === _action) return {
|
|
||||||
settingName: _settingName,
|
|
||||||
key: config.currentKeys[_settingName].key,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getKeyAndActionFromCurrentKeysWithSettingName(config, settingName) {
|
|
||||||
return config.currentKeys[settingName];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getKeyAndActionFromCurrentKeysWithPressedButton(config, pressedButton) {
|
|
||||||
const key = getKeyFromMapping(config, pressedButton);
|
|
||||||
const settingName = Object.keys(config.currentKeys).find(_s => config.currentKeys[_s].key === key);
|
|
||||||
return getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function assignNewKey(config: InterfaceConfig, settingName, pressedButton, previousBind): void {
|
|
||||||
const key = getKeyFromMapping(config, pressedButton);
|
|
||||||
const icon = config.ogIcons[key];
|
|
||||||
config.icons[previousBind.key] = icon;
|
|
||||||
config.currentKeys[settingName].icon = icon;
|
|
||||||
|
|
||||||
config.custom[previousBind.key] = -1;
|
|
||||||
config.custom[key] = previousBind.action !== -1 ? previousBind.action : previousBind.from.action;
|
|
||||||
config.currentKeys[settingName].replacedBy = key;
|
|
||||||
config.currentKeys[settingName].latestIsDeleted = false;
|
|
||||||
|
|
||||||
delete config.currentKeys[settingName].from
|
|
||||||
}
|
|
||||||
|
|
||||||
export function swapCurrentKeys(config: InterfaceConfig, settingName, pressedButton): void {
|
|
||||||
const previousBind = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
const prevKey = deepCopy(previousBind);
|
|
||||||
const newBind = getKeyAndActionFromCurrentKeysWithPressedButton(config, pressedButton);
|
|
||||||
if (newBind?.action === -1 && previousBind.action === -1) {
|
|
||||||
assignNewKey(config, settingName, pressedButton, previousBind);
|
|
||||||
} else if (newBind && previousBind.action === -1) {
|
|
||||||
//special case when rebinding deleted key with already assigned key
|
|
||||||
const toRestore = deepCopy(newBind);
|
|
||||||
const iconFromThePressedButton = config.ogIcons[prevKey.key];
|
|
||||||
config.custom[newBind.key] = prevKey.from.action;
|
|
||||||
config.icons[prevKey.key] = newBind.icon || iconFromThePressedButton;
|
|
||||||
config.icons[newBind.key] = prevKey.from.icon;
|
|
||||||
|
|
||||||
delete prevKey.from;
|
|
||||||
|
|
||||||
const nextSettingName = getKeyAndSettingNameFromCurrentKeysWithAction(config, newBind.action, newBind.isAlt).settingName;
|
|
||||||
config.currentKeys[nextSettingName].from = toRestore.action === -1 ? config.currentKeys[nextSettingName].from : toRestore;
|
|
||||||
config.currentKeys[nextSettingName].isDeleted = true;
|
|
||||||
config.currentKeys[settingName].isDeleted = false;
|
|
||||||
config.currentKeys[settingName].replacedBy = toRestore.key;
|
|
||||||
} else if (!newBind) {
|
|
||||||
assignNewKey(config, settingName, pressedButton, previousBind);
|
|
||||||
} else {
|
|
||||||
const nextKey = deepCopy(newBind);
|
|
||||||
if (prevKey.key === nextKey.key && prevKey.from) {
|
|
||||||
// special case when back to back and not enough info to get back to previous button
|
|
||||||
const toRestore = getKeyAndSettingNameFromCurrentKeysWithAction(config, prevKey.from.action, settingName.includes("ALT_"));
|
|
||||||
config.custom[prevKey.key] = prevKey.from.action;
|
|
||||||
config.icons[prevKey.key] = prevKey.from.icon;
|
|
||||||
|
|
||||||
config.custom[toRestore.key] = prevKey.action;
|
|
||||||
config.icons[toRestore.key] = prevKey.icon;
|
|
||||||
|
|
||||||
delete config.currentKeys[settingName].from;
|
|
||||||
delete config.currentKeys[toRestore.settingName].from;
|
|
||||||
} else {
|
|
||||||
config.custom[previousBind.key] = newBind.action;
|
|
||||||
config.custom[newBind.key] = previousBind.action;
|
|
||||||
config.icons[previousBind.key] = newBind.icon;
|
|
||||||
config.icons[newBind.key] = previousBind.icon;
|
|
||||||
const nextSettingName = getKeyAndSettingNameFromCurrentKeysWithAction(config, newBind.action, newBind.isAlt).settingName;
|
|
||||||
config.currentKeys[settingName].from = prevKey;
|
|
||||||
config.currentKeys[nextSettingName].from = nextKey;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export function reloadCurrentKeys(config): void {
|
|
||||||
// need to rework this to include keys that were not there at the begining
|
|
||||||
const currentKeys = config.currentKeys ? deepCopy(config.currentKeys) : {};
|
|
||||||
for (const key of Object.keys(config.setting)) {
|
|
||||||
const settingName = config.setting[key];
|
|
||||||
const action = config.custom[key];
|
|
||||||
const icon = config.icons[key];
|
|
||||||
if (!currentKeys[settingName]) currentKeys[settingName] = {};
|
|
||||||
currentKeys[settingName].key = key;
|
|
||||||
currentKeys[settingName].isAlt = settingName.includes("ALT_");
|
|
||||||
const previousAction = config.custom[currentKeys[settingName].replacedBy]
|
|
||||||
if (action === -1 && previousAction !== undefined && !currentKeys[settingName].isDeleted) {
|
|
||||||
currentKeys[settingName].action = previousAction;
|
|
||||||
currentKeys[settingName].icon = icon;
|
|
||||||
currentKeys[settingName].latestReplacedBy = config.currentKeys[settingName].replacedBy
|
|
||||||
} else if (currentKeys[settingName].isDeleted) {
|
|
||||||
currentKeys[settingName].action = -1;
|
|
||||||
currentKeys[settingName].icon = undefined;
|
|
||||||
currentKeys[settingName].latestIsDeleted = config.currentKeys[settingName].isDeleted
|
|
||||||
delete currentKeys[settingName].isDeleted;
|
|
||||||
} else {
|
|
||||||
currentKeys[settingName].action = action;
|
|
||||||
currentKeys[settingName].icon = action === -1 ? undefined : icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.currentKeys = deepCopy(currentKeys);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function regenerateCustom(config): void {
|
|
||||||
const custom = deepCopy(config.custom);
|
|
||||||
for (const settingName of Object.keys(config.currentKeys)) {
|
|
||||||
const {key, action, latestReplacedBy, latestIsDeleted} = config.currentKeys[settingName];
|
|
||||||
if (latestReplacedBy) {
|
|
||||||
custom[key] = -1;
|
|
||||||
custom[latestReplacedBy] = action;
|
|
||||||
} else if (!latestIsDeleted) {
|
|
||||||
custom[key] = action;
|
|
||||||
} else if (latestIsDeleted) {
|
|
||||||
custom[key] = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.custom = deepCopy(custom);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function deleteBind(config, settingName): void {
|
|
||||||
const { key } = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
const prev = deepCopy(config.currentKeys[settingName]);
|
|
||||||
delete config.currentKeys[settingName].icon
|
|
||||||
const actualKey = prev.replacedBy || key;
|
|
||||||
config.currentKeys[settingName].from = prev;
|
|
||||||
config.custom[actualKey] = -1;
|
|
||||||
config.currentKeys[settingName].isDeleted = true;
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
}
|
|
|
@ -45,7 +45,30 @@ const pad_dualshock = {
|
||||||
LC_E: "T_P4_Dpad_Right_Default.png",
|
LC_E: "T_P4_Dpad_Right_Default.png",
|
||||||
TOUCH: "T_P4_Touch_Pad_Default.png"
|
TOUCH: "T_P4_Touch_Pad_Default.png"
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
|
[SettingGamepad.Button_Up]: Button.UP,
|
||||||
|
[SettingGamepad.Button_Down]: Button.DOWN,
|
||||||
|
[SettingGamepad.Button_Left]: Button.LEFT,
|
||||||
|
[SettingGamepad.Button_Right]: Button.RIGHT,
|
||||||
|
[SettingGamepad.Button_Action]: Button.ACTION,
|
||||||
|
[SettingGamepad.Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingGamepad.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingGamepad.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingGamepad.Button_Menu]: Button.MENU,
|
||||||
|
[SettingGamepad.Button_Stats]: Button.STATS,
|
||||||
|
[SettingGamepad.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingGamepad.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingGamepad.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingGamepad.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingGamepad.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingGamepad.Button_Slow_Down]: Button.SLOW_DOWN,
|
||||||
|
[SettingGamepad.Button_Submit]: Button.SUBMIT
|
||||||
|
},
|
||||||
|
default: {
|
||||||
|
LC_N: SettingGamepad.Button_Up,
|
||||||
|
LC_S: SettingGamepad.Button_Down,
|
||||||
|
LC_W: SettingGamepad.Button_Left,
|
||||||
|
LC_E: SettingGamepad.Button_Right,
|
||||||
RC_S: SettingGamepad.Button_Action,
|
RC_S: SettingGamepad.Button_Action,
|
||||||
RC_E: SettingGamepad.Button_Cancel,
|
RC_E: SettingGamepad.Button_Cancel,
|
||||||
RC_W: SettingGamepad.Button_Cycle_Nature,
|
RC_W: SettingGamepad.Button_Cycle_Nature,
|
||||||
|
@ -60,25 +83,8 @@ const pad_dualshock = {
|
||||||
RS: SettingGamepad.Button_Slow_Down,
|
RS: SettingGamepad.Button_Slow_Down,
|
||||||
TOUCH: SettingGamepad.Button_Submit,
|
TOUCH: SettingGamepad.Button_Submit,
|
||||||
},
|
},
|
||||||
default: {
|
main: [],
|
||||||
RC_S: Button.ACTION,
|
alt: [],
|
||||||
RC_E: Button.CANCEL,
|
|
||||||
RC_W: Button.CYCLE_NATURE,
|
|
||||||
RC_N: Button.CYCLE_VARIANT,
|
|
||||||
START: Button.MENU,
|
|
||||||
SELECT: Button.STATS,
|
|
||||||
LB: Button.CYCLE_FORM,
|
|
||||||
RB: Button.CYCLE_SHINY,
|
|
||||||
LT: Button.CYCLE_GENDER,
|
|
||||||
RT: Button.CYCLE_ABILITY,
|
|
||||||
LS: Button.SPEED_UP,
|
|
||||||
RS: Button.SLOW_DOWN,
|
|
||||||
LC_N: Button.UP,
|
|
||||||
LC_S: Button.DOWN,
|
|
||||||
LC_W: Button.LEFT,
|
|
||||||
LC_E: Button.RIGHT,
|
|
||||||
TOUCH: Button.SUBMIT,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default pad_dualshock;
|
export default pad_dualshock;
|
||||||
|
|
|
@ -43,7 +43,29 @@ const pad_generic = {
|
||||||
LC_W: "T_X_Dpad_Left_Alt.png",
|
LC_W: "T_X_Dpad_Left_Alt.png",
|
||||||
LC_E: "T_X_Dpad_Right_Alt.png",
|
LC_E: "T_X_Dpad_Right_Alt.png",
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
|
[SettingGamepad.Button_Up]: Button.UP,
|
||||||
|
[SettingGamepad.Button_Down]: Button.DOWN,
|
||||||
|
[SettingGamepad.Button_Left]: Button.LEFT,
|
||||||
|
[SettingGamepad.Button_Right]: Button.RIGHT,
|
||||||
|
[SettingGamepad.Button_Action]: Button.ACTION,
|
||||||
|
[SettingGamepad.Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingGamepad.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingGamepad.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingGamepad.Button_Menu]: Button.MENU,
|
||||||
|
[SettingGamepad.Button_Stats]: Button.STATS,
|
||||||
|
[SettingGamepad.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingGamepad.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingGamepad.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingGamepad.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingGamepad.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingGamepad.Button_Slow_Down]: Button.SLOW_DOWN
|
||||||
|
},
|
||||||
|
default: {
|
||||||
|
LC_N: SettingGamepad.Button_Up,
|
||||||
|
LC_S: SettingGamepad.Button_Down,
|
||||||
|
LC_W: SettingGamepad.Button_Left,
|
||||||
|
LC_E: SettingGamepad.Button_Right,
|
||||||
RC_S: SettingGamepad.Button_Action,
|
RC_S: SettingGamepad.Button_Action,
|
||||||
RC_E: SettingGamepad.Button_Cancel,
|
RC_E: SettingGamepad.Button_Cancel,
|
||||||
RC_W: SettingGamepad.Button_Cycle_Nature,
|
RC_W: SettingGamepad.Button_Cycle_Nature,
|
||||||
|
@ -55,26 +77,10 @@ const pad_generic = {
|
||||||
LT: SettingGamepad.Button_Cycle_Gender,
|
LT: SettingGamepad.Button_Cycle_Gender,
|
||||||
RT: SettingGamepad.Button_Cycle_Ability,
|
RT: SettingGamepad.Button_Cycle_Ability,
|
||||||
LS: SettingGamepad.Button_Speed_Up,
|
LS: SettingGamepad.Button_Speed_Up,
|
||||||
RS: SettingGamepad.Button_Slow_Down,
|
RS: SettingGamepad.Button_Slow_Down
|
||||||
},
|
},
|
||||||
default: {
|
main: [],
|
||||||
RC_S: Button.ACTION, //5
|
alt: [],
|
||||||
RC_E: Button.CANCEL, // 6
|
|
||||||
RC_W: Button.CYCLE_NATURE,
|
|
||||||
RC_N: Button.CYCLE_VARIANT,
|
|
||||||
START: Button.MENU,
|
|
||||||
SELECT: Button.STATS,
|
|
||||||
LB: Button.CYCLE_FORM, //10
|
|
||||||
RB: Button.CYCLE_SHINY, //9
|
|
||||||
LT: Button.CYCLE_GENDER, //11
|
|
||||||
RT: Button.CYCLE_ABILITY,
|
|
||||||
LS: Button.SPEED_UP,
|
|
||||||
RS: Button.SLOW_DOWN,
|
|
||||||
LC_N: Button.UP,
|
|
||||||
LC_S: Button.DOWN,
|
|
||||||
LC_W: Button.LEFT,
|
|
||||||
LC_E: Button.RIGHT,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default pad_generic;
|
export default pad_generic;
|
||||||
|
|
|
@ -35,7 +35,29 @@ const pad_unlicensedSNES = {
|
||||||
LC_W: "T_X_Dpad_Left_Alt.png",
|
LC_W: "T_X_Dpad_Left_Alt.png",
|
||||||
LC_E: "T_X_Dpad_Right_Alt.png",
|
LC_E: "T_X_Dpad_Right_Alt.png",
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
|
[SettingGamepad.Button_Up]: Button.UP,
|
||||||
|
[SettingGamepad.Button_Down]: Button.DOWN,
|
||||||
|
[SettingGamepad.Button_Left]: Button.LEFT,
|
||||||
|
[SettingGamepad.Button_Right]: Button.RIGHT,
|
||||||
|
[SettingGamepad.Button_Action]: Button.ACTION,
|
||||||
|
[SettingGamepad.Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingGamepad.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingGamepad.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingGamepad.Button_Menu]: Button.MENU,
|
||||||
|
[SettingGamepad.Button_Stats]: Button.STATS,
|
||||||
|
[SettingGamepad.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingGamepad.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingGamepad.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingGamepad.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingGamepad.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingGamepad.Button_Slow_Down]: Button.SLOW_DOWN
|
||||||
|
},
|
||||||
|
default: {
|
||||||
|
LC_N: SettingGamepad.Button_Up,
|
||||||
|
LC_S: SettingGamepad.Button_Down,
|
||||||
|
LC_W: SettingGamepad.Button_Left,
|
||||||
|
LC_E: SettingGamepad.Button_Right,
|
||||||
RC_S: SettingGamepad.Button_Action,
|
RC_S: SettingGamepad.Button_Action,
|
||||||
RC_E: SettingGamepad.Button_Cancel,
|
RC_E: SettingGamepad.Button_Cancel,
|
||||||
RC_W: SettingGamepad.Button_Cycle_Nature,
|
RC_W: SettingGamepad.Button_Cycle_Nature,
|
||||||
|
@ -44,21 +66,13 @@ const pad_unlicensedSNES = {
|
||||||
SELECT: SettingGamepad.Button_Stats,
|
SELECT: SettingGamepad.Button_Stats,
|
||||||
LB: SettingGamepad.Button_Cycle_Form,
|
LB: SettingGamepad.Button_Cycle_Form,
|
||||||
RB: SettingGamepad.Button_Cycle_Shiny,
|
RB: SettingGamepad.Button_Cycle_Shiny,
|
||||||
|
LT: -1,
|
||||||
|
RT: -1,
|
||||||
|
LS: -1,
|
||||||
|
RS: -1
|
||||||
},
|
},
|
||||||
default: {
|
main: [],
|
||||||
RC_S: Button.ACTION,
|
alt: [],
|
||||||
RC_E: Button.CANCEL,
|
|
||||||
RC_W: Button.CYCLE_NATURE,
|
|
||||||
RC_N: Button.CYCLE_VARIANT,
|
|
||||||
START: Button.MENU,
|
|
||||||
SELECT: Button.STATS,
|
|
||||||
LB: Button.CYCLE_FORM,
|
|
||||||
RB: Button.CYCLE_SHINY,
|
|
||||||
LC_N: Button.UP,
|
|
||||||
LC_S: Button.DOWN,
|
|
||||||
LC_W: Button.LEFT,
|
|
||||||
LC_E: Button.RIGHT,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default pad_unlicensedSNES;
|
export default pad_unlicensedSNES;
|
||||||
|
|
|
@ -43,7 +43,29 @@ const pad_xbox360 = {
|
||||||
LC_W: "T_X_Dpad_Left_Alt.png",
|
LC_W: "T_X_Dpad_Left_Alt.png",
|
||||||
LC_E: "T_X_Dpad_Right_Alt.png",
|
LC_E: "T_X_Dpad_Right_Alt.png",
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
|
[SettingGamepad.Button_Up]: Button.UP,
|
||||||
|
[SettingGamepad.Button_Down]: Button.DOWN,
|
||||||
|
[SettingGamepad.Button_Left]: Button.LEFT,
|
||||||
|
[SettingGamepad.Button_Right]: Button.RIGHT,
|
||||||
|
[SettingGamepad.Button_Action]: Button.ACTION,
|
||||||
|
[SettingGamepad.Button_Cancel]: Button.CANCEL,
|
||||||
|
[SettingGamepad.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
|
[SettingGamepad.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
|
[SettingGamepad.Button_Menu]: Button.MENU,
|
||||||
|
[SettingGamepad.Button_Stats]: Button.STATS,
|
||||||
|
[SettingGamepad.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
|
[SettingGamepad.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
|
[SettingGamepad.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
|
[SettingGamepad.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
|
[SettingGamepad.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
|
[SettingGamepad.Button_Slow_Down]: Button.SLOW_DOWN
|
||||||
|
},
|
||||||
|
default: {
|
||||||
|
LC_N: SettingGamepad.Button_Up,
|
||||||
|
LC_S: SettingGamepad.Button_Down,
|
||||||
|
LC_W: SettingGamepad.Button_Left,
|
||||||
|
LC_E: SettingGamepad.Button_Right,
|
||||||
RC_S: SettingGamepad.Button_Action,
|
RC_S: SettingGamepad.Button_Action,
|
||||||
RC_E: SettingGamepad.Button_Cancel,
|
RC_E: SettingGamepad.Button_Cancel,
|
||||||
RC_W: SettingGamepad.Button_Cycle_Nature,
|
RC_W: SettingGamepad.Button_Cycle_Nature,
|
||||||
|
@ -55,26 +77,10 @@ const pad_xbox360 = {
|
||||||
LT: SettingGamepad.Button_Cycle_Gender,
|
LT: SettingGamepad.Button_Cycle_Gender,
|
||||||
RT: SettingGamepad.Button_Cycle_Ability,
|
RT: SettingGamepad.Button_Cycle_Ability,
|
||||||
LS: SettingGamepad.Button_Speed_Up,
|
LS: SettingGamepad.Button_Speed_Up,
|
||||||
RS: SettingGamepad.Button_Slow_Down,
|
RS: SettingGamepad.Button_Slow_Down
|
||||||
},
|
},
|
||||||
default: {
|
main: [],
|
||||||
RC_S: Button.ACTION, //5
|
alt: [],
|
||||||
RC_E: Button.CANCEL, // 6
|
|
||||||
RC_W: Button.CYCLE_NATURE,
|
|
||||||
RC_N: Button.CYCLE_VARIANT, //14
|
|
||||||
START: Button.MENU, //7
|
|
||||||
SELECT: Button.STATS, //8
|
|
||||||
LB: Button.CYCLE_FORM,
|
|
||||||
RB: Button.CYCLE_SHINY,
|
|
||||||
LT: Button.CYCLE_GENDER,
|
|
||||||
RT: Button.CYCLE_ABILITY,
|
|
||||||
LS: Button.SPEED_UP,
|
|
||||||
RS: Button.SLOW_DOWN,
|
|
||||||
LC_N: Button.UP,
|
|
||||||
LC_S: Button.DOWN,
|
|
||||||
LC_W: Button.LEFT,
|
|
||||||
LC_E: Button.RIGHT,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default pad_xbox360;
|
export default pad_xbox360;
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
export enum Device {
|
||||||
|
GAMEPAD,
|
||||||
|
KEYBOARD,
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
import * as Utils from "./utils";
|
import * as Utils from "./utils";
|
||||||
|
import {deepCopy} from "./utils";
|
||||||
import {initTouchControls} from './touch-controls';
|
import {initTouchControls} from './touch-controls';
|
||||||
import pad_generic from "./configs/pad_generic";
|
import pad_generic from "./configs/pad_generic";
|
||||||
import pad_unlicensedSNES from "./configs/pad_unlicensedSNES";
|
import pad_unlicensedSNES from "./configs/pad_unlicensedSNES";
|
||||||
|
@ -9,12 +10,8 @@ import {Mode} from "./ui/ui";
|
||||||
import SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler";
|
import SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler";
|
||||||
import SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler";
|
import SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler";
|
||||||
import cfg_keyboard_azerty from "./configs/cfg_keyboard_azerty";
|
import cfg_keyboard_azerty from "./configs/cfg_keyboard_azerty";
|
||||||
import {
|
import {Device} from "#app/enums/devices";
|
||||||
getKeyAndActionFromCurrentKeysWithPressedButton,
|
import {getButtonWithKeycode, regenerateIdentifiers, swap} from "#app/configs/configHandler";
|
||||||
getKeyFromMapping, regenerateCustom,
|
|
||||||
reloadCurrentKeys, swapCurrentKeys
|
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
import {deepCopy} from "./utils";
|
|
||||||
|
|
||||||
export interface GamepadMapping {
|
export interface GamepadMapping {
|
||||||
[key: string]: number;
|
[key: string]: number;
|
||||||
|
@ -78,12 +75,10 @@ export class InputsController {
|
||||||
private interactions: Map<Button, Map<string, boolean>> = new Map();
|
private interactions: Map<Button, Map<string, boolean>> = new Map();
|
||||||
private time: Phaser.Time.Clock;
|
private time: Phaser.Time.Clock;
|
||||||
private configs: Map<string, InterfaceConfig> = new Map();
|
private configs: Map<string, InterfaceConfig> = new Map();
|
||||||
private keyboardConfigs: Map<string, InterfaceConfig> = new Map();
|
|
||||||
|
|
||||||
private gamepadSupport: boolean = true;
|
private gamepadSupport: boolean = true;
|
||||||
|
public selectedDevice;
|
||||||
|
|
||||||
public chosenGamepad: String;
|
|
||||||
public chosenKeyboard: string = "default";
|
|
||||||
private disconnectedGamepads: Array<String> = new Array();
|
private disconnectedGamepads: Array<String> = new Array();
|
||||||
|
|
||||||
private pauseUpdate: boolean = false;
|
private pauseUpdate: boolean = false;
|
||||||
|
@ -102,10 +97,15 @@ export class InputsController {
|
||||||
* Specific buttons like MENU and STATS are set not to repeat their actions.
|
* Specific buttons like MENU and STATS are set not to repeat their actions.
|
||||||
* It concludes by calling the `init` method to complete the setup.
|
* It concludes by calling the `init` method to complete the setup.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
constructor(scene: Phaser.Scene) {
|
constructor(scene: Phaser.Scene) {
|
||||||
this.scene = scene;
|
this.scene = scene;
|
||||||
this.time = this.scene.time;
|
this.time = this.scene.time;
|
||||||
this.buttonKeys = [];
|
this.buttonKeys = [];
|
||||||
|
this.selectedDevice = {
|
||||||
|
[Device.GAMEPAD]: null,
|
||||||
|
[Device.KEYBOARD]: 'default'
|
||||||
|
}
|
||||||
|
|
||||||
for (const b of Utils.getEnumValues(Button)) {
|
for (const b of Utils.getEnumValues(Button)) {
|
||||||
this.interactions[b] = {
|
this.interactions[b] = {
|
||||||
|
@ -131,8 +131,8 @@ export class InputsController {
|
||||||
init(): void {
|
init(): void {
|
||||||
this.events = this.scene.game.events;
|
this.events = this.scene.game.events;
|
||||||
|
|
||||||
if (localStorage.hasOwnProperty('chosenGamepad')) {
|
if (localStorage.hasOwnProperty('selectedDevice')) {
|
||||||
this.chosenGamepad = localStorage.getItem('chosenGamepad');
|
this.selectedDevice = JSON.parse(localStorage.getItem('selectedDevice'));
|
||||||
}
|
}
|
||||||
this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
|
this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
|
||||||
this.loseFocus()
|
this.loseFocus()
|
||||||
|
@ -234,8 +234,8 @@ export class InputsController {
|
||||||
// Prevents repeating button interactions when gamepad support is disabled.
|
// Prevents repeating button interactions when gamepad support is disabled.
|
||||||
if (
|
if (
|
||||||
(!this.gamepadSupport && this.interactions[b].source === 'gamepad') ||
|
(!this.gamepadSupport && this.interactions[b].source === 'gamepad') ||
|
||||||
(this.interactions[b].source === 'gamepad' && this.interactions[b].sourceName && this.interactions[b].sourceName !== this.chosenGamepad) ||
|
(this.interactions[b].source === 'gamepad' && this.interactions[b].sourceName && this.interactions[b].sourceName !== this.selectedDevice[Device.GAMEPAD]) ||
|
||||||
(this.interactions[b].source === 'keyboard' && this.interactions[b].sourceName && this.interactions[b].sourceName !== this.chosenKeyboard) ||
|
(this.interactions[b].source === 'keyboard' && this.interactions[b].sourceName && this.interactions[b].sourceName !== this.selectedDevice[Device.KEYBOARD]) ||
|
||||||
this.pauseUpdate
|
this.pauseUpdate
|
||||||
) {
|
) {
|
||||||
// Deletes the last interaction for a button if gamepad is disabled.
|
// Deletes the last interaction for a button if gamepad is disabled.
|
||||||
|
@ -266,23 +266,17 @@ export class InputsController {
|
||||||
* @param gamepadName Optional parameter to specify the name of the gamepad to initialize as chosen.
|
* @param gamepadName Optional parameter to specify the name of the gamepad to initialize as chosen.
|
||||||
*/
|
*/
|
||||||
initChosenGamepad(gamepadName?: String): void {
|
initChosenGamepad(gamepadName?: String): void {
|
||||||
let name = gamepadName;
|
|
||||||
if (gamepadName)
|
if (gamepadName)
|
||||||
this.chosenGamepad = gamepadName;
|
this.selectedDevice[Device.GAMEPAD] = gamepadName.toLowerCase();
|
||||||
else
|
localStorage.setItem('selectedDevice', JSON.stringify(this.selectedDevice));
|
||||||
name = this.chosenGamepad;
|
|
||||||
localStorage.setItem('chosenGamepad', name);
|
|
||||||
const handler = this.scene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler;
|
const handler = this.scene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler;
|
||||||
handler && handler.updateChosenGamepadDisplay()
|
handler && handler.updateChosenGamepadDisplay()
|
||||||
}
|
}
|
||||||
|
|
||||||
initChosenLayoutKeyboard(layoutKeyboard?: String): void {
|
initChosenLayoutKeyboard(layoutKeyboard?: String): void {
|
||||||
let name = layoutKeyboard;
|
|
||||||
if (layoutKeyboard)
|
if (layoutKeyboard)
|
||||||
this.chosenKeyboard = layoutKeyboard;
|
this.selectedDevice[Device.KEYBOARD] = layoutKeyboard.toLowerCase();
|
||||||
else
|
localStorage.setItem('selectedDevice', JSON.stringify(this.selectedDevice));
|
||||||
name = this.chosenKeyboard;
|
|
||||||
localStorage.setItem('chosenKeyboardLayout', name);
|
|
||||||
const handler = this.scene.ui?.handlers[Mode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler;
|
const handler = this.scene.ui?.handlers[Mode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler;
|
||||||
handler && handler.updateChosenKeyboardDisplay()
|
handler && handler.updateChosenKeyboardDisplay()
|
||||||
}
|
}
|
||||||
|
@ -297,22 +291,6 @@ export class InputsController {
|
||||||
*/
|
*/
|
||||||
onDisconnect(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
|
onDisconnect(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
|
||||||
this.disconnectedGamepads.push(thisGamepad.id);
|
this.disconnectedGamepads.push(thisGamepad.id);
|
||||||
/** commented for now this code because i don't know anymore if it's good to do that
|
|
||||||
* for example i'm playing with a wireless gamepad that shutdown after 5 min
|
|
||||||
* i don't want my game to use my second controller when i turn back on my main gamepad
|
|
||||||
* we look for gamepads still connected by substracting the 2 arrays
|
|
||||||
*/
|
|
||||||
// const gamepadsLeft = this.gamepads.filter(g => !this.disconnectedGamepads.includes(g.id)).map(g => g);
|
|
||||||
// we check if the chosen gamepad is still connected
|
|
||||||
// const chosenIsConnected = gamepadsLeft.some(g => g.id === this.chosenGamepad);
|
|
||||||
// if the chosen gamepad is disconnected, and we got others gamepad connected
|
|
||||||
// if (!chosenIsConnected && gamepadsLeft?.length) {
|
|
||||||
// We remove the previously chosen gamepad
|
|
||||||
// this.clearChosenGamepad();
|
|
||||||
// and we set the first of the gamepad still connected as the chosen one.
|
|
||||||
// this.setChosenGamepad(gamepadsLeft[0].id);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -338,36 +316,24 @@ export class InputsController {
|
||||||
const allGamepads = this.getGamepadsName();
|
const allGamepads = this.getGamepadsName();
|
||||||
for (const gamepad of allGamepads) {
|
for (const gamepad of allGamepads) {
|
||||||
const gamepadID = gamepad.toLowerCase();
|
const gamepadID = gamepad.toLowerCase();
|
||||||
|
if (!this.selectedDevice[Device.GAMEPAD])
|
||||||
|
this.setChosenGamepad(gamepadID);
|
||||||
const config = deepCopy(this.getConfig(gamepadID));
|
const config = deepCopy(this.getConfig(gamepadID));
|
||||||
config.custom = this.configs[gamepad]?.custom || {...config.default};
|
config.custom = this.configs[gamepadID]?.custom || {...config.default};
|
||||||
config.ogIcons = {...config.icons};
|
this.configs[gamepadID] = config;
|
||||||
config.icons = this.configs[gamepad]?.icons || {...config.icons};
|
this.scene.gameData?.saveMappingConfigs(gamepadID, this.configs[gamepadID]);
|
||||||
config.currentKeys = this.configs[gamepad]?.currentKeys;
|
|
||||||
if (!this.configs[gamepad]?.currentKeys)
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
else
|
|
||||||
regenerateCustom(config);
|
|
||||||
this.configs[gamepad] = config;
|
|
||||||
this.scene.gameData?.saveCustomMapping(this.chosenGamepad, this.configs[gamepad]?.currentKeys, this.configs[gamepad]?.icons);
|
|
||||||
}
|
}
|
||||||
if (this.chosenGamepad === thisGamepad.id) this.initChosenGamepad(this.chosenGamepad)
|
this.initChosenGamepad(this.selectedDevice[Device.GAMEPAD])
|
||||||
}
|
}
|
||||||
|
|
||||||
setupKeyboard(): void {
|
setupKeyboard(): void {
|
||||||
for (const layout of ['default']) {
|
for (const layout of ['default']) {
|
||||||
const config = deepCopy(this.getConfigKeyboard(layout));
|
const config = deepCopy(this.getConfigKeyboard(layout));
|
||||||
config.custom = this.keyboardConfigs[layout]?.custom || {...config.default};
|
config.custom = this.configs[layout]?.custom || {...config.default};
|
||||||
config.ogIcons = {...config.icons};
|
this.configs[layout] = config;
|
||||||
config.icons = this.keyboardConfigs[layout]?.icons || {...config.icons};
|
this.scene.gameData?.saveMappingConfigs(this.selectedDevice[Device.KEYBOARD], this.configs[layout]);
|
||||||
config.currentKeys = this.keyboardConfigs[layout]?.currentKeys;
|
|
||||||
if (!this.keyboardConfigs[layout]?.currentKeys)
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
else
|
|
||||||
regenerateCustom(config);
|
|
||||||
this.keyboardConfigs[layout] = config;
|
|
||||||
this.scene.gameData?.saveCustomKeyboardMapping(this.chosenKeyboard, this.keyboardConfigs[layout]?.currentKeys, this.keyboardConfigs[layout]?.icons);
|
|
||||||
}
|
}
|
||||||
this.initChosenLayoutKeyboard(this.chosenKeyboard)
|
this.initChosenLayoutKeyboard(this.selectedDevice[Device.KEYBOARD])
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -390,7 +356,7 @@ export class InputsController {
|
||||||
}
|
}
|
||||||
|
|
||||||
checkIfKeyboardIsInit(): void {
|
checkIfKeyboardIsInit(): void {
|
||||||
if (!this.keyboardConfigs[this.chosenKeyboard]?.padID)
|
if (!this.getActiveConfig(Device.KEYBOARD)?.padID)
|
||||||
this.setupKeyboard();
|
this.setupKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,15 +365,14 @@ export class InputsController {
|
||||||
this.checkIfKeyboardIsInit();
|
this.checkIfKeyboardIsInit();
|
||||||
if (this.keys.includes(keyDown)) return;
|
if (this.keys.includes(keyDown)) return;
|
||||||
this.keys.push(keyDown);
|
this.keys.push(keyDown);
|
||||||
const key = getKeyFromMapping(this.keyboardConfigs[this.chosenKeyboard], keyDown);
|
const buttonDown = getButtonWithKeycode(this.getActiveConfig(Device.KEYBOARD), keyDown);
|
||||||
const buttonDown = this.keyboardConfigs[this.chosenKeyboard].custom[key];
|
|
||||||
this.lastSource = 'keyboard';
|
this.lastSource = 'keyboard';
|
||||||
if (buttonDown !== undefined) {
|
if (buttonDown !== undefined) {
|
||||||
this.events.emit('input_down', {
|
this.events.emit('input_down', {
|
||||||
controller_type: 'keyboard',
|
controller_type: 'keyboard',
|
||||||
button: buttonDown,
|
button: buttonDown,
|
||||||
});
|
});
|
||||||
this.setLastProcessedMovementTime(buttonDown, 'keyboard', this.chosenKeyboard);
|
this.setLastProcessedMovementTime(buttonDown, 'keyboard', this.selectedDevice[Device.KEYBOARD]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,8 +380,7 @@ export class InputsController {
|
||||||
const keyDown = event.keyCode;
|
const keyDown = event.keyCode;
|
||||||
this.keys = this.keys.filter(k => k !== keyDown);
|
this.keys = this.keys.filter(k => k !== keyDown);
|
||||||
this.checkIfKeyboardIsInit()
|
this.checkIfKeyboardIsInit()
|
||||||
const key = getKeyFromMapping(this.keyboardConfigs[this.chosenKeyboard], keyDown);
|
const buttonUp = getButtonWithKeycode(this.getActiveConfig(Device.KEYBOARD), keyDown);
|
||||||
const buttonUp = this.keyboardConfigs[this.chosenKeyboard].custom[key];
|
|
||||||
if (buttonUp !== undefined) {
|
if (buttonUp !== undefined) {
|
||||||
this.events.emit('input_up', {
|
this.events.emit('input_up', {
|
||||||
controller_type: 'keyboard',
|
controller_type: 'keyboard',
|
||||||
|
@ -436,14 +400,13 @@ export class InputsController {
|
||||||
* @param value The intensity or value of the button press, if applicable.
|
* @param value The intensity or value of the button press, if applicable.
|
||||||
*/
|
*/
|
||||||
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||||
if (!this.keyboardConfigs[this.chosenKeyboard]?.padID)
|
if (!this.configs[this.selectedDevice[Device.KEYBOARD]]?.padID)
|
||||||
this.setupKeyboard();
|
this.setupKeyboard();
|
||||||
if (!pad) return;
|
if (!pad) return;
|
||||||
if (!this.chosenGamepad)
|
if (!this.selectedDevice[Device.GAMEPAD])
|
||||||
this.setChosenGamepad(pad.id);
|
this.setChosenGamepad(pad.id);
|
||||||
if (!this.gamepadSupport || pad.id.toLowerCase() !== this.chosenGamepad.toLowerCase()) return;
|
if (!this.gamepadSupport || pad.id.toLowerCase() !== this.selectedDevice[Device.GAMEPAD].toLowerCase()) return;
|
||||||
const key = getKeyFromMapping(this.configs[pad.id], button.index);
|
const buttonDown = getButtonWithKeycode(this.getActiveConfig(Device.GAMEPAD), button.index);
|
||||||
const buttonDown = this.configs[pad.id].custom[key];
|
|
||||||
this.lastSource = 'gamepad';
|
this.lastSource = 'gamepad';
|
||||||
if (buttonDown !== undefined) {
|
if (buttonDown !== undefined) {
|
||||||
this.events.emit('input_down', {
|
this.events.emit('input_down', {
|
||||||
|
@ -465,9 +428,8 @@ export class InputsController {
|
||||||
*/
|
*/
|
||||||
gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||||
if (!pad) return;
|
if (!pad) return;
|
||||||
if (!this.gamepadSupport || pad.id !== this.chosenGamepad) return;
|
if (!this.gamepadSupport || pad.id.toLowerCase() !== this.selectedDevice[Device.GAMEPAD]) return;
|
||||||
const key = getKeyFromMapping(this.configs[pad.id], button.index);
|
const buttonUp = getButtonWithKeycode(this.getActiveConfig(Device.GAMEPAD), button.index);
|
||||||
const buttonUp = this.configs[pad.id]?.custom[key];
|
|
||||||
if (buttonUp !== undefined) {
|
if (buttonUp !== undefined) {
|
||||||
this.events.emit('input_up', {
|
this.events.emit('input_up', {
|
||||||
controller_type: 'gamepad',
|
controller_type: 'gamepad',
|
||||||
|
@ -477,100 +439,6 @@ export class InputsController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures keyboard controls for the game, mapping physical keys to game actions.
|
|
||||||
*
|
|
||||||
* @remarks
|
|
||||||
* This method sets up keyboard bindings for game controls using Phaser's `KeyCodes`. Each game action, represented
|
|
||||||
* by a button in the `Button` enum, is associated with one or more physical keys. For example, movement actions
|
|
||||||
* (up, down, left, right) are mapped to both arrow keys and WASD keys. Actions such as submit, cancel, and other
|
|
||||||
* game-specific functions are mapped to appropriate keys like Enter, Space, etc.
|
|
||||||
*
|
|
||||||
* The method does the following:
|
|
||||||
* - Defines a `keyConfig` object that associates each `Button` enum value with an array of `KeyCodes`.
|
|
||||||
* - Iterates over all values of the `Button` enum to set up these key bindings within the Phaser game scene.
|
|
||||||
* - For each button, it adds the respective keys to the game's input system and stores them in `this.buttonKeys`.
|
|
||||||
* - Additional configurations for mobile or alternative input schemes are stored in `mobileKeyConfig`.
|
|
||||||
*
|
|
||||||
* Post-setup, it initializes touch controls (if applicable) and starts listening for keyboard inputs using
|
|
||||||
* `listenInputKeyboard`, ensuring that all configured keys are actively monitored for player interactions.
|
|
||||||
*/
|
|
||||||
setupKeyboardControls(): void {
|
|
||||||
const keyCodes = Phaser.Input.Keyboard.KeyCodes;
|
|
||||||
const keyConfig = {
|
|
||||||
[Button.UP]: [keyCodes.UP, keyCodes.W],
|
|
||||||
[Button.DOWN]: [keyCodes.DOWN, keyCodes.S],
|
|
||||||
[Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
|
|
||||||
[Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
|
|
||||||
[Button.SUBMIT]: [keyCodes.ENTER],
|
|
||||||
[Button.ACTION]: [keyCodes.SPACE, keyCodes.Z],
|
|
||||||
[Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X],
|
|
||||||
[Button.MENU]: [keyCodes.ESC, keyCodes.M],
|
|
||||||
[Button.STATS]: [keyCodes.SHIFT, keyCodes.C],
|
|
||||||
[Button.CYCLE_SHINY]: [keyCodes.R],
|
|
||||||
[Button.CYCLE_FORM]: [keyCodes.F],
|
|
||||||
[Button.CYCLE_GENDER]: [keyCodes.G],
|
|
||||||
[Button.CYCLE_ABILITY]: [keyCodes.E],
|
|
||||||
[Button.CYCLE_NATURE]: [keyCodes.N],
|
|
||||||
[Button.CYCLE_VARIANT]: [keyCodes.V],
|
|
||||||
[Button.SPEED_UP]: [keyCodes.PLUS],
|
|
||||||
[Button.SLOW_DOWN]: [keyCodes.MINUS]
|
|
||||||
};
|
|
||||||
const mobileKeyConfig = {};
|
|
||||||
for (const b of Utils.getEnumValues(Button)) {
|
|
||||||
const keys: Phaser.Input.Keyboard.Key[] = [];
|
|
||||||
if (keyConfig.hasOwnProperty(b)) {
|
|
||||||
for (let k of keyConfig[b])
|
|
||||||
keys.push(this.scene.input.keyboard.addKey(k, false));
|
|
||||||
mobileKeyConfig[Button[b]] = keys[0];
|
|
||||||
}
|
|
||||||
this.buttonKeys[b] = keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
initTouchControls(mobileKeyConfig);
|
|
||||||
this.listenInputKeyboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets up event listeners for keyboard inputs on all registered keys.
|
|
||||||
*
|
|
||||||
* @remarks
|
|
||||||
* This method iterates over an array of keyboard button rows (`this.buttonKeys`), adding 'down' and 'up'
|
|
||||||
* event listeners for each key. These listeners handle key press and release actions respectively.
|
|
||||||
*
|
|
||||||
* - **Key Down Event**: When a key is pressed down, the method emits an 'input_down' event with the button
|
|
||||||
* and the source ('keyboard'). It also records the time and state of the key press by calling
|
|
||||||
* `setLastProcessedMovementTime`.
|
|
||||||
*
|
|
||||||
* - **Key Up Event**: When a key is released, the method emits an 'input_up' event similarly, specifying the button
|
|
||||||
* and source. It then clears the recorded press time and state by calling
|
|
||||||
* `delLastProcessedMovementTime`.
|
|
||||||
*
|
|
||||||
* This setup ensures that each key on the keyboard is monitored for press and release events,
|
|
||||||
* and that these events are properly communicated within the system.
|
|
||||||
*/
|
|
||||||
listenInputKeyboard(): void {
|
|
||||||
this.buttonKeys.forEach((row, index) => {
|
|
||||||
for (const key of row) {
|
|
||||||
key.on('down', () => {
|
|
||||||
this.lastSource = 'keyboard';
|
|
||||||
this.events.emit('input_down', {
|
|
||||||
controller_type: 'keyboard',
|
|
||||||
button: index,
|
|
||||||
});
|
|
||||||
this.setLastProcessedMovementTime(index, 'keyboard');
|
|
||||||
});
|
|
||||||
key.on('up', () => {
|
|
||||||
this.events.emit('input_up', {
|
|
||||||
controller_type: 'keyboard',
|
|
||||||
button: index,
|
|
||||||
});
|
|
||||||
this.delLastProcessedMovementTime(index);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the configuration object for a gamepad based on its identifier. The method identifies specific gamepad models
|
* Retrieves the configuration object for a gamepad based on its identifier. The method identifies specific gamepad models
|
||||||
* based on substrings in the identifier and returns predefined configurations for recognized models.
|
* based on substrings in the identifier and returns predefined configurations for recognized models.
|
||||||
|
@ -633,7 +501,7 @@ export class InputsController {
|
||||||
this.interactions[button].pressTime = this.time.now;
|
this.interactions[button].pressTime = this.time.now;
|
||||||
this.interactions[button].isPressed = true;
|
this.interactions[button].isPressed = true;
|
||||||
this.interactions[button].source = source;
|
this.interactions[button].source = source;
|
||||||
this.interactions[button].sourceName = sourceName;
|
this.interactions[button].sourceName = sourceName.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -741,24 +609,13 @@ export class InputsController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the active configuration for the currently chosen gamepad.
|
* Retrieves the active configuration for the currently chosen device.
|
||||||
* It checks if a specific gamepad ID is stored under the chosen gamepad's configurations and returns it.
|
* It checks if a specific device ID is stored in configurations and returns it.
|
||||||
*
|
*
|
||||||
* @returns InterfaceConfig The configuration object for the active gamepad, or null if not set.
|
* @returns InterfaceConfig The configuration object for the active gamepad, or null if not set.
|
||||||
*/
|
*/
|
||||||
getActiveConfig(): InterfaceConfig | null {
|
getActiveConfig(device: Device) {
|
||||||
if (this.configs[this.chosenGamepad]?.padID) return this.configs[this.chosenGamepad]
|
if (this.configs[this.selectedDevice[device]]?.padID) return this.configs[this.selectedDevice[device]]
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the active configuration for the currently chosen gamepad.
|
|
||||||
* It checks if a specific gamepad ID is stored under the chosen gamepad's configurations and returns it.
|
|
||||||
*
|
|
||||||
* @returns InterfaceConfig The configuration object for the active gamepad, or null if not set.
|
|
||||||
*/
|
|
||||||
getActiveKeyboardConfig(): InterfaceConfig | null {
|
|
||||||
if (this.keyboardConfigs[this.chosenKeyboard]?.padID) return this.keyboardConfigs[this.chosenKeyboard]
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -769,20 +626,17 @@ export class InputsController {
|
||||||
* @param gamepadName The identifier of the gamepad to configure.
|
* @param gamepadName The identifier of the gamepad to configure.
|
||||||
* @param customMappings The custom mapping configuration to apply to the gamepad.
|
* @param customMappings The custom mapping configuration to apply to the gamepad.
|
||||||
*/
|
*/
|
||||||
injectConfig(gamepadName: String, customMappings): void {
|
injectConfig(selectedDevice: string, mappingConfigs): void {
|
||||||
if (!this.configs[gamepadName]) this.configs[gamepadName] = {};
|
if (!this.configs[selectedDevice]) this.configs[selectedDevice] = {};
|
||||||
this.configs[gamepadName].currentKeys = customMappings.currentKeys;
|
this.configs[selectedDevice].custom = mappingConfigs.custom;
|
||||||
this.configs[gamepadName].icons = customMappings.icons;
|
this.configs[selectedDevice].main = mappingConfigs.main;
|
||||||
}
|
this.configs[selectedDevice].alt = mappingConfigs.alt;
|
||||||
injectKeyboardConfig(layout: string, customMappings): void {
|
regenerateIdentifiers(this.configs[selectedDevice]);
|
||||||
if (!this.keyboardConfigs[layout]) this.keyboardConfigs[layout] = {};
|
|
||||||
this.keyboardConfigs[layout].currentKeys = customMappings.currentKeys;
|
|
||||||
this.keyboardConfigs[layout].icons = customMappings.icons;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
swapBinding(config, settingName, pressedButton): void {
|
swapBinding(config, settingName, pressedButton): void {
|
||||||
this.pauseUpdate = true;
|
this.pauseUpdate = true;
|
||||||
swapCurrentKeys(config, settingName, pressedButton)
|
swap(config, settingName, pressedButton);
|
||||||
setTimeout(() => this.pauseUpdate = false, 500);
|
setTimeout(() => this.pauseUpdate = false, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -233,8 +233,7 @@ export class GameData {
|
||||||
this.scene = scene;
|
this.scene = scene;
|
||||||
this.loadSettings();
|
this.loadSettings();
|
||||||
this.loadGamepadSettings();
|
this.loadGamepadSettings();
|
||||||
this.loadCustomMapping();
|
this.loadMappingConfigs();
|
||||||
this.loadCustomKeyboardMapping();
|
|
||||||
this.trainerId = Utils.randInt(65536);
|
this.trainerId = Utils.randInt(65536);
|
||||||
this.secretId = Utils.randInt(65536);
|
this.secretId = Utils.randInt(65536);
|
||||||
this.starterData = {};
|
this.starterData = {};
|
||||||
|
@ -498,45 +497,23 @@ export class GameData {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public saveCustomMapping(gamepadName: string, currentKeys, icons): boolean {
|
public saveMappingConfigs(gamepadName: string, config): boolean {
|
||||||
let customMappings: object = {};
|
const key = gamepadName.toLowerCase();
|
||||||
if (localStorage.hasOwnProperty('customMapping'))
|
let mappingConfigs: object = {};
|
||||||
customMappings = JSON.parse(localStorage.getItem('customMapping'));
|
if (localStorage.hasOwnProperty('mappingConfigs'))
|
||||||
customMappings[gamepadName] = {
|
mappingConfigs = JSON.parse(localStorage.getItem('mappingConfigs'));
|
||||||
currentKeys,
|
if (!mappingConfigs[key]) mappingConfigs[key] = {};
|
||||||
icons
|
mappingConfigs[key].custom = config.custom;
|
||||||
};
|
localStorage.setItem('mappingConfigs', JSON.stringify(mappingConfigs));
|
||||||
localStorage.setItem('customMapping', JSON.stringify(customMappings));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public saveCustomKeyboardMapping(keyboardLayout: string, currentKeys, icons): boolean {
|
public loadMappingConfigs(): boolean {
|
||||||
let customKeyboardMappings: object = {};
|
if (!localStorage.hasOwnProperty('mappingConfigs'))
|
||||||
if (localStorage.hasOwnProperty('customKeyboardMappings'))
|
|
||||||
customKeyboardMappings = JSON.parse(localStorage.getItem('customKeyboardMappings'));
|
|
||||||
customKeyboardMappings[keyboardLayout] = {
|
|
||||||
currentKeys,
|
|
||||||
icons
|
|
||||||
};
|
|
||||||
localStorage.setItem('customKeyboardMappings', JSON.stringify(customKeyboardMappings));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public loadCustomKeyboardMapping(): boolean {
|
|
||||||
if (!localStorage.hasOwnProperty('customKeyboardMappings'))
|
|
||||||
return false;
|
return false;
|
||||||
const customKeyboardMappings = JSON.parse(localStorage.getItem('customKeyboardMappings'));
|
const mappingConfigs = JSON.parse(localStorage.getItem('mappingConfigs'));
|
||||||
for (const key of Object.keys(customKeyboardMappings))
|
for (const key of Object.keys(mappingConfigs))
|
||||||
this.scene.inputController.injectKeyboardConfig(key, customKeyboardMappings[key]);
|
this.scene.inputController.injectConfig(key, mappingConfigs[key]);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public loadCustomMapping(): boolean {
|
|
||||||
if (!localStorage.hasOwnProperty('customMapping'))
|
|
||||||
return false;
|
|
||||||
const customMappings = JSON.parse(localStorage.getItem('customMapping'));
|
|
||||||
for (const key of Object.keys(customMappings))
|
|
||||||
this.scene.inputController.injectConfig(key, customMappings[key]);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,10 @@ import {Button} from "../enums/buttons";
|
||||||
export enum SettingGamepad {
|
export enum SettingGamepad {
|
||||||
Default_Controller = "DEFAULT_CONTROLLER",
|
Default_Controller = "DEFAULT_CONTROLLER",
|
||||||
Gamepad_Support = "GAMEPAD_SUPPORT",
|
Gamepad_Support = "GAMEPAD_SUPPORT",
|
||||||
|
Button_Up = "BUTTON_UP",
|
||||||
|
Button_Down = "BUTTON_DOWN",
|
||||||
|
Button_Left = "BUTTON_LEFT",
|
||||||
|
Button_Right = "BUTTON_RIGHT",
|
||||||
Button_Action = "BUTTON_ACTION",
|
Button_Action = "BUTTON_ACTION",
|
||||||
Button_Cancel = "BUTTON_CANCEL",
|
Button_Cancel = "BUTTON_CANCEL",
|
||||||
Button_Menu = "BUTTON_MENU",
|
Button_Menu = "BUTTON_MENU",
|
||||||
|
@ -26,6 +30,10 @@ export enum SettingGamepad {
|
||||||
export const settingGamepadOptions: SettingOptions = {
|
export const settingGamepadOptions: SettingOptions = {
|
||||||
[SettingGamepad.Default_Controller]: ['Default', 'Change'],
|
[SettingGamepad.Default_Controller]: ['Default', 'Change'],
|
||||||
[SettingGamepad.Gamepad_Support]: ['Auto', 'Disabled'],
|
[SettingGamepad.Gamepad_Support]: ['Auto', 'Disabled'],
|
||||||
|
[SettingGamepad.Button_Up]: [`KEY ${Button.UP.toString()}`, 'Change'],
|
||||||
|
[SettingGamepad.Button_Down]: [`KEY ${Button.DOWN.toString()}`, 'Change'],
|
||||||
|
[SettingGamepad.Button_Left]: [`KEY ${Button.LEFT.toString()}`, 'Change'],
|
||||||
|
[SettingGamepad.Button_Right]: [`KEY ${Button.RIGHT.toString()}`, 'Change'],
|
||||||
[SettingGamepad.Button_Action]: [`KEY ${Button.ACTION.toString()}`, 'Change'],
|
[SettingGamepad.Button_Action]: [`KEY ${Button.ACTION.toString()}`, 'Change'],
|
||||||
[SettingGamepad.Button_Cancel]: [`KEY ${Button.CANCEL.toString()}`, 'Change'],
|
[SettingGamepad.Button_Cancel]: [`KEY ${Button.CANCEL.toString()}`, 'Change'],
|
||||||
[SettingGamepad.Button_Menu]: [`KEY ${Button.MENU.toString()}`, 'Change'],
|
[SettingGamepad.Button_Menu]: [`KEY ${Button.MENU.toString()}`, 'Change'],
|
||||||
|
@ -44,6 +52,10 @@ export const settingGamepadOptions: SettingOptions = {
|
||||||
export const settingGamepadDefaults: SettingDefaults = {
|
export const settingGamepadDefaults: SettingDefaults = {
|
||||||
[SettingGamepad.Default_Controller]: 0,
|
[SettingGamepad.Default_Controller]: 0,
|
||||||
[SettingGamepad.Gamepad_Support]: 0,
|
[SettingGamepad.Gamepad_Support]: 0,
|
||||||
|
[SettingGamepad.Button_Up]: 0,
|
||||||
|
[SettingGamepad.Button_Down]: 0,
|
||||||
|
[SettingGamepad.Button_Left]: 0,
|
||||||
|
[SettingGamepad.Button_Right]: 0,
|
||||||
[SettingGamepad.Button_Action]: 0,
|
[SettingGamepad.Button_Action]: 0,
|
||||||
[SettingGamepad.Button_Cancel]: 0,
|
[SettingGamepad.Button_Cancel]: 0,
|
||||||
[SettingGamepad.Button_Menu]: 0,
|
[SettingGamepad.Button_Menu]: 0,
|
||||||
|
|
|
@ -1,97 +0,0 @@
|
||||||
import {Button} from "#app/enums/buttons";
|
|
||||||
|
|
||||||
export enum SettingInterfaceGamepad {
|
|
||||||
Default_Controller = "DEFAULT_CONTROLLER",
|
|
||||||
Gamepad_Support = "GAMEPAD_SUPPORT",
|
|
||||||
Button_Action = "BUTTON_ACTION",
|
|
||||||
Button_Cancel = "BUTTON_CANCEL",
|
|
||||||
Button_Menu = "BUTTON_MENU",
|
|
||||||
Button_Stats = "BUTTON_STATS",
|
|
||||||
Button_Cycle_Form = "BUTTON_CYCLE_FORM",
|
|
||||||
Button_Cycle_Shiny = "BUTTON_CYCLE_SHINY",
|
|
||||||
Button_Cycle_Gender = "BUTTON_CYCLE_GENDER",
|
|
||||||
Button_Cycle_Ability = "BUTTON_CYCLE_ABILITY",
|
|
||||||
Button_Cycle_Nature = "BUTTON_CYCLE_NATURE",
|
|
||||||
Button_Cycle_Variant = "BUTTON_CYCLE_VARIANT",
|
|
||||||
Button_Speed_Up = "BUTTON_SPEED_UP",
|
|
||||||
Button_Slow_Down = "BUTTON_SLOW_DOWN",
|
|
||||||
Button_Submit = "BUTTON_SUBMIT",
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic pad mapping
|
|
||||||
*/
|
|
||||||
const pad_xbox360 = {
|
|
||||||
padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)',
|
|
||||||
padType: 'xbox',
|
|
||||||
gamepadMapping: {
|
|
||||||
RC_S: 0,
|
|
||||||
RC_E: 1,
|
|
||||||
RC_W: 2,
|
|
||||||
RC_N: 3,
|
|
||||||
START: 9,
|
|
||||||
SELECT: 8,
|
|
||||||
LB: 4,
|
|
||||||
RB: 5,
|
|
||||||
LT: 6,
|
|
||||||
RT: 7,
|
|
||||||
LS: 10,
|
|
||||||
RS: 11,
|
|
||||||
LC_N: 12,
|
|
||||||
LC_S: 13,
|
|
||||||
LC_W: 14,
|
|
||||||
LC_E: 15
|
|
||||||
},
|
|
||||||
icons: {
|
|
||||||
RC_S: "T_X_A_Color_Alt.png",
|
|
||||||
RC_E: "T_X_B_Color_Alt.png",
|
|
||||||
RC_W: "T_X_X_Color_Alt.png",
|
|
||||||
RC_N: "T_X_Y_Color_Alt.png",
|
|
||||||
START: "T_X_X_Alt.png",
|
|
||||||
SELECT: "T_X_Share_Alt.png",
|
|
||||||
LB: "T_X_LB_Alt.png",
|
|
||||||
RB: "T_X_RB_Alt.png",
|
|
||||||
LT: "T_X_LT_Alt.png",
|
|
||||||
RT: "T_X_RT_Alt.png",
|
|
||||||
LS: "T_X_Left_Stick_Click_Alt_Alt.png",
|
|
||||||
RS: "T_X_Right_Stick_Click_Alt_Alt.png",
|
|
||||||
LC_N: "T_X_Dpad_Up_Alt.png",
|
|
||||||
LC_S: "T_X_Dpad_Down_Alt.png",
|
|
||||||
LC_W: "T_X_Dpad_Left_Alt.png",
|
|
||||||
LC_E: "T_X_Dpad_Right_Alt.png",
|
|
||||||
},
|
|
||||||
setting: {
|
|
||||||
RC_S: SettingInterfaceGamepad.Button_Action,
|
|
||||||
RC_E: SettingInterfaceGamepad.Button_Cancel,
|
|
||||||
RC_W: SettingInterfaceGamepad.Button_Cycle_Nature,
|
|
||||||
RC_N: SettingInterfaceGamepad.Button_Cycle_Variant,
|
|
||||||
START: SettingInterfaceGamepad.Button_Menu,
|
|
||||||
SELECT: SettingInterfaceGamepad.Button_Stats,
|
|
||||||
LB: SettingInterfaceGamepad.Button_Cycle_Form,
|
|
||||||
RB: SettingInterfaceGamepad.Button_Cycle_Shiny,
|
|
||||||
LT: SettingInterfaceGamepad.Button_Cycle_Gender,
|
|
||||||
RT: SettingInterfaceGamepad.Button_Cycle_Ability,
|
|
||||||
LS: SettingInterfaceGamepad.Button_Speed_Up,
|
|
||||||
RS: SettingInterfaceGamepad.Button_Slow_Down,
|
|
||||||
},
|
|
||||||
default: {
|
|
||||||
RC_S: Button.ACTION, //5
|
|
||||||
RC_E: Button.CANCEL, // 6
|
|
||||||
RC_W: Button.CYCLE_NATURE,
|
|
||||||
RC_N: Button.CYCLE_VARIANT, //14
|
|
||||||
START: Button.MENU, //7
|
|
||||||
SELECT: Button.STATS, //8
|
|
||||||
LB: Button.CYCLE_FORM,
|
|
||||||
RB: Button.CYCLE_SHINY,
|
|
||||||
LT: Button.CYCLE_GENDER,
|
|
||||||
RT: Button.CYCLE_ABILITY,
|
|
||||||
LS: Button.SPEED_UP,
|
|
||||||
RS: Button.SLOW_DOWN,
|
|
||||||
LC_N: Button.UP,
|
|
||||||
LC_S: Button.DOWN,
|
|
||||||
LC_W: Button.LEFT,
|
|
||||||
LC_E: Button.RIGHT,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default pad_xbox360;
|
|
|
@ -1,6 +1,6 @@
|
||||||
import {Button} from "#app/enums/buttons";
|
import {Button} from "#app/enums/buttons";
|
||||||
|
|
||||||
export enum SettingInterfaceKeyboard {
|
export enum SettingInterface {
|
||||||
Default_Layout = "DEFAULT_LAYOUT",
|
Default_Layout = "DEFAULT_LAYOUT",
|
||||||
Button_Up = "BUTTON_UP",
|
Button_Up = "BUTTON_UP",
|
||||||
Alt_Button_Up = "ALT_BUTTON_UP",
|
Alt_Button_Up = "ALT_BUTTON_UP",
|
||||||
|
@ -202,80 +202,79 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_BACKSPACE: "T_Backspace_Alt_Key_Dark.png",
|
KEY_BACKSPACE: "T_Backspace_Alt_Key_Dark.png",
|
||||||
KEY_ALT: "T_Alt_Key_Dark.png"
|
KEY_ALT: "T_Alt_Key_Dark.png"
|
||||||
},
|
},
|
||||||
setting: {
|
settings: {
|
||||||
KEY_ARROW_UP: SettingInterfaceKeyboard.Button_Up,
|
[SettingInterface.Button_Up]: Button.UP,
|
||||||
KEY_ARROW_DOWN: SettingInterfaceKeyboard.Button_Down,
|
[SettingInterface.Button_Down]: Button.DOWN,
|
||||||
KEY_ARROW_LEFT: SettingInterfaceKeyboard.Button_Left,
|
[SettingInterface.Button_Left]: Button.LEFT,
|
||||||
KEY_ARROW_RIGHT: SettingInterfaceKeyboard.Button_Right,
|
[SettingInterface.Button_Right]: Button.RIGHT,
|
||||||
KEY_ENTER: SettingInterfaceKeyboard.Button_Submit,
|
[SettingInterface.Button_Submit]: Button.SUBMIT,
|
||||||
KEY_SPACE: SettingInterfaceKeyboard.Button_Action,
|
[SettingInterface.Button_Action]: Button.ACTION,
|
||||||
KEY_BACKSPACE: SettingInterfaceKeyboard.Button_Cancel,
|
[SettingInterface.Button_Cancel]: Button.CANCEL,
|
||||||
KEY_ESC: SettingInterfaceKeyboard.Button_Menu,
|
[SettingInterface.Button_Menu]: Button.MENU,
|
||||||
KEY_C: SettingInterfaceKeyboard.Button_Stats,
|
[SettingInterface.Button_Stats]: Button.STATS,
|
||||||
KEY_R: SettingInterfaceKeyboard.Button_Cycle_Shiny,
|
[SettingInterface.Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
KEY_F: SettingInterfaceKeyboard.Button_Cycle_Form,
|
[SettingInterface.Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
KEY_G: SettingInterfaceKeyboard.Button_Cycle_Gender,
|
[SettingInterface.Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
KEY_E: SettingInterfaceKeyboard.Button_Cycle_Ability,
|
[SettingInterface.Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
KEY_N: SettingInterfaceKeyboard.Button_Cycle_Nature,
|
[SettingInterface.Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
KEY_V: SettingInterfaceKeyboard.Button_Cycle_Variant,
|
[SettingInterface.Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
KEY_PLUS: SettingInterfaceKeyboard.Button_Speed_Up,
|
[SettingInterface.Button_Speed_Up]: Button.SPEED_UP,
|
||||||
KEY_MINUS: SettingInterfaceKeyboard.Button_Slow_Down,
|
[SettingInterface.Button_Slow_Down]: Button.SLOW_DOWN,
|
||||||
|
[SettingInterface.Alt_Button_Up]: Button.UP,
|
||||||
KEY_Z: SettingInterfaceKeyboard.Alt_Button_Up,
|
[SettingInterface.Alt_Button_Down]: Button.DOWN,
|
||||||
KEY_S: SettingInterfaceKeyboard.Alt_Button_Down,
|
[SettingInterface.Alt_Button_Left]: Button.LEFT,
|
||||||
KEY_Q: SettingInterfaceKeyboard.Alt_Button_Left,
|
[SettingInterface.Alt_Button_Right]: Button.RIGHT,
|
||||||
KEY_D: SettingInterfaceKeyboard.Alt_Button_Right,
|
[SettingInterface.Alt_Button_Submit]: Button.SUBMIT,
|
||||||
KEY_CTRL: SettingInterfaceKeyboard.Alt_Button_Submit,
|
[SettingInterface.Alt_Button_Action]: Button.ACTION,
|
||||||
KEY_W: SettingInterfaceKeyboard.Alt_Button_Action,
|
[SettingInterface.Alt_Button_Cancel]: Button.CANCEL,
|
||||||
KEY_X: SettingInterfaceKeyboard.Alt_Button_Cancel,
|
[SettingInterface.Alt_Button_Menu]: Button.MENU,
|
||||||
KEY_TAB: SettingInterfaceKeyboard.Alt_Button_Menu,
|
[SettingInterface.Alt_Button_Stats]: Button.STATS,
|
||||||
KEY_SHIFT: SettingInterfaceKeyboard.Alt_Button_Stats,
|
[SettingInterface.Alt_Button_Cycle_Shiny]: Button.CYCLE_SHINY,
|
||||||
KEY_P: SettingInterfaceKeyboard.Alt_Button_Cycle_Shiny,
|
[SettingInterface.Alt_Button_Cycle_Form]: Button.CYCLE_FORM,
|
||||||
KEY_M: SettingInterfaceKeyboard.Alt_Button_Cycle_Form,
|
[SettingInterface.Alt_Button_Cycle_Gender]: Button.CYCLE_GENDER,
|
||||||
KEY_O: SettingInterfaceKeyboard.Alt_Button_Cycle_Gender,
|
[SettingInterface.Alt_Button_Cycle_Ability]: Button.CYCLE_ABILITY,
|
||||||
KEY_L: SettingInterfaceKeyboard.Alt_Button_Cycle_Ability,
|
[SettingInterface.Alt_Button_Cycle_Nature]: Button.CYCLE_NATURE,
|
||||||
KEY_I: SettingInterfaceKeyboard.Alt_Button_Cycle_Nature,
|
[SettingInterface.Alt_Button_Cycle_Variant]: Button.CYCLE_VARIANT,
|
||||||
KEY_K: SettingInterfaceKeyboard.Alt_Button_Cycle_Variant,
|
[SettingInterface.Alt_Button_Speed_Up]: Button.SPEED_UP,
|
||||||
KEY_PAGE_UP: SettingInterfaceKeyboard.Alt_Button_Speed_Up,
|
[SettingInterface.Alt_Button_Slow_Down]: Button.SLOW_DOWN,
|
||||||
KEY_PAGE_DOWN: SettingInterfaceKeyboard.Alt_Button_Slow_Down,
|
|
||||||
},
|
},
|
||||||
default: {
|
default: {
|
||||||
KEY_ARROW_UP: Button.UP,
|
KEY_ARROW_UP: SettingInterface.Button_Up,
|
||||||
KEY_ARROW_DOWN: Button.DOWN,
|
KEY_ARROW_DOWN: SettingInterface.Button_Down,
|
||||||
KEY_ARROW_LEFT: Button.LEFT,
|
KEY_ARROW_LEFT: SettingInterface.Button_Left,
|
||||||
KEY_ARROW_RIGHT: Button.RIGHT,
|
KEY_ARROW_RIGHT: SettingInterface.Button_Right,
|
||||||
KEY_ENTER: Button.SUBMIT,
|
KEY_ENTER: SettingInterface.Button_Submit,
|
||||||
KEY_SPACE: Button.ACTION,
|
KEY_SPACE: SettingInterface.Button_Action,
|
||||||
KEY_BACKSPACE: Button.CANCEL,
|
KEY_BACKSPACE: SettingInterface.Button_Cancel,
|
||||||
KEY_ESC: Button.MENU,
|
KEY_ESC: SettingInterface.Button_Menu,
|
||||||
KEY_C: Button.STATS,
|
KEY_C: SettingInterface.Button_Stats,
|
||||||
KEY_R: Button.CYCLE_SHINY,
|
KEY_R: SettingInterface.Button_Cycle_Shiny,
|
||||||
KEY_F: Button.CYCLE_FORM,
|
KEY_F: SettingInterface.Button_Cycle_Form,
|
||||||
KEY_G: Button.CYCLE_GENDER,
|
KEY_G: SettingInterface.Button_Cycle_Gender,
|
||||||
KEY_E: Button.CYCLE_ABILITY,
|
KEY_E: SettingInterface.Button_Cycle_Ability,
|
||||||
KEY_N: Button.CYCLE_NATURE,
|
KEY_N: SettingInterface.Button_Cycle_Nature,
|
||||||
KEY_V: Button.CYCLE_VARIANT,
|
KEY_V: SettingInterface.Button_Cycle_Variant,
|
||||||
KEY_PLUS: Button.SPEED_UP,
|
KEY_PLUS: SettingInterface.Button_Speed_Up,
|
||||||
KEY_MINUS: Button.SLOW_DOWN,
|
KEY_MINUS: SettingInterface.Button_Slow_Down,
|
||||||
KEY_A: -1,
|
KEY_A: -1,
|
||||||
KEY_B: -1,
|
KEY_B: -1,
|
||||||
KEY_D: Button.RIGHT,
|
KEY_D: SettingInterface.Alt_Button_Right,
|
||||||
KEY_H: -1,
|
KEY_H: -1,
|
||||||
KEY_I: Button.CYCLE_NATURE,
|
KEY_I: SettingInterface.Alt_Button_Cycle_Nature,
|
||||||
KEY_J: -1,
|
KEY_J: -1,
|
||||||
KEY_K: Button.CYCLE_VARIANT,
|
KEY_K: SettingInterface.Alt_Button_Cycle_Variant,
|
||||||
KEY_L: Button.CYCLE_ABILITY,
|
KEY_L: SettingInterface.Alt_Button_Cycle_Ability,
|
||||||
KEY_M: Button.CYCLE_FORM,
|
KEY_M: SettingInterface.Alt_Button_Cycle_Form,
|
||||||
KEY_O: Button.CYCLE_GENDER,
|
KEY_O: SettingInterface.Alt_Button_Cycle_Gender,
|
||||||
KEY_P: Button.CYCLE_SHINY,
|
KEY_P: SettingInterface.Alt_Button_Cycle_Shiny,
|
||||||
KEY_Q: Button.LEFT,
|
KEY_Q: SettingInterface.Alt_Button_Left,
|
||||||
KEY_S: Button.DOWN,
|
KEY_S: SettingInterface.Alt_Button_Down,
|
||||||
KEY_T: -1,
|
KEY_T: -1,
|
||||||
KEY_U: -1,
|
KEY_U: -1,
|
||||||
KEY_W: Button.ACTION,
|
KEY_W: SettingInterface.Alt_Button_Action,
|
||||||
KEY_X: Button.CANCEL,
|
KEY_X: SettingInterface.Alt_Button_Cancel,
|
||||||
KEY_Y: -1,
|
KEY_Y: -1,
|
||||||
KEY_Z: Button.UP,
|
KEY_Z: SettingInterface.Alt_Button_Up,
|
||||||
KEY_0: -1,
|
KEY_0: -1,
|
||||||
KEY_1: -1,
|
KEY_1: -1,
|
||||||
KEY_2: -1,
|
KEY_2: -1,
|
||||||
|
@ -286,7 +285,7 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_7: -1,
|
KEY_7: -1,
|
||||||
KEY_8: -1,
|
KEY_8: -1,
|
||||||
KEY_9: -1,
|
KEY_9: -1,
|
||||||
KEY_CTRL: Button.SUBMIT,
|
KEY_CTRL: SettingInterface.Alt_Button_Submit,
|
||||||
KEY_DEL: -1,
|
KEY_DEL: -1,
|
||||||
KEY_END: -1,
|
KEY_END: -1,
|
||||||
KEY_F1: -1,
|
KEY_F1: -1,
|
||||||
|
@ -303,17 +302,19 @@ const cfg_keyboard_azerty = {
|
||||||
KEY_F12: -1,
|
KEY_F12: -1,
|
||||||
KEY_HOME: -1,
|
KEY_HOME: -1,
|
||||||
KEY_INSERT: -1,
|
KEY_INSERT: -1,
|
||||||
KEY_PAGE_DOWN: Button.SLOW_DOWN,
|
KEY_PAGE_DOWN: SettingInterface.Alt_Button_Slow_Down,
|
||||||
KEY_PAGE_UP: Button.SPEED_UP,
|
KEY_PAGE_UP: SettingInterface.Alt_Button_Speed_Up,
|
||||||
KEY_QUOTATION: -1,
|
KEY_QUOTATION: -1,
|
||||||
KEY_SHIFT: Button.STATS,
|
KEY_SHIFT: SettingInterface.Alt_Button_Stats,
|
||||||
KEY_TAB: Button.MENU,
|
KEY_TAB: SettingInterface.Alt_Button_Menu,
|
||||||
KEY_TILDE: -1,
|
KEY_TILDE: -1,
|
||||||
KEY_LEFT_BRACKET: -1,
|
KEY_LEFT_BRACKET: -1,
|
||||||
KEY_RIGHT_BRACKET: -1,
|
KEY_RIGHT_BRACKET: -1,
|
||||||
KEY_SEMICOLON: -1,
|
KEY_SEMICOLON: -1,
|
||||||
KEY_ALT: -1
|
KEY_ALT: -1
|
||||||
}
|
},
|
||||||
|
main: [],
|
||||||
|
alt: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default cfg_keyboard_azerty;
|
export default cfg_keyboard_azerty;
|
|
@ -1,257 +0,0 @@
|
||||||
import {beforeEach, expect, describe, it} from "vitest";
|
|
||||||
import cfg_gamepad_example, {SettingInterfaceGamepad} from "./cfg_gamepad_example";
|
|
||||||
import {
|
|
||||||
getIconWithPressedButton,
|
|
||||||
getIconWithSettingName,
|
|
||||||
getKeyAndActionFromCurrentKeysWithSettingName,
|
|
||||||
getKeyForSettingName,
|
|
||||||
getKeyFromMapping,
|
|
||||||
getKeyWithAction, regenerateCustom,
|
|
||||||
reloadCurrentKeys,
|
|
||||||
swapCurrentKeys,
|
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
import {Button} from "#app/enums/buttons";
|
|
||||||
|
|
||||||
|
|
||||||
function deepCopy(config) {
|
|
||||||
return JSON.parse(JSON.stringify(config));
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Test Keyboard', () => {
|
|
||||||
let config;
|
|
||||||
beforeEach(() => {
|
|
||||||
const temp = {...cfg_gamepad_example}
|
|
||||||
config = deepCopy(temp);
|
|
||||||
config.custom = {...config.default}
|
|
||||||
config.ogIcons = {...config.icons}
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if config is loaded', () => {
|
|
||||||
expect(config).not.toBeNull();
|
|
||||||
});
|
|
||||||
it('Check key for setting name', () => {
|
|
||||||
const settingName = SettingInterfaceGamepad.Button_Action;
|
|
||||||
const key = getKeyForSettingName(config, settingName);
|
|
||||||
expect(config.custom[key]).toEqual(Button.ACTION);
|
|
||||||
});
|
|
||||||
it('Check key for Keyboard KeyCode', () => {
|
|
||||||
const key = getKeyFromMapping(config, 0);
|
|
||||||
expect(config.custom[key]).toEqual(Button.ACTION);
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to action not alt', () => {
|
|
||||||
const key = getKeyWithAction(config, Button.ACTION, false);
|
|
||||||
expect(key).toEqual('RC_S');
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to setting name', () => {
|
|
||||||
const settingName = SettingInterfaceGamepad.Button_Action;
|
|
||||||
const { key } = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
expect(key).toEqual('RC_S');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to key code', () => {
|
|
||||||
const icon = getIconWithPressedButton(config, 0);
|
|
||||||
expect(icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to setting name', () => {
|
|
||||||
const settingName = SettingInterfaceGamepad.Button_Action;
|
|
||||||
const icon = getIconWithSettingName(config, settingName);
|
|
||||||
expect(icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('Check if current keys return the same', () => {
|
|
||||||
const settingNameA = SettingInterfaceGamepad.Button_Action;
|
|
||||||
const keyA = getKeyForSettingName(config, settingNameA);
|
|
||||||
const action = config.custom[keyA];
|
|
||||||
expect(keyA).toEqual("RC_S");
|
|
||||||
expect(action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual(keyA);
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(action);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceGamepad.Button_Action;
|
|
||||||
swapCurrentKeys(config, settingNameA, 1);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.CANCEL);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new double swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceGamepad.Button_Action;
|
|
||||||
|
|
||||||
swapCurrentKeys(config, settingNameA, 1);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.CANCEL);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, settingNameA, 2);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.CYCLE_NATURE);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new triple swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceGamepad.Button_Action;
|
|
||||||
const settingNameB = SettingInterfaceGamepad.Button_Cancel;
|
|
||||||
const settingNameC = SettingInterfaceGamepad.Button_Cycle_Nature;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CANCEL);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].key).toEqual("RC_W");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].action).toEqual(Button.CYCLE_NATURE);
|
|
||||||
|
|
||||||
let iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
let iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
let iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
expect(iconA).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(iconB).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(iconC).toEqual('T_X_X_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 1); // cancel
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].key).toEqual("RC_W");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].action).toEqual(Button.CYCLE_NATURE);
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
expect(iconA).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(iconB).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(iconC).toEqual('T_X_X_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Cancel, 2); // cycle nature
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL); // 6
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CYCLE_NATURE); // 13
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].key).toEqual("RC_W");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].action).toEqual(Button.ACTION); // 5
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
expect(iconA).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(iconB).toEqual('T_X_X_Color_Alt.png');
|
|
||||||
expect(iconC).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Cycle_Nature, 1); // cancel
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].key).toEqual("RC_W");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cycle_Nature].action).toEqual(Button.CYCLE_NATURE);
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
expect(iconA).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(iconB).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(iconC).toEqual('T_X_X_Color_Alt.png');
|
|
||||||
|
|
||||||
expect(config.ogIcons["RC_S"]).toEqual("T_X_A_Color_Alt.png")
|
|
||||||
expect(config.ogIcons["RC_E"]).toEqual("T_X_B_Color_Alt.png")
|
|
||||||
expect(config.ogIcons["RC_N"]).toEqual("T_X_Y_Color_Alt.png")
|
|
||||||
expect(config.ogIcons["RC_W"]).toEqual("T_X_X_Color_Alt.png")
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check 2 swap back to back', () => {
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 1); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL);
|
|
||||||
let iconA = getIconWithSettingName(config, SettingInterfaceGamepad.Button_Action);
|
|
||||||
expect(iconA).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 0); // cancel
|
|
||||||
let iconB = getIconWithSettingName(config, SettingInterfaceGamepad.Button_Action);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
expect(iconB).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check 4 swap back to back', () => {
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 1); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 0); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 1); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 0); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Custom scenario: B icon duplicate', () => {
|
|
||||||
config.currentKeys[SettingInterfaceGamepad.Button_Action] = {
|
|
||||||
"key": "RC_S",
|
|
||||||
"action": 6,
|
|
||||||
"icon": "T_X_B_Color_Alt.png",
|
|
||||||
"from": {
|
|
||||||
"key": "RC_S",
|
|
||||||
"action": 5,
|
|
||||||
"icon": "T_X_A_Color_Alt.png"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
config.currentKeys[SettingInterfaceGamepad.Button_Cancel] = {
|
|
||||||
"key": "RC_E",
|
|
||||||
"action": 5,
|
|
||||||
"icon": "T_X_A_Color_Alt.png",
|
|
||||||
"from": {
|
|
||||||
"key": "RC_E",
|
|
||||||
"action": 6,
|
|
||||||
"icon": "T_X_B_Color_Alt.png"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
regenerateCustom(config);
|
|
||||||
swapCurrentKeys(config, SettingInterfaceGamepad.Button_Action, 0); // cancel
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].key).toEqual("RC_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Action].icon).toEqual('T_X_A_Color_Alt.png');
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].key).toEqual("RC_E");
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].action).toEqual(Button.CANCEL);
|
|
||||||
expect(config.currentKeys[SettingInterfaceGamepad.Button_Cancel].icon).toEqual('T_X_B_Color_Alt.png');
|
|
||||||
})
|
|
||||||
});
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
import {getSettingNameWithKeycode} from "#app/configs/configHandler";
|
||||||
|
import {expect} from "vitest";
|
||||||
|
import {SettingInterface} from "#app/test/cfg_keyboard.example";
|
||||||
|
|
||||||
|
export class InGameManip {
|
||||||
|
private config;
|
||||||
|
private keycode;
|
||||||
|
private settingName;
|
||||||
|
private icon;
|
||||||
|
constructor(config) {
|
||||||
|
this.config = config;
|
||||||
|
this.keycode = null;
|
||||||
|
this.settingName = null;
|
||||||
|
this.icon = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
whenWePressOnKeyboard(keycode) {
|
||||||
|
this.keycode = Phaser.Input.Keyboard.KeyCodes[keycode.toUpperCase()];
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
nothingShouldHappen() {
|
||||||
|
const settingName = getSettingNameWithKeycode(this.config, this.keycode);
|
||||||
|
expect(settingName).toEqual(-1);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
normalizeSettingNameString(input) {
|
||||||
|
// Convert the input string to lower case
|
||||||
|
const lowerCasedInput = input.toLowerCase();
|
||||||
|
|
||||||
|
// Replace underscores with spaces, capitalize the first letter of each word, and join them back with underscores
|
||||||
|
const words = lowerCasedInput.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1));
|
||||||
|
const result = words.join('_');
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
weShouldTriggerTheButton(settingName) {
|
||||||
|
this.settingName = SettingInterface[this.normalizeSettingNameString(settingName)];
|
||||||
|
expect(getSettingNameWithKeycode(this.config, this.keycode)).toEqual(this.settingName);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
import {SettingInterface} from "#app/test/cfg_keyboard.example";
|
||||||
|
import {expect} from "vitest";
|
||||||
|
import {Button} from "#app/enums/buttons";
|
||||||
|
import {
|
||||||
|
deleteBind,
|
||||||
|
getIconWithKey,
|
||||||
|
getIconWithKeycode,
|
||||||
|
getIconWithSettingName,
|
||||||
|
getKeyWithKeycode, getKeyWithSettingName, isAlreadyBinded, swap
|
||||||
|
} from "#app/configs/configHandler";
|
||||||
|
|
||||||
|
export class MenuManip {
|
||||||
|
private config;
|
||||||
|
private settingName;
|
||||||
|
private keycode;
|
||||||
|
private icon;
|
||||||
|
private iconDisplayed;
|
||||||
|
private specialCaseIcon;
|
||||||
|
|
||||||
|
constructor(config) {
|
||||||
|
this.config = config;
|
||||||
|
this.settingName = null;
|
||||||
|
this.icon = null;
|
||||||
|
this.iconDisplayed = null;
|
||||||
|
this.specialCaseIcon = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
convertNameToButtonString(input) {
|
||||||
|
// Check if the input starts with "Alt_Button"
|
||||||
|
if (input.startsWith("Alt_Button")) {
|
||||||
|
// Return the last part in uppercase
|
||||||
|
return input.split('_').pop().toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split the input string by underscore
|
||||||
|
const parts = input.split('_');
|
||||||
|
|
||||||
|
// Skip the first part and join the rest with an underscore
|
||||||
|
const result = parts.slice(1).map(part => part.toUpperCase()).join('_');
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
whenCursorIsOnSetting(settingName) {
|
||||||
|
this.settingName = SettingInterface[settingName];
|
||||||
|
const buttonName = this.convertNameToButtonString(settingName);
|
||||||
|
expect(this.config.settings[this.settingName]).toEqual(Button[buttonName]);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
iconDisplayedIs(icon) {
|
||||||
|
this.iconDisplayed = this.config.icons[icon];
|
||||||
|
expect(getIconWithSettingName(this.config, this.settingName)).toEqual(this.iconDisplayed);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
thereShouldBeNoIconAnymore() {
|
||||||
|
const icon = getIconWithSettingName(this.config, this.settingName);
|
||||||
|
expect(icon === undefined).toEqual(true);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
thereShouldBeNoIcon() {
|
||||||
|
return this.thereShouldBeNoIconAnymore();
|
||||||
|
}
|
||||||
|
|
||||||
|
weWantThisBindInstead(keycode) {
|
||||||
|
this.keycode = Phaser.Input.Keyboard.KeyCodes[keycode];
|
||||||
|
const icon = getIconWithKeycode(this.config, this.keycode);
|
||||||
|
const key = getKeyWithKeycode(this.config, this.keycode);
|
||||||
|
const _keys = key.toLowerCase().split("_");
|
||||||
|
const iconIdentifier = _keys[_keys.length-1];
|
||||||
|
expect(icon.toLowerCase().includes(iconIdentifier)).toEqual(true);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
OopsSpecialCaseIcon(icon) {
|
||||||
|
this.specialCaseIcon = this.config.icons[icon];
|
||||||
|
const potentialExistingKey = isAlreadyBinded(this.config, this.keycode, this.settingName);
|
||||||
|
const prev_key = potentialExistingKey || getKeyWithSettingName(this.config, this.settingName);
|
||||||
|
expect(getIconWithKey(this.config, prev_key)).toEqual(this.specialCaseIcon);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
whenWeDelete(settingName?: string) {
|
||||||
|
this.settingName = SettingInterface[settingName] || this.settingName;
|
||||||
|
const key = getKeyWithSettingName(this.config, this.settingName);
|
||||||
|
deleteBind(this.config, this.settingName);
|
||||||
|
expect(this.config.custom[key]).toEqual(-1);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
swap(this.config, this.settingName, this.keycode);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,770 +0,0 @@
|
||||||
import {beforeEach, expect, describe, it} from "vitest";
|
|
||||||
import cfg_keyboard_example, {SettingInterfaceKeyboard} from "#app/test/cfg_keyboard_example";
|
|
||||||
import {
|
|
||||||
deleteBind,
|
|
||||||
getIconWithPressedButton,
|
|
||||||
getIconWithSettingName,
|
|
||||||
getKeyAndActionFromCurrentKeysWithSettingName,
|
|
||||||
getKeyForSettingName,
|
|
||||||
getKeyFromMapping,
|
|
||||||
getKeyWithAction, regenerateCustom,
|
|
||||||
reloadCurrentKeys,
|
|
||||||
swapCurrentKeys,
|
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
import {Button} from "#app/enums/buttons";
|
|
||||||
|
|
||||||
|
|
||||||
function deepCopy(config) {
|
|
||||||
return JSON.parse(JSON.stringify(config));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
describe('Test Keyboard', () => {
|
|
||||||
let config;
|
|
||||||
beforeEach(() => {
|
|
||||||
config = deepCopy(cfg_keyboard_example);
|
|
||||||
config.custom = {...config.default}
|
|
||||||
config.ogIcons = {...config.icons}
|
|
||||||
reloadCurrentKeys(config);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if config is loaded', () => {
|
|
||||||
expect(config).not.toBeNull();
|
|
||||||
});
|
|
||||||
it('Check key for setting name', () => {
|
|
||||||
const settingName = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const key = getKeyForSettingName(config, settingName);
|
|
||||||
expect(config.custom[key]).toEqual(Button.LEFT);
|
|
||||||
});
|
|
||||||
it('Check key for Keyboard KeyCode', () => {
|
|
||||||
const key = getKeyFromMapping(config, Phaser.Input.Keyboard.KeyCodes.LEFT);
|
|
||||||
expect(config.custom[key]).toEqual(Button.LEFT);
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to action not alt', () => {
|
|
||||||
const key = getKeyWithAction(config, Button.LEFT, false);
|
|
||||||
expect(key).toEqual('KEY_ARROW_LEFT');
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to action alt', () => {
|
|
||||||
const key = getKeyWithAction(config, Button.LEFT, true);
|
|
||||||
expect(key).toEqual('KEY_Q');
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to setting name', () => {
|
|
||||||
const settingName = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const {key} = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
expect(key).toEqual('KEY_ARROW_LEFT');
|
|
||||||
});
|
|
||||||
it('Check key for currenly Assigned to setting name alt', () => {
|
|
||||||
const settingName = SettingInterfaceKeyboard.Alt_Button_Left;
|
|
||||||
const {key} = getKeyAndActionFromCurrentKeysWithSettingName(config, settingName);
|
|
||||||
expect(key).toEqual('KEY_Q');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to key code', () => {
|
|
||||||
const icon = getIconWithPressedButton(config, Phaser.Input.Keyboard.KeyCodes.LEFT);
|
|
||||||
expect(icon).toEqual('T_Left_Key_Dark.png');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to key code alt', () => {
|
|
||||||
const icon = getIconWithPressedButton(config, Phaser.Input.Keyboard.KeyCodes.Q);
|
|
||||||
expect(icon).toEqual('T_Q_Key_Dark.png');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to setting name', () => {
|
|
||||||
const settingName = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const icon = getIconWithSettingName(config, settingName);
|
|
||||||
expect(icon).toEqual('T_Left_Key_Dark.png');
|
|
||||||
});
|
|
||||||
it('Check icon for currenly Assigned to setting name alt', () => {
|
|
||||||
const settingName = SettingInterfaceKeyboard.Alt_Button_Left;
|
|
||||||
const icon = getIconWithSettingName(config, settingName);
|
|
||||||
expect(icon).toEqual('T_Q_Key_Dark.png');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('Check if current keys return the same', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const keyA = getKeyForSettingName(config, settingNameA);
|
|
||||||
const action = config.custom[keyA];
|
|
||||||
expect(keyA).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(action).toEqual(Button.LEFT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual(keyA);
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(action);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
swapCurrentKeys(config, settingNameA, Phaser.Input.Keyboard.KeyCodes.RIGHT);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.RIGHT);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new double swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
|
|
||||||
swapCurrentKeys(config, settingNameA, Phaser.Input.Keyboard.KeyCodes.RIGHT);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, settingNameA, Phaser.Input.Keyboard.KeyCodes.UP);
|
|
||||||
expect(config.currentKeys[settingNameA].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[settingNameA].action).toEqual(Button.UP);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Check if new triple swap is working', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const settingNameB = SettingInterfaceKeyboard.Button_Action;
|
|
||||||
const settingNameC = SettingInterfaceKeyboard.Button_Right;
|
|
||||||
const settingNameD = SettingInterfaceKeyboard.Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.LEFT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].key).toEqual("KEY_SPACE");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
|
|
||||||
let iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
let iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
let iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
let iconD = getIconWithSettingName(config, settingNameD);
|
|
||||||
expect(iconA).toEqual('T_Left_Key_Dark.png');
|
|
||||||
expect(iconB).toEqual('T_Space_Key_Dark.png');
|
|
||||||
expect(iconC).toEqual('T_Right_Key_Dark.png');
|
|
||||||
expect(iconD).toEqual('T_Up_Key_Dark.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Left, Phaser.Input.Keyboard.KeyCodes.RIGHT); // left->RIGHT, right->LEFT
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].key).toEqual("KEY_SPACE");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.LEFT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
iconD = getIconWithSettingName(config, settingNameD);
|
|
||||||
expect(iconA).toEqual('T_Right_Key_Dark.png');
|
|
||||||
expect(iconB).toEqual('T_Space_Key_Dark.png');
|
|
||||||
expect(iconC).toEqual('T_Left_Key_Dark.png');
|
|
||||||
expect(iconD).toEqual('T_Up_Key_Dark.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Action, Phaser.Input.Keyboard.KeyCodes.UP); // action->UP
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].key).toEqual("KEY_SPACE");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].action).toEqual(Button.UP)
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.LEFT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
iconD = getIconWithSettingName(config, settingNameD);
|
|
||||||
expect(iconA).toEqual('T_Right_Key_Dark.png');
|
|
||||||
expect(iconB).toEqual('T_Up_Key_Dark.png');
|
|
||||||
expect(iconC).toEqual('T_Left_Key_Dark.png');
|
|
||||||
expect(iconD).toEqual('T_Space_Key_Dark.png');
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Right, Phaser.Input.Keyboard.KeyCodes.UP); // right->UP, action->LEFT
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].key).toEqual("KEY_SPACE");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Action].action).toEqual(Button.UP)
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.ACTION);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.LEFT);
|
|
||||||
|
|
||||||
iconA = getIconWithSettingName(config, settingNameA);
|
|
||||||
iconB = getIconWithSettingName(config, settingNameB);
|
|
||||||
iconC = getIconWithSettingName(config, settingNameC);
|
|
||||||
iconD = getIconWithSettingName(config, settingNameD);
|
|
||||||
expect(iconA).toEqual('T_Right_Key_Dark.png');
|
|
||||||
expect(iconB).toEqual('T_Up_Key_Dark.png');
|
|
||||||
expect(iconC).toEqual('T_Space_Key_Dark.png');
|
|
||||||
expect(iconD).toEqual('T_Left_Key_Dark.png');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('Swap alt with another main', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Button_Left;
|
|
||||||
const settingNameB = SettingInterfaceKeyboard.Alt_Button_Right;
|
|
||||||
const settingNameC = SettingInterfaceKeyboard.Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.LEFT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].icon).toEqual("T_Left_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Left, Phaser.Input.Keyboard.KeyCodes.D);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].key).toEqual("KEY_Q");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].action).toEqual(Button.LEFT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].icon).toEqual("T_Q_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.LEFT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_Left_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Up, Phaser.Input.Keyboard.KeyCodes.LEFT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].key).toEqual("KEY_ARROW_LEFT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Left].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].key).toEqual("KEY_Q");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].action).toEqual(Button.LEFT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Left].icon).toEqual("T_Q_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.LEFT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_Left_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('Swap alt with a key not binded yet', () => {
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.B);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_B_Key_Dark.png");
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('Delete bind', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Alt_Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
deleteBind(config, settingNameA)
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('Delete bind then asign not existing button', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Alt_Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
deleteBind(config, settingNameA)
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.B);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_B_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_B"]).toEqual(Button.UP);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('swap bind, then Delete bind then assign bind', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Alt_Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
expect(config.custom["KEY_B"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.B);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_B_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_B"]).toEqual(Button.UP);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
deleteBind(config, settingNameA);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_B"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.B);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_B_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_B"]).toEqual(Button.UP);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('Delete bind then asign not already existing button', () => {
|
|
||||||
const settingNameA = SettingInterfaceKeyboard.Alt_Button_Up;
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
deleteBind(config, settingNameA)
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].key).toEqual("KEY_L");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].action).toEqual(Button.CYCLE_ABILITY);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].icon).toEqual("T_L_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_L"]).toEqual(Button.CYCLE_ABILITY);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.L);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_L_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].key).toEqual("KEY_L");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Cycle_Ability].icon).toEqual(undefined);
|
|
||||||
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_L"]).toEqual(Button.UP);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('Custom scenario 2, regenerate customs when init key is not from setting', () => {
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
expect(config.custom["KEY_T"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.T);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_T_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_T"]).toEqual(Button.UP);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('change alt to unknown touch than another one alt with another unknown touch', () => {
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.T);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_T_Key_Dark.png");
|
|
||||||
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_T"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(Button.DOWN);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual("T_S_Key_Dark.png");
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Down, Phaser.Input.Keyboard.KeyCodes.U);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(Button.DOWN);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual("T_U_Key_Dark.png");
|
|
||||||
|
|
||||||
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_U"]).toEqual(Button.DOWN);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
expect(config.custom["KEY_T"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_T_Key_Dark.png");
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
it('reload scenario with 1 bind already reassigned', () => {
|
|
||||||
config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up] = {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 3,
|
|
||||||
"icon": "T_D_Key_Dark.png",
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 0,
|
|
||||||
"icon": "T_Z_Key_Dark.png"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right] = {
|
|
||||||
"key": "KEY_D",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 0,
|
|
||||||
"icon": "T_Z_Key_Dark.png",
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_D",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 3,
|
|
||||||
"icon": "T_D_Key_Dark.png"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.icons["KEY_D"] = "T_Z_Key_Dark.png";
|
|
||||||
config.icons["KEY_Z"] = "T_D_Key_Dark.png";
|
|
||||||
regenerateCustom(config);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_D"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Up, Phaser.Input.Keyboard.KeyCodes.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_D"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_RIGHT"]).toEqual(Button.UP);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('Swap multiple touch alt and main', () => {
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_RIGHT"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Button_Up, Phaser.Input.Keyboard.KeyCodes.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_RIGHT"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.D);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_RIGHT"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_D"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.Z);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].key).toEqual("KEY_ARROW_UP");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Up].icon).toEqual("T_Right_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_UP"]).toEqual(Button.RIGHT);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].key).toEqual("KEY_ARROW_RIGHT");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Button_Right].icon).toEqual("T_Up_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_ARROW_RIGHT"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].key).toEqual("KEY_D");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].action).toEqual(Button.RIGHT);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Right].icon).toEqual("T_D_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_D"]).toEqual(Button.RIGHT);
|
|
||||||
})
|
|
||||||
|
|
||||||
it('by method: Delete 2 binds, than rebind one of them', () => {
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
deleteBind(config, SettingInterfaceKeyboard.Alt_Button_Up);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(Button.DOWN);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual("T_S_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(Button.DOWN);
|
|
||||||
deleteBind(config, SettingInterfaceKeyboard.Alt_Button_Down);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(-1);
|
|
||||||
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.Z);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(-1);
|
|
||||||
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Down, Phaser.Input.Keyboard.KeyCodes.S);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(Button.DOWN);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual("T_S_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(Button.DOWN);
|
|
||||||
|
|
||||||
let keyDown = Phaser.Input.Keyboard.KeyCodes.S;
|
|
||||||
let key = getKeyFromMapping(config, keyDown);
|
|
||||||
let buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.DOWN);
|
|
||||||
|
|
||||||
keyDown = Phaser.Input.Keyboard.KeyCodes.Z;
|
|
||||||
key = getKeyFromMapping(config, keyDown);
|
|
||||||
buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.UP);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
it("test keyboard listener", () => {
|
|
||||||
const keyDown = Phaser.Input.Keyboard.KeyCodes.S;
|
|
||||||
const key = getKeyFromMapping(config, keyDown);
|
|
||||||
const buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.DOWN);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("another test with 2 delete", () => {
|
|
||||||
config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up] = {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": -1,
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 0,
|
|
||||||
"icon": "T_Z_Key_Dark.png"
|
|
||||||
},
|
|
||||||
"latestIsDeleted": true
|
|
||||||
};
|
|
||||||
regenerateCustom(config);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Down, Phaser.Input.Keyboard.KeyCodes.S);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].key).toEqual("KEY_S");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].action).toEqual(Button.DOWN);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Down].icon).toEqual("T_S_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_S"]).toEqual(Button.DOWN);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("another test with 2 delete", () => {
|
|
||||||
config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up] = {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": -1,
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 0,
|
|
||||||
"icon": "T_Z_Key_Dark.png"
|
|
||||||
},
|
|
||||||
"latestIsDeleted": true
|
|
||||||
};
|
|
||||||
regenerateCustom(config);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.Z);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
let keyDown = Phaser.Input.Keyboard.KeyCodes.S;
|
|
||||||
let key = getKeyFromMapping(config, keyDown);
|
|
||||||
let buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.DOWN);
|
|
||||||
|
|
||||||
keyDown = Phaser.Input.Keyboard.KeyCodes.Z;
|
|
||||||
key = getKeyFromMapping(config, keyDown);
|
|
||||||
buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.UP);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("another test with 2 delete part 2", () => {
|
|
||||||
config.currentKeys = {
|
|
||||||
"ALT_BUTTON_UP": {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": -1,
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_Z",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 0,
|
|
||||||
"icon": "T_Z_Key_Dark.png"
|
|
||||||
},
|
|
||||||
"latestIsDeleted": true
|
|
||||||
},
|
|
||||||
"ALT_BUTTON_DOWN": {
|
|
||||||
"key": "KEY_S",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": -1,
|
|
||||||
"from": {
|
|
||||||
"key": "KEY_S",
|
|
||||||
"isAlt": true,
|
|
||||||
"action": 1,
|
|
||||||
"icon": "T_S_Key_Dark.png"
|
|
||||||
},
|
|
||||||
"latestIsDeleted": true
|
|
||||||
},
|
|
||||||
}
|
|
||||||
regenerateCustom(config);
|
|
||||||
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(-1);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual(undefined);
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(-1);
|
|
||||||
|
|
||||||
swapCurrentKeys(config, SettingInterfaceKeyboard.Alt_Button_Up, Phaser.Input.Keyboard.KeyCodes.Z);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].key).toEqual("KEY_Z");
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].action).toEqual(Button.UP);
|
|
||||||
expect(config.currentKeys[SettingInterfaceKeyboard.Alt_Button_Up].icon).toEqual("T_Z_Key_Dark.png");
|
|
||||||
expect(config.custom["KEY_Z"]).toEqual(Button.UP);
|
|
||||||
|
|
||||||
const keyDown = Phaser.Input.Keyboard.KeyCodes.Z;
|
|
||||||
const key = getKeyFromMapping(config, keyDown);
|
|
||||||
const buttonDown = config.custom[key];
|
|
||||||
expect(buttonDown).toEqual(Button.UP);
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
||||||
;
|
|
|
@ -0,0 +1,311 @@
|
||||||
|
import {afterEach, beforeEach, describe, expect, it} from "vitest";
|
||||||
|
import cfg_keyboard_azerty from "#app/test/cfg_keyboard.example";
|
||||||
|
import {SettingInterface} from "#app/test/cfg_keyboard.example";
|
||||||
|
import {Button} from "#app/enums/buttons";
|
||||||
|
import {deepCopy} from "#app/utils";
|
||||||
|
import {
|
||||||
|
getButtonWithSettingName,
|
||||||
|
getIconWithSettingName,
|
||||||
|
getKeyWithKeycode,
|
||||||
|
getKeyWithSettingName,
|
||||||
|
getSettingNameWithKeycode,
|
||||||
|
regenerateIdentifiers,
|
||||||
|
swap
|
||||||
|
} from "#app/configs/configHandler";
|
||||||
|
import {MenuManip} from "#app/test/helpers/menuManip";
|
||||||
|
import {InGameManip} from "#app/test/helpers/inGameManip";
|
||||||
|
|
||||||
|
|
||||||
|
describe('Test Rebinding', () => {
|
||||||
|
let config;
|
||||||
|
let inGame;
|
||||||
|
let inTheSettingMenu;
|
||||||
|
beforeEach(() => {
|
||||||
|
config = deepCopy(cfg_keyboard_azerty);
|
||||||
|
config.custom = {...config.default}
|
||||||
|
regenerateIdentifiers(config);
|
||||||
|
inGame = new InGameManip(config);
|
||||||
|
inTheSettingMenu = new MenuManip(config);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Check if config is loaded', () => {
|
||||||
|
expect(config).not.toBeNull();
|
||||||
|
});
|
||||||
|
it('Check button for setting name', () => {
|
||||||
|
const settingName = SettingInterface.Button_Left;
|
||||||
|
const button = config.settings[settingName];
|
||||||
|
expect(button).toEqual(Button.LEFT);
|
||||||
|
});
|
||||||
|
it('Check key for Keyboard KeyCode', () => {
|
||||||
|
const key = getKeyWithKeycode(config, Phaser.Input.Keyboard.KeyCodes.LEFT);
|
||||||
|
const settingName = config.custom[key];
|
||||||
|
const button = config.settings[settingName];
|
||||||
|
expect(button).toEqual(Button.LEFT);
|
||||||
|
});
|
||||||
|
it('Check key for currenly Assigned to action not alt', () => {
|
||||||
|
const key = getKeyWithKeycode(config, Phaser.Input.Keyboard.KeyCodes.Q);
|
||||||
|
const settingName = config.custom[key];
|
||||||
|
const button = config.settings[settingName];
|
||||||
|
expect(button).toEqual(Button.LEFT);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Check key for currenly Assigned to setting name', () => {
|
||||||
|
const settingName = SettingInterface.Button_Left;
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
expect(key).toEqual('KEY_ARROW_LEFT');
|
||||||
|
});
|
||||||
|
it('Check key for currenly Assigned to setting name alt', () => {
|
||||||
|
const settingName = SettingInterface.Alt_Button_Left;
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
expect(key).toEqual('KEY_Q');
|
||||||
|
});
|
||||||
|
it('Check key from key code', () => {
|
||||||
|
const keycode = Phaser.Input.Keyboard.KeyCodes.LEFT;
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
expect(key).toEqual('KEY_ARROW_LEFT');
|
||||||
|
});
|
||||||
|
it('Check icon for currenly Assigned to key code', () => {
|
||||||
|
const keycode = Phaser.Input.Keyboard.KeyCodes.LEFT;
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
const icon = config.icons[key];
|
||||||
|
expect(icon).toEqual('T_Left_Key_Dark.png');
|
||||||
|
});
|
||||||
|
it('Check icon for currenly Assigned to key code', () => {
|
||||||
|
const keycode = Phaser.Input.Keyboard.KeyCodes.Q;
|
||||||
|
const key = getKeyWithKeycode(config, keycode);
|
||||||
|
const icon = config.icons[key];
|
||||||
|
expect(icon).toEqual('T_Q_Key_Dark.png');
|
||||||
|
});
|
||||||
|
it('Check icon for currenly Assigned to setting name', () => {
|
||||||
|
const settingName = SettingInterface.Button_Left;
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
const icon = config.icons[key];
|
||||||
|
expect(icon).toEqual('T_Left_Key_Dark.png');
|
||||||
|
});
|
||||||
|
it('Check icon for currenly Assigned to setting name alt', () => {
|
||||||
|
const settingName = SettingInterface.Alt_Button_Left;
|
||||||
|
const key = getKeyWithSettingName(config, settingName);
|
||||||
|
const icon = config.icons[key];
|
||||||
|
expect(icon).toEqual('T_Q_Key_Dark.png');
|
||||||
|
});
|
||||||
|
it('Check if is working', () => {
|
||||||
|
const settingNameA = SettingInterface.Button_Left;
|
||||||
|
const settingNameB = SettingInterface.Button_Right;
|
||||||
|
swap(config, SettingInterface.Button_Left, Phaser.Input.Keyboard.KeyCodes.RIGHT);
|
||||||
|
expect(getButtonWithSettingName(config, settingNameA)).toEqual(Button.LEFT);
|
||||||
|
expect(getSettingNameWithKeycode(config, Phaser.Input.Keyboard.KeyCodes.RIGHT)).toEqual(SettingInterface.Button_Left)
|
||||||
|
expect(getButtonWithSettingName(config, settingNameB)).toEqual(Button.RIGHT);
|
||||||
|
expect(getSettingNameWithKeycode(config, Phaser.Input.Keyboard.KeyCodes.LEFT)).toEqual(SettingInterface.Button_Right)
|
||||||
|
expect(getIconWithSettingName(config, settingNameA)).toEqual(config.icons.KEY_ARROW_RIGHT);
|
||||||
|
expect(getIconWithSettingName(config, settingNameB)).toEqual(config.icons.KEY_ARROW_LEFT);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Check if double swap is working', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_RIGHT").weWantThisBindInstead("UP").confirm();
|
||||||
|
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Left");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_UP").weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Check if triple swap is working', () => {
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Right").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("UP").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Right");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_RIGHT").weWantThisBindInstead("LEFT").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Right");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Swap alt with another main', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("D").OopsSpecialCaseIcon("KEY_Q").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('multiple Swap alt with another main', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("D").OopsSpecialCaseIcon("KEY_Q").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Up").iconDisplayedIs("KEY_ARROW_UP").weWantThisBindInstead("LEFT").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Left");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Swap alt with a key not binded yet', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Up").iconDisplayedIs("KEY_Z").weWantThisBindInstead("B").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("Z").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("B").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Delete bind', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inTheSettingMenu.whenWeDelete("Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Delete bind then assign a not yet binded button', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenWeDelete("Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").thereShouldBeNoIcon().weWantThisBindInstead("B").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("B").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Delete bind then assign a not yet binded button', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenWeDelete("Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").thereShouldBeNoIcon().weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('swap 2 bind, than delete 1 bind than assign another bind', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").iconDisplayedIs("KEY_ARROW_LEFT").weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").whenWeDelete().thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Up").iconDisplayedIs("KEY_Z").weWantThisBindInstead("B").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("B").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('Delete bind then assign not already existing button', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenWeDelete("Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Left").thereShouldBeNoIcon().weWantThisBindInstead("L").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("L").weShouldTriggerTheButton("Button_Left");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('change alt bind to not already existing button, than another one alt bind with another not already existing button', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("S").weShouldTriggerTheButton("Alt_Button_Down");
|
||||||
|
inGame.whenWePressOnKeyboard("T").nothingShouldHappen();
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Up").iconDisplayedIs("KEY_Z").weWantThisBindInstead("T").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("T").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("U").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("S").weShouldTriggerTheButton("Alt_Button_Down");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Down").iconDisplayedIs("KEY_S").weWantThisBindInstead("U").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("T").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("U").weShouldTriggerTheButton("Alt_Button_Down");
|
||||||
|
inGame.whenWePressOnKeyboard("S").nothingShouldHappen();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Swap multiple touch alt and main', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Button_Up").iconDisplayedIs("KEY_ARROW_UP").weWantThisBindInstead("RIGHT").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Up").iconDisplayedIs("KEY_Z").weWantThisBindInstead("D").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Up").iconDisplayedIs("KEY_D").weWantThisBindInstead("Z").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("UP").weShouldTriggerTheButton("Button_Right");
|
||||||
|
inGame.whenWePressOnKeyboard("RIGHT").weShouldTriggerTheButton("Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("Z").weShouldTriggerTheButton("Alt_Button_Up");
|
||||||
|
inGame.whenWePressOnKeyboard("D").weShouldTriggerTheButton("Alt_Button_Right");
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
it('Delete 2 bind then reassign one of them', () => {
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").weShouldTriggerTheButton("Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
|
||||||
|
inTheSettingMenu.whenWeDelete("Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
|
||||||
|
inTheSettingMenu.whenWeDelete("Alt_Button_Left").thereShouldBeNoIconAnymore();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("Q").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
|
||||||
|
inTheSettingMenu.whenCursorIsOnSetting("Alt_Button_Left").thereShouldBeNoIcon().weWantThisBindInstead("Q").confirm();
|
||||||
|
inGame.whenWePressOnKeyboard("LEFT").nothingShouldHappen();
|
||||||
|
inGame.whenWePressOnKeyboard("Q").weShouldTriggerTheButton("Alt_Button_Left");
|
||||||
|
inGame.whenWePressOnKeyboard("B").nothingShouldHappen();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("test keyboard listener", () => {
|
||||||
|
const keyDown = Phaser.Input.Keyboard.KeyCodes.S;
|
||||||
|
const key = getKeyWithKeycode(config, keyDown);
|
||||||
|
const settingName = config.custom[key];
|
||||||
|
const buttonDown = config.settings[settingName];
|
||||||
|
expect(buttonDown).toEqual(Button.DOWN);
|
||||||
|
});
|
||||||
|
});
|
|
@ -5,10 +5,7 @@ import {InterfaceConfig} from "../../inputs-controller";
|
||||||
import {addWindow} from "../ui-theme";
|
import {addWindow} from "../ui-theme";
|
||||||
import {addTextObject, TextStyle} from "../text";
|
import {addTextObject, TextStyle} from "../text";
|
||||||
import {Button} from "../../enums/buttons";
|
import {Button} from "../../enums/buttons";
|
||||||
import {
|
import {getIconWithSettingName, getKeyWithSettingName} from "#app/configs/configHandler";
|
||||||
getKeyAndActionFromCurrentKeysWithSettingName,
|
|
||||||
getKeyForSettingName
|
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
|
|
||||||
export interface InputsIcons {
|
export interface InputsIcons {
|
||||||
[key: string]: Phaser.GameObjects.Sprite;
|
[key: string]: Phaser.GameObjects.Sprite;
|
||||||
|
@ -107,7 +104,7 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler {
|
||||||
optionsContainer.setVisible(false);
|
optionsContainer.setVisible(false);
|
||||||
|
|
||||||
// Gather all gamepad binding settings from the configuration.
|
// Gather all gamepad binding settings from the configuration.
|
||||||
const bindingSettings = Object.keys(config.setting).map(k => config.setting[k]);
|
const bindingSettings = Object.keys(config.settings);
|
||||||
|
|
||||||
// Array to hold labels for different settings such as 'Default Controller', 'Gamepad Support', etc.
|
// Array to hold labels for different settings such as 'Default Controller', 'Gamepad Support', etc.
|
||||||
const settingLabels: Phaser.GameObjects.Text[] = [];
|
const settingLabels: Phaser.GameObjects.Text[] = [];
|
||||||
|
@ -121,7 +118,7 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler {
|
||||||
// Fetch common setting keys such as 'Default Controller' and 'Gamepad Support' from gamepad settings.
|
// Fetch common setting keys such as 'Default Controller' and 'Gamepad Support' from gamepad settings.
|
||||||
const commonSettingKeys = Object.keys(this.settingDevice).slice(0, this.commonSettingsCount).map(key => this.settingDevice[key]);
|
const commonSettingKeys = Object.keys(this.settingDevice).slice(0, this.commonSettingsCount).map(key => this.settingDevice[key]);
|
||||||
// Combine common and specific bindings into a single array.
|
// Combine common and specific bindings into a single array.
|
||||||
const specificBindingKeys = [...commonSettingKeys, ...Object.keys(config.setting).map(k => config.setting[k])];
|
const specificBindingKeys = [...commonSettingKeys, ...Object.keys(config.settings)];
|
||||||
// Fetch default values for these settings and prepare to highlight selected options.
|
// Fetch default values for these settings and prepare to highlight selected options.
|
||||||
const optionCursors = Object.values(Object.keys(this.settingDeviceDefaults).filter(s => specificBindingKeys.includes(s)).map(k => this.settingDeviceDefaults[k]));
|
const optionCursors = Object.values(Object.keys(this.settingDeviceDefaults).filter(s => specificBindingKeys.includes(s)).map(k => this.settingDeviceDefaults[k]));
|
||||||
|
|
||||||
|
@ -142,6 +139,9 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler {
|
||||||
const valueLabels: Phaser.GameObjects.Text[] = []
|
const valueLabels: Phaser.GameObjects.Text[] = []
|
||||||
|
|
||||||
// Process each option for the current setting.
|
// Process each option for the current setting.
|
||||||
|
const aaa = this.settingDeviceOptions;
|
||||||
|
const bbb = this.settingDevice;
|
||||||
|
const ccc = this.settingDevice[setting];
|
||||||
for (const [o, option] of this.settingDeviceOptions[this.settingDevice[setting]].entries()) {
|
for (const [o, option] of this.settingDeviceOptions[this.settingDevice[setting]].entries()) {
|
||||||
// Check if the current setting is for binding keys.
|
// Check if the current setting is for binding keys.
|
||||||
if (bindingSettings.includes(this.settingDevice[setting])) {
|
if (bindingSettings.includes(this.settingDevice[setting])) {
|
||||||
|
@ -154,11 +154,10 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// For null options, add an icon for the key.
|
// For null options, add an icon for the key.
|
||||||
const key = getKeyForSettingName(config as InterfaceConfig, this.settingDevice[setting]);
|
|
||||||
const icon = this.scene.add.sprite(0, 0, this.textureOverride ? this.textureOverride : config.padType);
|
const icon = this.scene.add.sprite(0, 0, this.textureOverride ? this.textureOverride : config.padType);
|
||||||
icon.setScale(0.1);
|
icon.setScale(0.1);
|
||||||
icon.setOrigin(0, -0.1);
|
icon.setOrigin(0, -0.1);
|
||||||
inputsIcons[key] = icon;
|
inputsIcons[this.settingDevice[setting]] = icon;
|
||||||
optionsContainer.add(icon);
|
optionsContainer.add(icon);
|
||||||
valueLabels.push(icon);
|
valueLabels.push(icon);
|
||||||
continue;
|
continue;
|
||||||
|
@ -242,12 +241,13 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler {
|
||||||
|
|
||||||
// For each element in the binding settings, update the icon according to the current assignment.
|
// For each element in the binding settings, update the icon according to the current assignment.
|
||||||
for (const elm of this.bindingSettings) {
|
for (const elm of this.bindingSettings) {
|
||||||
const {key, icon} = getKeyAndActionFromCurrentKeysWithSettingName(activeConfig, elm);
|
const icon = getIconWithSettingName(activeConfig, elm);
|
||||||
if (icon) {
|
if (icon) {
|
||||||
this.inputsIcons[key].setFrame(icon);
|
this.inputsIcons[elm].setFrame(icon);
|
||||||
this.inputsIcons[key].alpha = 1;
|
this.inputsIcons[elm].alpha = 1;
|
||||||
} else {
|
} else {
|
||||||
this.inputsIcons[key].alpha = 0;
|
if (!this.inputsIcons[elm]) debugger;
|
||||||
|
this.inputsIcons[elm].alpha = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import BattleScene from "../../battle-scene";
|
import BattleScene from "../../battle-scene";
|
||||||
import AbstractBindingUiHandler from "../settings/abrast-binding-ui-handler";
|
import AbstractBindingUiHandler from "../settings/abrast-binding-ui-handler";
|
||||||
import {Mode} from "../ui";
|
import {Mode} from "../ui";
|
||||||
import {
|
import {Device} from "#app/enums/devices";
|
||||||
getKeyAndActionFromCurrentKeysWithSettingName, getKeyFromMapping, regenerateCustom,
|
import {getIconSpecialCase, getIconWithSettingName, getKeyWithKeycode} from "#app/configs/configHandler";
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
|
|
||||||
|
|
||||||
export default class GamepadBindingUiHandler extends AbstractBindingUiHandler {
|
export default class GamepadBindingUiHandler extends AbstractBindingUiHandler {
|
||||||
|
@ -14,25 +13,29 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler {
|
||||||
scene.input.gamepad.on('down', this.gamepadButtonDown, this);
|
scene.input.gamepad.on('down', this.gamepadButtonDown, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSelectedDevice() {
|
||||||
|
return this.scene.inputController?.selectedDevice[Device.GAMEPAD];
|
||||||
|
}
|
||||||
|
|
||||||
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
|
||||||
const blacklist = [12, 13, 14, 15]; // d-pad buttons are blacklisted.
|
const blacklist = [12, 13, 14, 15]; // d-pad buttons are blacklisted.
|
||||||
// Check conditions before processing the button press.
|
// Check conditions before processing the button press.
|
||||||
if (!this.listening || pad.id !== this.scene.inputController?.chosenGamepad || blacklist.includes(button.index) || this.buttonPressed !== null) return;
|
if (!this.listening || pad.id.toLowerCase() !== this.getSelectedDevice() || blacklist.includes(button.index) || this.buttonPressed !== null) return;
|
||||||
const activeConfig = this.scene.inputController.getActiveConfig();
|
const activeConfig = this.scene.inputController.getActiveConfig(Device.GAMEPAD);
|
||||||
const type = activeConfig.padType
|
const type = activeConfig.padType
|
||||||
const key = getKeyFromMapping(activeConfig, button.index);
|
const key = getKeyWithKeycode(activeConfig, button.index);
|
||||||
const buttonIcon = activeConfig.ogIcons[key];
|
const buttonIcon = activeConfig.icons[key];
|
||||||
if (!buttonIcon) return;
|
if (!buttonIcon) return;
|
||||||
this.buttonPressed = button.index;
|
this.buttonPressed = button.index;
|
||||||
const assignedButtonIcon = getKeyAndActionFromCurrentKeysWithSettingName(activeConfig, this.target)?.icon;
|
const specialCaseIcon = getIconSpecialCase(activeConfig, button.index, this.target);
|
||||||
this.onInputDown(buttonIcon, assignedButtonIcon, type);
|
const assignedButtonIcon = getIconWithSettingName(activeConfig, this.target);
|
||||||
|
this.onInputDown(buttonIcon, specialCaseIcon || assignedButtonIcon, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
swapAction() {
|
swapAction() {
|
||||||
const activeConfig = this.scene.inputController.getActiveConfig();
|
const activeConfig = this.scene.inputController.getActiveConfig(Device.GAMEPAD);
|
||||||
this.scene.inputController.swapBinding(activeConfig, this.target, this.buttonPressed)
|
this.scene.inputController.swapBinding(activeConfig, this.target, this.buttonPressed)
|
||||||
this.scene.gameData.saveCustomMapping(this.scene.inputController?.chosenGamepad, activeConfig.currentKeys, activeConfig.icons);
|
this.scene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig);
|
||||||
regenerateCustom(activeConfig);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
import BattleScene from "../../battle-scene";
|
import BattleScene from "../../battle-scene";
|
||||||
import AbstractBindingUiHandler from "../settings/abrast-binding-ui-handler";
|
import AbstractBindingUiHandler from "../settings/abrast-binding-ui-handler";
|
||||||
import {Mode} from "../ui";
|
import {Mode} from "../ui";
|
||||||
import {
|
import {getIconSpecialCase, getIconWithSettingName, getKeyWithKeycode} from "#app/configs/configHandler";
|
||||||
getKeyAndActionFromCurrentKeysWithSettingName, getKeyFromMapping, regenerateCustom,
|
import {Device} from "#app/enums/devices";
|
||||||
} from "#app/configs/gamepad-utils";
|
|
||||||
|
|
||||||
|
|
||||||
export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler {
|
export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler {
|
||||||
|
@ -14,24 +13,28 @@ export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler {
|
||||||
scene.input.keyboard.on('keydown', this.onKeyDown, this);
|
scene.input.keyboard.on('keydown', this.onKeyDown, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSelectedDevice() {
|
||||||
|
return this.scene.inputController?.selectedDevice[Device.KEYBOARD];
|
||||||
|
}
|
||||||
|
|
||||||
onKeyDown(event): void {
|
onKeyDown(event): void {
|
||||||
const key = event.keyCode;
|
const key = event.keyCode;
|
||||||
// // Check conditions before processing the button press.
|
// // Check conditions before processing the button press.
|
||||||
if (!this.listening || this.buttonPressed !== null) return;
|
if (!this.listening || this.buttonPressed !== null) return;
|
||||||
const activeConfig = this.scene.inputController.getActiveKeyboardConfig();
|
const activeConfig = this.scene.inputController.getActiveConfig(Device.KEYBOARD);
|
||||||
const _key = getKeyFromMapping(activeConfig, key);
|
const _key = getKeyWithKeycode(activeConfig, key);
|
||||||
const buttonIcon = activeConfig.ogIcons[_key];
|
const buttonIcon = activeConfig.icons[_key];
|
||||||
if (!buttonIcon) return;
|
if (!buttonIcon) return;
|
||||||
this.buttonPressed = key;
|
this.buttonPressed = key;
|
||||||
const assignedButtonIcon = getKeyAndActionFromCurrentKeysWithSettingName(activeConfig, this.target)?.icon;
|
const specialCaseIcon = getIconSpecialCase(activeConfig, key, this.target);
|
||||||
this.onInputDown(buttonIcon, assignedButtonIcon, 'keyboard');
|
const assignedButtonIcon = getIconWithSettingName(activeConfig, this.target);
|
||||||
|
this.onInputDown(buttonIcon, specialCaseIcon || assignedButtonIcon, 'keyboard');
|
||||||
}
|
}
|
||||||
|
|
||||||
swapAction() {
|
swapAction() {
|
||||||
const activeConfig = this.scene.inputController.getActiveKeyboardConfig();
|
const activeConfig = this.scene.inputController.getActiveConfig(Device.KEYBOARD);
|
||||||
this.scene.inputController.swapBinding(activeConfig, this.target, this.buttonPressed)
|
this.scene.inputController.swapBinding(activeConfig, this.target, this.buttonPressed)
|
||||||
this.scene.gameData.saveCustomKeyboardMapping(this.scene.inputController?.chosenKeyboard, activeConfig.currentKeys, activeConfig.icons);
|
this.scene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig);
|
||||||
regenerateCustom(activeConfig);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,12 @@ import BattleScene from "../../battle-scene";
|
||||||
import {addTextObject, TextStyle} from "../text";
|
import {addTextObject, TextStyle} from "../text";
|
||||||
import {Mode} from "../ui";
|
import {Mode} from "../ui";
|
||||||
import {SettingGamepad, settingGamepadDefaults, settingGamepadOptions} from "../../system/settings-gamepad";
|
import {SettingGamepad, settingGamepadDefaults, settingGamepadOptions} from "../../system/settings-gamepad";
|
||||||
import {truncateString} from "../../utils";
|
|
||||||
import pad_xbox360 from "#app/configs/pad_xbox360";
|
import pad_xbox360 from "#app/configs/pad_xbox360";
|
||||||
import pad_dualshock from "#app/configs/pad_dualshock";
|
import pad_dualshock from "#app/configs/pad_dualshock";
|
||||||
import pad_unlicensedSNES from "#app/configs/pad_unlicensedSNES";
|
import pad_unlicensedSNES from "#app/configs/pad_unlicensedSNES";
|
||||||
import {InterfaceConfig} from "#app/inputs-controller";
|
import {InterfaceConfig} from "#app/inputs-controller";
|
||||||
import AbstractSettingsUiUiHandler from "#app/ui/settings/abstract-settings-ui-handler";
|
import AbstractSettingsUiUiHandler from "#app/ui/settings/abstract-settings-ui-handler";
|
||||||
|
import {Device} from "#app/enums/devices";
|
||||||
|
|
||||||
export default class SettingsGamepadUiHandler extends AbstractSettingsUiUiHandler {
|
export default class SettingsGamepadUiHandler extends AbstractSettingsUiUiHandler {
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ export default class SettingsGamepadUiHandler extends AbstractSettingsUiUiHandle
|
||||||
}
|
}
|
||||||
|
|
||||||
getActiveConfig(): InterfaceConfig {
|
getActiveConfig(): InterfaceConfig {
|
||||||
return this.scene.inputController.getActiveConfig();
|
return this.scene.inputController.getActiveConfig(Device.GAMEPAD);
|
||||||
}
|
}
|
||||||
|
|
||||||
getLocalStorageSetting(): object {
|
getLocalStorageSetting(): object {
|
||||||
|
@ -89,7 +89,7 @@ export default class SettingsGamepadUiHandler extends AbstractSettingsUiUiHandle
|
||||||
|
|
||||||
// Update the text of the first option label under the current setting to the name of the chosen gamepad,
|
// Update the text of the first option label under the current setting to the name of the chosen gamepad,
|
||||||
// truncating the name to 30 characters if necessary.
|
// truncating the name to 30 characters if necessary.
|
||||||
this.layout[_key].optionValueLabels[index][0].setText(truncateString(this.scene.inputController.chosenGamepad, 30));
|
this.layout[_key].optionValueLabels[index][0].setText(this.scene.inputController.selectedDevice[Device.GAMEPAD], 30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,9 @@ import {SettingKeyboard, settingKeyboardDefaults, settingKeyboardOptions} from "
|
||||||
import {reverseValueToKeySetting, truncateString} from "#app/utils";
|
import {reverseValueToKeySetting, truncateString} from "#app/utils";
|
||||||
import AbstractSettingsUiUiHandler from "#app/ui/settings/abstract-settings-ui-handler";
|
import AbstractSettingsUiUiHandler from "#app/ui/settings/abstract-settings-ui-handler";
|
||||||
import {InterfaceConfig} from "#app/inputs-controller";
|
import {InterfaceConfig} from "#app/inputs-controller";
|
||||||
import {deleteBind} from "#app/configs/gamepad-utils";
|
|
||||||
import {addTextObject, TextStyle} from "#app/ui/text";
|
import {addTextObject, TextStyle} from "#app/ui/text";
|
||||||
|
import {deleteBind} from "#app/configs/configHandler";
|
||||||
|
import {Device} from "#app/enums/devices";
|
||||||
|
|
||||||
|
|
||||||
export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandler {
|
export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandler {
|
||||||
|
@ -53,7 +54,7 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl
|
||||||
}
|
}
|
||||||
|
|
||||||
getActiveConfig(): InterfaceConfig {
|
getActiveConfig(): InterfaceConfig {
|
||||||
return this.scene.inputController.getActiveKeyboardConfig();
|
return this.scene.inputController.getActiveConfig(Device.KEYBOARD);
|
||||||
}
|
}
|
||||||
|
|
||||||
getLocalStorageSetting(): object {
|
getLocalStorageSetting(): object {
|
||||||
|
@ -101,7 +102,7 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl
|
||||||
if (_key === 'noKeyboard') continue; // Skip updating the no gamepad layout.
|
if (_key === 'noKeyboard') continue; // Skip updating the no gamepad layout.
|
||||||
// Update the text of the first option label under the current setting to the name of the chosen gamepad,
|
// Update the text of the first option label under the current setting to the name of the chosen gamepad,
|
||||||
// truncating the name to 30 characters if necessary.
|
// truncating the name to 30 characters if necessary.
|
||||||
this.layout[_key].optionValueLabels[index][0].setText(truncateString(this.scene.inputController.chosenKeyboard, 30));
|
this.layout[_key].optionValueLabels[index][0].setText(truncateString(this.scene.inputController.selectedDevice[Device.KEYBOARD], 30));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +110,7 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl
|
||||||
}
|
}
|
||||||
|
|
||||||
saveCustomKeyboardMappingToLocalStorage(config): void {
|
saveCustomKeyboardMappingToLocalStorage(config): void {
|
||||||
this.scene.gameData.saveCustomKeyboardMapping(this.scene.inputController?.chosenKeyboard, config.currentKeys, config.icons);
|
this.scene.gameData.saveMappingConfigs(this.scene.inputController?.selectedDevice[Device.KEYBOARD], config);
|
||||||
}
|
}
|
||||||
|
|
||||||
saveSettingToLocalStorage(settingName, cursor): void {
|
saveSettingToLocalStorage(settingName, cursor): void {
|
||||||
|
|
Loading…
Reference in New Issue