mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-04 19:36:43 +03:00
Big leap for key rebinding and crossplatform-ness.
This commit is contained in:
@@ -8,188 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(USE_SDL)
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
enum
|
||||
{
|
||||
AKEYCODE_UNKNOWN = 0,
|
||||
AKEYCODE_MENU,
|
||||
AKEYCODE_SEARCH,
|
||||
AKEYCODE_BACK,
|
||||
AKEYCODE_BUTTON_X,
|
||||
AKEYCODE_BUTTON_Y,
|
||||
AKEYCODE_DPAD_UP,
|
||||
AKEYCODE_DPAD_DOWN,
|
||||
AKEYCODE_DPAD_LEFT,
|
||||
AKEYCODE_DPAD_RIGHT,
|
||||
AKEYCODE_DPAD_CENTER,
|
||||
AKEYCODE_BUTTON_L1,
|
||||
AKEYCODE_BUTTON_R1,
|
||||
AKEYCODE_SHIFT_LEFT,
|
||||
AKEYCODE_SHIFT_RIGHT,
|
||||
AKEYCODE_DEL,
|
||||
AKEYCODE_FORWARD_DEL,
|
||||
AKEYCODE_COMMA,
|
||||
AKEYCODE_PERIOD,
|
||||
AKEYCODE_PLUS,
|
||||
AKEYCODE_MINUS,
|
||||
AKEYCODE_SEMICOLON,
|
||||
AKEYCODE_SLASH,
|
||||
AKEYCODE_GRAVE,
|
||||
AKEYCODE_LEFT_BRACKET,
|
||||
AKEYCODE_BACKSLASH,
|
||||
AKEYCODE_RIGHT_BRACKET,
|
||||
AKEYCODE_APOSTROPHE,
|
||||
AKEYCODE_SPACE,
|
||||
AKEYCODE_0,
|
||||
AKEYCODE_1,
|
||||
AKEYCODE_2,
|
||||
AKEYCODE_3,
|
||||
AKEYCODE_4,
|
||||
AKEYCODE_5,
|
||||
AKEYCODE_6,
|
||||
AKEYCODE_7,
|
||||
AKEYCODE_8,
|
||||
AKEYCODE_9,
|
||||
AKEYCODE_A,
|
||||
AKEYCODE_Q,
|
||||
AKEYCODE_T,
|
||||
AKEYCODE_Z,
|
||||
AKEYCODE_F3,
|
||||
AKEYCODE_F4,
|
||||
AKEYCODE_ARROW_LEFT,
|
||||
AKEYCODE_ARROW_RIGHT,
|
||||
AKEYCODE_ENTER,
|
||||
};
|
||||
|
||||
static inline int translate_sdl_key_to_mcpe(int key) {
|
||||
switch (key) {
|
||||
case SDLK_ESCAPE: return AKEYCODE_MENU;
|
||||
case SDLK_F3: return AKEYCODE_F3;
|
||||
case SDLK_F4: return AKEYCODE_F4;
|
||||
case SDLK_F5: return AKEYCODE_SEARCH;
|
||||
case SDLK_y: return AKEYCODE_BACK;
|
||||
case SDLK_u: return AKEYCODE_BUTTON_X;
|
||||
case SDLK_e: return AKEYCODE_BUTTON_Y;
|
||||
case SDLK_w: return AKEYCODE_DPAD_UP;
|
||||
case SDLK_s: return AKEYCODE_DPAD_DOWN;
|
||||
case SDLK_a: return AKEYCODE_DPAD_LEFT;
|
||||
case SDLK_d: return AKEYCODE_DPAD_RIGHT;
|
||||
case SDLK_SPACE: return AKEYCODE_DPAD_CENTER;
|
||||
case SDLK_x: return AKEYCODE_BUTTON_L1;
|
||||
case SDLK_c: return AKEYCODE_BUTTON_R1;
|
||||
case SDLK_LSHIFT: return AKEYCODE_SHIFT_LEFT;
|
||||
case SDLK_RSHIFT: return AKEYCODE_SHIFT_RIGHT;
|
||||
case SDLK_BACKSPACE: return AKEYCODE_DEL;
|
||||
case SDLK_DELETE: return AKEYCODE_FORWARD_DEL;
|
||||
case SDLK_COMMA: return AKEYCODE_COMMA;
|
||||
case SDLK_PERIOD: return AKEYCODE_PERIOD;
|
||||
case SDLK_PLUS: return AKEYCODE_PLUS;
|
||||
case SDLK_MINUS: return AKEYCODE_MINUS;
|
||||
case SDLK_SEMICOLON: return AKEYCODE_SEMICOLON;
|
||||
case SDLK_SLASH: return AKEYCODE_SLASH;
|
||||
case SDLK_BACKQUOTE: return AKEYCODE_GRAVE;
|
||||
case SDLK_LEFTBRACKET: return AKEYCODE_LEFT_BRACKET;
|
||||
case SDLK_BACKSLASH: return AKEYCODE_BACKSLASH;
|
||||
case SDLK_RIGHTBRACKET: return AKEYCODE_RIGHT_BRACKET;
|
||||
case SDLK_QUOTE: return AKEYCODE_APOSTROPHE;
|
||||
case SDLK_1: return AKEYCODE_1;
|
||||
case SDLK_2: return AKEYCODE_2;
|
||||
case SDLK_3: return AKEYCODE_3;
|
||||
case SDLK_4: return AKEYCODE_4;
|
||||
case SDLK_5: return AKEYCODE_5;
|
||||
case SDLK_6: return AKEYCODE_6;
|
||||
case SDLK_7: return AKEYCODE_7;
|
||||
case SDLK_8: return AKEYCODE_8;
|
||||
case SDLK_0: return AKEYCODE_0;
|
||||
case SDLK_9: return AKEYCODE_9;
|
||||
case SDLK_q: return AKEYCODE_Q;
|
||||
case SDLK_t: return AKEYCODE_T;
|
||||
case SDLK_z: return AKEYCODE_Z;
|
||||
case SDLK_LEFT: return AKEYCODE_ARROW_LEFT;
|
||||
case SDLK_RIGHT: return AKEYCODE_ARROW_RIGHT;
|
||||
case SDLK_RETURN: return AKEYCODE_ENTER;
|
||||
default: return AKEYCODE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
||||
#define NOMINMAX
|
||||
#ifdef _XBOX
|
||||
#include <xtl.h>
|
||||
#else
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
//fake keycodes for windows
|
||||
AKEYCODE_UNKNOWN = 0,
|
||||
|
||||
AKEYCODE_MENU = VK_ESCAPE, // pause screen
|
||||
AKEYCODE_SEARCH = VK_F5, // toggle third person mode
|
||||
|
||||
AKEYCODE_BACK = 'Y', // used to go left 1 slot
|
||||
AKEYCODE_BUTTON_X = 'U', // used to go right 1 slot
|
||||
AKEYCODE_BUTTON_Y = 'E', // show inventory
|
||||
|
||||
AKEYCODE_DPAD_UP = 'W',
|
||||
AKEYCODE_DPAD_DOWN = 'S',
|
||||
AKEYCODE_DPAD_LEFT = 'A',
|
||||
AKEYCODE_DPAD_RIGHT = 'D',
|
||||
AKEYCODE_DPAD_CENTER = ' ',
|
||||
|
||||
AKEYCODE_BUTTON_L1 = 'X',
|
||||
AKEYCODE_BUTTON_R1 = 'C',
|
||||
|
||||
AKEYCODE_SHIFT_LEFT = VK_SHIFT,
|
||||
AKEYCODE_SHIFT_RIGHT = VK_SHIFT,
|
||||
|
||||
AKEYCODE_DEL = VK_BACK,
|
||||
AKEYCODE_FORWARD_DEL = VK_DELETE,
|
||||
|
||||
AKEYCODE_COMMA = VK_OEM_COMMA, // ',<'
|
||||
AKEYCODE_PERIOD = VK_OEM_PERIOD,// '.>'
|
||||
AKEYCODE_PLUS = VK_OEM_PLUS, // '=+'
|
||||
AKEYCODE_MINUS = VK_OEM_MINUS, // '-_'
|
||||
AKEYCODE_SEMICOLON = VK_OEM_1, // ';:'
|
||||
AKEYCODE_SLASH = VK_OEM_2, // '/?'
|
||||
AKEYCODE_GRAVE = VK_OEM_3, // '`~'
|
||||
AKEYCODE_LEFT_BRACKET = VK_OEM_4, // '[{'
|
||||
AKEYCODE_BACKSLASH = VK_OEM_5, // '\|'
|
||||
AKEYCODE_RIGHT_BRACKET = VK_OEM_6,// ']}'
|
||||
AKEYCODE_APOSTROPHE = VK_OEM_7, // ''"'
|
||||
AKEYCODE_SPACE = VK_SPACE,
|
||||
|
||||
AKEYCODE_F1 = VK_F1,
|
||||
AKEYCODE_F3 = VK_F3,
|
||||
AKEYCODE_F4 = VK_F4,
|
||||
|
||||
AKEYCODE_0 = '0',
|
||||
AKEYCODE_1 = '1',
|
||||
//...
|
||||
AKEYCODE_9 = '9',
|
||||
|
||||
AKEYCODE_ENTER = VK_RETURN,
|
||||
|
||||
// note: You have to add these here instead of using the
|
||||
// characters themselves, otherwise android won't pick it up
|
||||
AKEYCODE_A = 'A',
|
||||
AKEYCODE_Q = 'Q',
|
||||
AKEYCODE_T = 'T',
|
||||
AKEYCODE_Z = 'Z',
|
||||
|
||||
};
|
||||
|
||||
// this sucks
|
||||
#define AKEYCODE_ARROW_LEFT VK_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT VK_RIGHT
|
||||
|
||||
#elif defined(PLATFORM_ANDROID)
|
||||
#ifdef PLATFORM_ANDROID
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -489,8 +308,4 @@ enum
|
||||
#define AKEYCODE_ARROW_LEFT AKEYCODE_DPAD_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT AKEYCODE_DPAD_RIGHT
|
||||
|
||||
#else
|
||||
|
||||
#error "Provide key codes for your platform!"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -452,20 +452,21 @@ void Minecraft::tickInput()
|
||||
{
|
||||
m_gui.handleKeyPressed(keyCode);
|
||||
|
||||
int index = keyCode - AKEYCODE_1;
|
||||
if (index <= 8 && index >= 0)
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
m_pLocalPlayer->m_pInventory->selectSlot(index);
|
||||
if (m_options.isKey(eKeyMappingIndex(KM_SLOT_1 + i), keyCode))
|
||||
m_pLocalPlayer->m_pInventory->selectSlot(i);
|
||||
}
|
||||
else if (keyCode == AKEYCODE_SEARCH)
|
||||
|
||||
if (m_options.isKey(KM_TOGGLE3RD, keyCode))
|
||||
{
|
||||
m_options.m_bThirdPerson = !m_options.m_bThirdPerson;
|
||||
}
|
||||
else if (keyCode == AKEYCODE_MENU)
|
||||
else if (m_options.isKey(KM_MENU_CANCEL, keyCode))
|
||||
{
|
||||
pauseGame();
|
||||
}
|
||||
else if (keyCode == AKEYCODE_Q)
|
||||
else if (m_options.isKey(KM_DROP, keyCode))
|
||||
{
|
||||
int itemID = m_pLocalPlayer->m_pInventory->getSelectedItemId();
|
||||
if (itemID > 0)
|
||||
@@ -474,16 +475,16 @@ void Minecraft::tickInput()
|
||||
m_pLocalPlayer->drop(&inst);
|
||||
}
|
||||
}
|
||||
else if (keyCode == AKEYCODE_F1)
|
||||
else if (m_options.isKey(KM_TOGGLEGUI, keyCode))
|
||||
{
|
||||
m_options.m_bDontRenderGui = !m_options.m_bDontRenderGui;
|
||||
}
|
||||
else if (keyCode == AKEYCODE_F3)
|
||||
else if (m_options.isKey(KM_TOGGLEDEBUG, keyCode))
|
||||
{
|
||||
m_options.m_bDebugText = !m_options.m_bDebugText;
|
||||
}
|
||||
#ifdef ENH_ALLOW_AO
|
||||
else if (keyCode == AKEYCODE_F4)
|
||||
else if (m_options.isKey(KM_TOGGLEAO, keyCode))
|
||||
{
|
||||
// Toggle ambient occlusion.
|
||||
m_options.m_bAmbientOcclusion = !m_options.m_bAmbientOcclusion;
|
||||
|
||||
@@ -382,50 +382,58 @@ void Gui::handleClick(int clickID, int mouseX, int mouseY)
|
||||
|
||||
void Gui::handleKeyPressed(int keyCode)
|
||||
{
|
||||
switch (keyCode)
|
||||
if (m_pMinecraft->m_options.isKey(KM_INVENTORY, keyCode))
|
||||
{
|
||||
case AKEYCODE_BUTTON_Y:
|
||||
{
|
||||
m_pMinecraft->setScreen(new IngameBlockSelectionScreen);
|
||||
break;
|
||||
}
|
||||
|
||||
case AKEYCODE_BACK:
|
||||
{
|
||||
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
|
||||
m_pMinecraft->setScreen(new IngameBlockSelectionScreen);
|
||||
return;
|
||||
}
|
||||
if (m_pMinecraft->m_options.isKey(KM_SLOT_R, keyCode))
|
||||
{
|
||||
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
|
||||
|
||||
#ifdef ENH_ENABLE_9TH_SLOT
|
||||
#define MAX_ITEMS (C_MAX_HOTBAR_ITEMS - 2)
|
||||
#else
|
||||
#define MAX_ITEMS (C_MAX_HOTBAR_ITEMS - 3)
|
||||
#endif
|
||||
//@HUH: for whatever reason, it ignores the 7th item
|
||||
if (*slot <= MAX_ITEMS)
|
||||
(*slot)++;
|
||||
//@HUH: for whatever reason, it ignores the 7th item
|
||||
if (*slot <= MAX_ITEMS)
|
||||
(*slot)++;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case AKEYCODE_BUTTON_X:
|
||||
{
|
||||
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
|
||||
|
||||
if (*slot > 0)
|
||||
(*slot)--;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case AKEYCODE_T:
|
||||
case AKEYCODE_SLASH:
|
||||
{
|
||||
if (m_pMinecraft->m_pScreen)
|
||||
break;
|
||||
|
||||
m_pMinecraft->setScreen(new ChatScreen(keyCode == AKEYCODE_SLASH));
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (m_pMinecraft->m_options.isKey(KM_SLOT_L, keyCode))
|
||||
{
|
||||
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
|
||||
|
||||
if (*slot > 0)
|
||||
(*slot)--;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef PLATFORM_ANDROID
|
||||
// Android already has this defined
|
||||
#elif defined(_WIN32)
|
||||
#define AKEYCODE_SLASH VK_OEM_2
|
||||
#elif defined(USE_SDL)
|
||||
#define AKEYCODE_SLASH SDLK_SLASH
|
||||
#else
|
||||
#error "Define the slash key here!"
|
||||
#endif
|
||||
|
||||
if (keyCode == AKEYCODE_SLASH || m_pMinecraft->m_options.isKey(KM_CHAT, keyCode))
|
||||
{
|
||||
if (m_pMinecraft->m_pScreen)
|
||||
return;
|
||||
|
||||
m_pMinecraft->setScreen(new ChatScreen(keyCode == AKEYCODE_SLASH));
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef AKEYCODE_SLASH
|
||||
#undef AKEYCODE_SLASH
|
||||
#endif
|
||||
}
|
||||
|
||||
void Gui::renderMessages(bool bShowAll)
|
||||
|
||||
@@ -70,7 +70,7 @@ bool Screen::isInGameScreen()
|
||||
|
||||
void Screen::keyPressed(int key)
|
||||
{
|
||||
if (key == AKEYCODE_MENU)//escape
|
||||
if (m_pMinecraft->m_options.isKey(KM_MENU_CANCEL, key))
|
||||
{
|
||||
m_pMinecraft->setScreen(nullptr);
|
||||
}
|
||||
@@ -78,19 +78,19 @@ void Screen::keyPressed(int key)
|
||||
if (m_buttonTabList.size())
|
||||
{
|
||||
#ifndef ENH_HIGHLIGHT_BY_HOVER
|
||||
if (m_pMinecraft->m_options.m_keyBinds[Options::MENU_NEXT].value == key)
|
||||
if (m_pMinecraft->m_options.isKey(MENU_NEXT, key))
|
||||
{
|
||||
m_tabButtonIndex++;
|
||||
if (m_tabButtonIndex == int(m_buttonTabList.size()))
|
||||
m_tabButtonIndex = 0;
|
||||
}
|
||||
if (m_pMinecraft->m_options.m_keyBinds[Options::MENU_PREVIOUS].value == key)
|
||||
if (m_pMinecraft->m_options.isKey(MENU_PREVIOUS, key))
|
||||
{
|
||||
m_tabButtonIndex--;
|
||||
if (m_tabButtonIndex == -1)
|
||||
m_tabButtonIndex = int(m_buttonTabList.size() - 1);
|
||||
}
|
||||
if (m_pMinecraft->m_options.m_keyBinds[Options::MENU_OK].value == key)
|
||||
if (m_pMinecraft->m_options.isKey(MENU_OK, key))
|
||||
{
|
||||
if (m_buttonTabList[m_tabButtonIndex]->m_bEnabled)
|
||||
{
|
||||
|
||||
@@ -107,7 +107,22 @@ void TextInputBox::keyPressed(Minecraft* minecraft, int key)
|
||||
break;
|
||||
}
|
||||
#else
|
||||
|
||||
char chr = '\0';
|
||||
|
||||
// here we'll just use the raw key codes...
|
||||
#ifdef _WIN32
|
||||
#define AKEYCODE_FORWARD_DEL VK_DELETE
|
||||
#define AKEYCODE_ARROW_LEFT VK_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT VK_RIGHT
|
||||
#define AKEYCODE_DEL VK_BACK
|
||||
#elif defined(USE_SDL)
|
||||
#define AKEYCODE_FORWARD_DEL SDLK_DELETE
|
||||
#define AKEYCODE_ARROW_LEFT SDLK_LEFT
|
||||
#define AKEYCODE_ARROW_RIGHT SDLK_RIGHT
|
||||
#define AKEYCODE_DEL SDLK_BACKSPACE
|
||||
#endif
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case AKEYCODE_FORWARD_DEL:
|
||||
@@ -127,6 +142,15 @@ void TextInputBox::keyPressed(Minecraft* minecraft, int key)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef AKEYCODE_FORWARD_DEL
|
||||
#undef AKEYCODE_FORWARD_DEL
|
||||
#undef AKEYCODE_ARROW_LEFT
|
||||
#undef AKEYCODE_ARROW_RIGHT
|
||||
#endif
|
||||
#ifdef AKEYCODE_DEL
|
||||
#undef AKEYCODE_DEL
|
||||
#endif
|
||||
|
||||
if (chr)
|
||||
charPressed(chr);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ void ChatScreen::render(int mouseX, int mouseY, float f)
|
||||
|
||||
void ChatScreen::keyPressed(int keyCode)
|
||||
{
|
||||
if (keyCode == AKEYCODE_ENTER)
|
||||
if (m_pMinecraft->m_options.isKey(KM_MENU_OK, keyCode))
|
||||
sendMessageAndExit();
|
||||
|
||||
Screen::keyPressed(keyCode);
|
||||
|
||||
@@ -32,12 +32,12 @@ void KeyboardInput::setKey(int keyCode, bool b)
|
||||
{
|
||||
int index = -1;
|
||||
|
||||
if (m_pOptions->getKey(KM_FORWARD) == keyCode) index = 0;
|
||||
if (m_pOptions->getKey(KM_BACK) == keyCode) index = 1;
|
||||
if (m_pOptions->getKey(KM_LEFT) == keyCode) index = 2;
|
||||
if (m_pOptions->getKey(KM_RIGHT) == keyCode) index = 3;
|
||||
if (m_pOptions->getKey(KM_JUMP) == keyCode) index = 4;
|
||||
if (m_pOptions->getKey(KM_SNEAK) == keyCode) index = 5;
|
||||
if (m_pOptions->getKey(KM_FORWARD) == keyCode) index = 0;
|
||||
if (m_pOptions->getKey(KM_BACKWARD) == keyCode) index = 1;
|
||||
if (m_pOptions->getKey(KM_LEFT) == keyCode) index = 2;
|
||||
if (m_pOptions->getKey(KM_RIGHT) == keyCode) index = 3;
|
||||
if (m_pOptions->getKey(KM_JUMP) == keyCode) index = 4;
|
||||
if (m_pOptions->getKey(KM_SNEAK) == keyCode) index = 5;
|
||||
|
||||
if (index == -1)
|
||||
return;
|
||||
|
||||
@@ -54,46 +54,145 @@ void Options::initDefaultValues()
|
||||
m_bServerVisibleDefault = true;
|
||||
m_bDebugText = false;
|
||||
|
||||
m_keyMappings[0] = KeyMapping("key.forward", 'W');
|
||||
m_keyMappings[1] = KeyMapping("key.left", 'A');
|
||||
m_keyMappings[2] = KeyMapping("key.back", 'S');
|
||||
m_keyMappings[3] = KeyMapping("key.right", 'D');
|
||||
m_keyMappings[4] = KeyMapping("key.jump", ' ');
|
||||
m_keyMappings[5] = KeyMapping("key.inventory", 'E');
|
||||
m_keyMappings[6] = KeyMapping("key.drop", 'Q');
|
||||
m_keyMappings[7] = KeyMapping("key.chat", 'T');
|
||||
m_keyMappings[8] = KeyMapping("key.fog", 'F');
|
||||
m_keyMappings[9] = KeyMapping("key.sneak", '\n');
|
||||
m_keyMappings[10] = KeyMapping("key.destroy", 'X');
|
||||
m_keyMappings[11] = KeyMapping("key.place", 'C');
|
||||
m_keyMappings[12] = KeyMapping("key.menu.next", '(');
|
||||
m_keyMappings[13] = KeyMapping("key.menu.previous", '&');
|
||||
m_keyMappings[14] = KeyMapping("key.menu.ok", '\r');
|
||||
m_keyMappings[15] = KeyMapping("key.menu.cancel", '\b');
|
||||
// Win32 key codes are being used by default
|
||||
#define KM(idx, name, code) m_keyMappings[idx] = KeyMapping(name, code)
|
||||
KM(KM_FORWARD, "key.forward", 'W');
|
||||
KM(KM_LEFT, "key.left", 'A');
|
||||
KM(KM_BACKWARD, "key.back", 'S');
|
||||
KM(KM_RIGHT, "key.right", 'D');
|
||||
KM(KM_JUMP, "key.jump", ' ');
|
||||
KM(KM_INVENTORY, "key.inventory", 'E');
|
||||
KM(KM_DROP, "key.drop", 'Q');
|
||||
KM(KM_CHAT, "key.chat", 'T');
|
||||
KM(KM_FOG, "key.fog", 'F');
|
||||
KM(KM_SNEAK, "key.sneak", 0x10); // VK_SHIFT. In original, it's 10 (misspelling?)
|
||||
KM(KM_DESTROY, "key.destroy", 'K'); // was 'X'
|
||||
KM(KM_PLACE, "key.place", 'L'); // was 'C'
|
||||
KM(KM_MENU_NEXT, "key.menu.next", 0x28); // VK_DOWN
|
||||
KM(KM_MENU_PREVIOUS,"key.menu.previous", 0x26); // VK_UP
|
||||
KM(KM_MENU_OK, "key.menu.ok", 0x0D); // VK_RETURN
|
||||
KM(KM_MENU_CANCEL, "key.menu.cancel", 0x1B); // VK_ESCAPE, was 0x08 = VK_BACK
|
||||
KM(KM_SLOT_1, "key.slot.1", '1');
|
||||
KM(KM_SLOT_2, "key.slot.2", '2');
|
||||
KM(KM_SLOT_3, "key.slot.3", '3');
|
||||
KM(KM_SLOT_4, "key.slot.4", '4');
|
||||
KM(KM_SLOT_5, "key.slot.5", '5');
|
||||
KM(KM_SLOT_6, "key.slot.6", '6');
|
||||
KM(KM_SLOT_7, "key.slot.7", '7');
|
||||
KM(KM_SLOT_8, "key.slot.8", '8');
|
||||
KM(KM_SLOT_9, "key.slot.9", '9');
|
||||
KM(KM_SLOT_L, "key.slot.left", 'Y');
|
||||
KM(KM_SLOT_R, "key.slot.right", 'U');
|
||||
KM(KM_TOGGLEGUI, "key.fn.gui", 0x70); // VK_F1
|
||||
KM(KM_SCREENSHOT, "key.fn.screenshot", 0x71); // VK_F2
|
||||
KM(KM_TOGGLEDEBUG, "key.fn.debug", 0x72); // VK_F3
|
||||
KM(KM_TOGGLEAO, "key.fn.ao", 0x73); // VK_F4
|
||||
KM(KM_TOGGLE3RD, "key.fn.3rd", 0x74); // VK_F5
|
||||
KM(KM_FLY_UP, "key.fly.up", 'X');
|
||||
KM(KM_FLY_DOWN, "key.fly.down", 'C');
|
||||
#undef KM
|
||||
|
||||
#ifdef ORIGINAL_CODE
|
||||
m_rotY = 2;
|
||||
field_23D = 0;
|
||||
m_iViewDistance = 2;
|
||||
m_bThirdPerson = 0;
|
||||
field_19 = 0;
|
||||
#endif
|
||||
m_bFancyGraphics = 1;
|
||||
// keybind now reprograms some the keybinds.
|
||||
// For the restoration, we don't actually need them
|
||||
m_keyMappings[0].value = AKEYCODE_DPAD_UP;
|
||||
m_keyMappings[1].value = AKEYCODE_DPAD_LEFT;
|
||||
m_keyMappings[2].value = AKEYCODE_DPAD_DOWN;
|
||||
m_keyMappings[3].value = AKEYCODE_DPAD_RIGHT;
|
||||
m_keyMappings[4].value = AKEYCODE_DPAD_CENTER; // lmao, how stupid.
|
||||
m_keyMappings[10].value = AKEYCODE_BUTTON_L1;
|
||||
m_keyMappings[11].value = AKEYCODE_BUTTON_R1;
|
||||
m_keyMappings[12].value = AKEYCODE_DPAD_DOWN;
|
||||
m_keyMappings[13].value = AKEYCODE_DPAD_UP;
|
||||
m_keyMappings[14].value = AKEYCODE_DPAD_CENTER;
|
||||
m_keyMappings[15].value = AKEYCODE_BACK;
|
||||
|
||||
#ifndef ORIGINAL_CODE
|
||||
m_keyMappings[9].value = AKEYCODE_SHIFT_LEFT;
|
||||
m_bFancyGraphics = 1;
|
||||
|
||||
#define KM(idx,code) m_keyMappings[idx].value = code
|
||||
#ifdef USE_SDL
|
||||
KM(KM_FORWARD, SDLK_w);
|
||||
KM(KM_LEFT, SDLK_a);
|
||||
KM(KM_BACKWARD, SDLK_s);
|
||||
KM(KM_RIGHT, SDLK_d);
|
||||
KM(KM_JUMP, SDLK_SPACE);
|
||||
KM(KM_DESTROY, SDLK_x);
|
||||
KM(KM_PLACE, SDLK_c);
|
||||
KM(KM_MENU_NEXT, SDLK_DPAD_DOWN);
|
||||
KM(KM_MENU_PREVIOUS, SDLK_DPAD_UP);
|
||||
KM(KM_MENU_OK, SDLK_ENTER);
|
||||
KM(KM_MENU_CANCEL, SDLK_ESCAPE);
|
||||
KM(KM_DROP, SDLK_q);
|
||||
KM(KM_CHAT, SDLK_t);
|
||||
KM(KM_FOG, SDLK_f);
|
||||
KM(KM_SNEAK, SDLK_SHIFT_LEFT);
|
||||
KM(KM_SLOT_1, SDLK_1);
|
||||
KM(KM_SLOT_2, SDLK_2);
|
||||
KM(KM_SLOT_3, SDLK_3);
|
||||
KM(KM_SLOT_4, SDLK_4);
|
||||
KM(KM_SLOT_5, SDLK_5);
|
||||
KM(KM_SLOT_6, SDLK_6);
|
||||
KM(KM_SLOT_7, SDLK_7);
|
||||
KM(KM_SLOT_8, SDLK_8);
|
||||
KM(KM_SLOT_9, SDLK_9);
|
||||
KM(KM_TOGGLEGUI, SDLK_F1);
|
||||
KM(KM_SCREENSHOT, SDLK_F2);
|
||||
KM(KM_TOGGLEDEBUG, SDLK_F3);
|
||||
KM(KM_TOGGLEAO, SDLK_F4);
|
||||
KM(KM_TOGGLE3RD, SDLK_F5);
|
||||
KM(KM_SLOT_L, SDLK_y);
|
||||
KM(KM_SLOT_R, SDLK_u);
|
||||
KM(KM_FLY_UP, SDLK_c);
|
||||
KM(KM_FLY_DOWN, SDLK_x);
|
||||
#endif
|
||||
#ifdef PLATFORM_ANDROID
|
||||
// -- Original xperia play controls
|
||||
//KM(KM_FORWARD, AKEYCODE_DPAD_UP);
|
||||
//KM(KM_LEFT, AKEYCODE_DPAD_LEFT);
|
||||
//KM(KM_BACKWARD, AKEYCODE_DPAD_DOWN);
|
||||
//KM(KM_RIGHT, AKEYCODE_DPAD_RIGHT);
|
||||
//KM(KM_JUMP, AKEYCODE_DPAD_CENTER);
|
||||
//KM(KM_DESTROY, AKEYCODE_BUTTON_L1);
|
||||
//KM(KM_PLACE, AKEYCODE_BUTTON_R1);
|
||||
//KM(KM_MENU_NEXT, AKEYCODE_DPAD_DOWN);
|
||||
//KM(KM_MENU_PREVIOUS, AKEYCODE_DPAD_UP);
|
||||
//KM(KM_MENU_OK, AKEYCODE_DPAD_CENTER);
|
||||
//KM(KM_MENU_CANCEL, AKEYCODE_BACK);
|
||||
//custom
|
||||
//KM(KM_INVENTORY, AKEYCODE_BUTTON_Y);
|
||||
//KM(KM_SLOT_R, AKEYCODE_BACK);
|
||||
//KM(KM_SLOT_L, AKEYCODE_BUTTON_X);
|
||||
//KM(KM_FLY_UP, AKEYCODE_BUTTON_R1);
|
||||
//KM(KM_FLY_DOWN, AKEYCODE_BUTTON_L1);
|
||||
|
||||
KM(KM_FORWARD, AKEYCODE_W);
|
||||
KM(KM_LEFT, AKEYCODE_A);
|
||||
KM(KM_BACKWARD, AKEYCODE_S);
|
||||
KM(KM_RIGHT, AKEYCODE_D);
|
||||
KM(KM_JUMP, AKEYCODE_SPACE);
|
||||
KM(KM_DESTROY, AKEYCODE_X);
|
||||
KM(KM_PLACE, AKEYCODE_C);
|
||||
KM(KM_MENU_NEXT, AKEYCODE_DPAD_DOWN);
|
||||
KM(KM_MENU_PREVIOUS, AKEYCODE_DPAD_UP);
|
||||
KM(KM_MENU_OK, AKEYCODE_ENTER);
|
||||
KM(KM_MENU_CANCEL, AKEYCODE_ESCAPE);
|
||||
// custom
|
||||
KM(KM_SLOT_L, AKEYCODE_Y);
|
||||
KM(KM_SLOT_R, AKEYCODE_U);
|
||||
KM(KM_DROP, AKEYCODE_Q);
|
||||
KM(KM_CHAT, AKEYCODE_T);
|
||||
KM(KM_FOG, AKEYCODE_F);
|
||||
KM(KM_INVENTORY, AKEYCODE_F);
|
||||
KM(KM_SNEAK, AKEYCODE_SHIFT_LEFT);
|
||||
KM(KM_SLOT_1, AKEYCODE_1);
|
||||
KM(KM_SLOT_2, AKEYCODE_2);
|
||||
KM(KM_SLOT_3, AKEYCODE_3);
|
||||
KM(KM_SLOT_4, AKEYCODE_4);
|
||||
KM(KM_SLOT_5, AKEYCODE_5);
|
||||
KM(KM_SLOT_6, AKEYCODE_6);
|
||||
KM(KM_SLOT_7, AKEYCODE_7);
|
||||
KM(KM_SLOT_8, AKEYCODE_8);
|
||||
KM(KM_SLOT_9, AKEYCODE_9);
|
||||
KM(KM_TOGGLEGUI, AKEYCODE_F1);
|
||||
KM(KM_SCREENSHOT, AKEYCODE_F2);
|
||||
KM(KM_TOGGLEDEBUG, AKEYCODE_F3);
|
||||
KM(KM_TOGGLEAO, AKEYCODE_F4);
|
||||
KM(KM_TOGGLE3RD, AKEYCODE_F5);
|
||||
KM(KM_FLY_UP, AKEYCODE_C);
|
||||
KM(KM_FLY_DOWN, AKEYCODE_X);
|
||||
#endif
|
||||
#undef KM
|
||||
}
|
||||
|
||||
Options::Options()
|
||||
|
||||
@@ -17,7 +17,7 @@ enum eKeyMappingIndex
|
||||
{
|
||||
KM_FORWARD,
|
||||
KM_LEFT,
|
||||
KM_BACK,
|
||||
KM_BACKWARD,
|
||||
KM_RIGHT,
|
||||
KM_JUMP,
|
||||
KM_INVENTORY,
|
||||
@@ -30,7 +30,25 @@ enum eKeyMappingIndex
|
||||
KM_MENU_NEXT,
|
||||
KM_MENU_PREVIOUS,
|
||||
KM_MENU_OK,
|
||||
KM_MENU_CANCEL,
|
||||
KM_MENU_CANCEL, KM_BACK = KM_MENU_CANCEL,
|
||||
KM_SLOT_1,
|
||||
KM_SLOT_2,
|
||||
KM_SLOT_3,
|
||||
KM_SLOT_4,
|
||||
KM_SLOT_5,
|
||||
KM_SLOT_6,
|
||||
KM_SLOT_7,
|
||||
KM_SLOT_8,
|
||||
KM_SLOT_9,
|
||||
KM_SLOT_L,
|
||||
KM_SLOT_R,
|
||||
KM_TOGGLEGUI,
|
||||
KM_SCREENSHOT,
|
||||
KM_TOGGLEDEBUG,
|
||||
KM_TOGGLEAO,
|
||||
KM_TOGGLE3RD,
|
||||
KM_FLY_UP,
|
||||
KM_FLY_DOWN,
|
||||
KM_COUNT,
|
||||
};
|
||||
|
||||
@@ -91,6 +109,10 @@ public:
|
||||
{
|
||||
return m_keyMappings[idx].value;
|
||||
}
|
||||
bool isKey(eKeyMappingIndex idx, int keyCode)
|
||||
{
|
||||
return getKey(idx) == keyCode;
|
||||
}
|
||||
|
||||
public:
|
||||
float field_0;
|
||||
|
||||
@@ -73,9 +73,9 @@ void LocalPlayer::calculateFlight(float x, float y, float z)
|
||||
float z1 = f1 * z;
|
||||
|
||||
float y1 = 0.0f;
|
||||
if (Keyboard::isKeyDown(AKEYCODE_BUTTON_R1))
|
||||
if (Keyboard::isKeyDown(m_pMinecraft->m_options.getKey(KM_FLY_UP)))
|
||||
y1 = f1 * 0.2f;
|
||||
if (Keyboard::isKeyDown(AKEYCODE_BUTTON_L1))
|
||||
if (Keyboard::isKeyDown(m_pMinecraft->m_options.getKey(KM_FLY_DOWN)))
|
||||
y1 = f1 * -0.2f;
|
||||
|
||||
field_BFC += x1;
|
||||
|
||||
Reference in New Issue
Block a user