Browse Source

Remove `TranslateMessage`

It has become entirely redundant.
pull/5024/head
Gleb Mazovetskiy 4 years ago committed by Anders Jenbo
parent
commit
3d4f0b48b8
  1. 1
      Source/debug.cpp
  2. 129
      Source/diablo.cpp
  3. 1
      Source/interfac.cpp
  4. 81
      Source/miniwin/misc_msg.cpp
  5. 2
      Source/miniwin/misc_msg.h

1
Source/debug.cpp

@ -122,7 +122,6 @@ void ProcessMessages()
gbRunGame = false;
break;
}
TranslateMessage(&msg);
PushMessage(&msg);
}
}

129
Source/diablo.cpp

@ -441,8 +441,11 @@ void ClosePanels()
QuestLogIsOpen = false;
}
void PressKey(SDL_Keycode vkey)
void PressKey(SDL_Keycode vkey, uint16_t modState)
{
if (vkey == SDLK_UNKNOWN)
return;
if (vkey == SDLK_PAUSE) {
diablo_pause_game();
return;
@ -457,7 +460,7 @@ void PressKey(SDL_Keycode vkey)
}
sgOptions.Keymapper.KeyPressed(vkey);
if (vkey == SDLK_RETURN || vkey == SDLK_KP_ENTER) {
if ((SDL_GetModState() & KMOD_ALT) != 0) {
if ((modState & KMOD_ALT) != 0) {
sgOptions.Graphics.fullscreen.SetValue(!IsFullScreen());
SaveOptions();
} else {
@ -483,15 +486,53 @@ void PressKey(SDL_Keycode vkey)
sgOptions.Keymapper.KeyPressed(vkey);
if (PauseMode == 2) {
if ((vkey == SDLK_RETURN || vkey == SDLK_KP_ENTER) && (SDL_GetModState() & KMOD_ALT) != 0) {
if ((vkey == SDLK_RETURN || vkey == SDLK_KP_ENTER) && (modState & KMOD_ALT) != 0) {
sgOptions.Graphics.fullscreen.SetValue(!IsFullScreen());
SaveOptions();
}
return;
}
if (vkey == SDLK_RETURN || vkey == SDLK_KP_ENTER) {
if ((SDL_GetModState() & KMOD_ALT) != 0) {
if (DoomFlag) {
doom_close();
return;
}
if (dropGoldFlag) {
control_drop_gold(vkey);
return;
}
if (IsWithdrawGoldOpen) {
WithdrawGoldKeyPress(vkey);
return;
}
switch (vkey) {
case SDLK_PLUS:
case SDLK_KP_PLUS:
case SDLK_EQUALS:
case SDLK_KP_EQUALS:
if (AutomapActive) {
AutomapZoomIn();
}
return;
case SDLK_MINUS:
case SDLK_KP_MINUS:
case SDLK_UNDERSCORE:
if (AutomapActive) {
AutomapZoomOut();
}
return;
#ifdef _DEBUG
case SDLK_m:
if ((modState & KMOD_ALT) != 0)
NextDebugMonster();
else
GetDebugMonster();
return;
#endif
case SDLK_RETURN:
case SDLK_KP_ENTER:
if ((modState & KMOD_ALT) != 0) {
sgOptions.Graphics.fullscreen.SetValue(!IsFullScreen());
SaveOptions();
} else if (stextflag != STORE_NONE) {
@ -501,7 +542,8 @@ void PressKey(SDL_Keycode vkey)
} else {
control_type_message();
}
} else if (vkey == SDLK_UP) {
return;
case SDLK_UP:
if (stextflag != STORE_NONE) {
StoreUp();
} else if (QuestLogIsOpen) {
@ -515,7 +557,8 @@ void PressKey(SDL_Keycode vkey)
} else if (IsStashOpen) {
Stash.PreviousPage();
}
} else if (vkey == SDLK_DOWN) {
return;
case SDLK_DOWN:
if (stextflag != STORE_NONE) {
StoreDown();
} else if (QuestLogIsOpen) {
@ -529,74 +572,29 @@ void PressKey(SDL_Keycode vkey)
} else if (IsStashOpen) {
Stash.NextPage();
}
} else if (vkey == SDLK_PAGEUP) {
return;
case SDLK_PAGEUP:
if (stextflag != STORE_NONE) {
StorePrior();
} else if (ChatLogFlag) {
ChatLogScrollTop();
}
} else if (vkey == SDLK_PAGEDOWN) {
return;
case SDLK_PAGEDOWN:
if (stextflag != STORE_NONE) {
StoreNext();
} else if (ChatLogFlag) {
ChatLogScrollBottom();
}
} else if (vkey == SDLK_LEFT) {
if (AutomapActive && !talkflag) {
AutomapLeft();
}
} else if (vkey == SDLK_RIGHT) {
if (AutomapActive && !talkflag) {
AutomapRight();
}
}
}
/**
* @internal `return` must be used instead of `break` to be bin exact as C++
*/
void PressChar(char vkey)
{
if (gmenu_is_active() || IsTalkActive() || sgnTimeoutCurs != CURSOR_NONE || MyPlayerIsDead) {
return;
}
if (PauseMode == 2) {
return;
}
if (DoomFlag) {
doom_close();
return;
}
if (dropGoldFlag) {
control_drop_gold(static_cast<SDL_Keycode>(vkey));
return;
}
if (IsWithdrawGoldOpen) {
WithdrawGoldKeyPress(static_cast<SDL_Keycode>(vkey));
return;
}
switch (vkey) {
case '+':
case '=':
if (AutomapActive) {
AutomapZoomIn();
}
return;
case '-':
case '_':
if (AutomapActive) {
AutomapZoomOut();
}
return;
#ifdef _DEBUG
case 'M':
NextDebugMonster();
case SDLK_LEFT:
if (AutomapActive && !talkflag)
AutomapLeft();
return;
case 'm':
GetDebugMonster();
case SDLK_RIGHT:
if (AutomapActive && !talkflag)
AutomapRight();
return;
#endif
}
}
@ -609,14 +607,11 @@ void GameEventHandler(uint32_t uMsg, uint32_t wParam, uint32_t lParam)
{
switch (uMsg) {
case DVL_WM_KEYDOWN:
PressKey(static_cast<SDL_Keycode>(wParam));
PressKey(static_cast<SDL_Keycode>(wParam), DecodeKeyboardModState(lParam));
return;
case DVL_WM_KEYUP:
ReleaseKey(static_cast<SDL_Keycode>(wParam));
return;
case DVL_WM_CHAR:
PressChar(static_cast<char>(wParam));
return;
case DVL_WM_SYSKEYDOWN:
if (PressSysKey(static_cast<SDL_Keycode>(wParam)))
return;
@ -756,7 +751,6 @@ void RunGameLoop(interface_mode uMsg)
gbRunGame = false;
break;
}
TranslateMessage(&msg);
PushMessage(&msg);
}
if (!gbRunGame)
@ -2041,7 +2035,6 @@ void DisableInputEventHandler(uint32_t uMsg, uint32_t /*wParam*/, uint32_t lPara
switch (uMsg) {
case DVL_WM_KEYDOWN:
case DVL_WM_KEYUP:
case DVL_WM_CHAR:
case DVL_WM_SYSKEYDOWN:
case DVL_WM_SYSCOMMAND:
return;

1
Source/interfac.cpp

@ -212,7 +212,6 @@ void interface_msg_pump()
while (FetchMessage(&msg)) {
if (msg.message != DVL_WM_QUIT) {
TranslateMessage(&msg);
PushMessage(&msg);
}
}

81
Source/miniwin/misc_msg.cpp

@ -503,87 +503,6 @@ bool FetchMessage(tagMSG *lpMsg)
return available;
}
void TranslateMessage(const tagMSG *lpMsg)
{
if (lpMsg->message == DVL_WM_KEYDOWN) {
const auto key = static_cast<SDL_Keycode>(lpMsg->wParam);
const uint16_t mod = DecodeKeyboardModState(lpMsg->lParam >> 16);
const bool isShift = (mod & KMOD_SHIFT) != 0;
const bool isCapsLock = (mod & KMOD_CAPS) != 0;
const bool isUpper = isShift != isCapsLock;
char chr;
if (key >= SDLK_a && key <= SDLK_z) {
chr = static_cast<char>(key);
if (isUpper)
chr = static_cast<char>(chr - ('a' - 'A'));
} else if (key <= 0x7F) {
chr = static_cast<char>(key);
} else if (key >= SDLK_KP_1 && key <= SDLK_KP_9) {
chr = static_cast<char>(SDLK_1 + (key - SDLK_KP_1));
} else if (key == SDLK_KP_0) {
chr = static_cast<char>(SDLK_0);
} else if (key == SDLK_KP_PLUS) {
chr = static_cast<char>(SDLK_PLUS);
} else if (key == SDLK_KP_MINUS) {
chr = static_cast<char>(SDLK_MINUS);
} else if (key == SDLK_KP_DIVIDE) {
chr = static_cast<char>(SDLK_SLASH);
} else if (key == SDLK_KP_MULTIPLY) {
chr = static_cast<char>(SDLK_ASTERISK);
} else if (key == SDLK_KP_COMMA) {
chr = static_cast<char>(SDLK_COMMA);
} else if (key == SDLK_KP_PERIOD) {
chr = static_cast<char>(SDLK_PERIOD);
} else if (key == SDLK_KP_ENTER) {
chr = static_cast<char>(SDLK_RETURN);
} else if (key == SDLK_KP_EQUALS) {
chr = static_cast<char>(SDLK_EQUALS);
} else {
return;
}
if (isShift) {
switch (chr) {
case '1':
chr = '!';
break;
case '2':
chr = '@';
break;
case '3':
chr = '#';
break;
case '4':
chr = '$';
break;
case '5':
chr = '%';
break;
case '6':
chr = '^';
break;
case '7':
chr = '&';
break;
case '8':
chr = '*';
break;
case '9':
chr = '(';
break;
case '0':
chr = ')';
break;
}
}
// XXX: This does not add extended info to lParam
PostMessage(DVL_WM_CHAR, key, 0);
}
}
void PushMessage(const tagMSG *lpMsg)
{
assert(CurrentEventHandler != nullptr);

2
Source/miniwin/misc_msg.h

@ -30,7 +30,6 @@ void FocusOnCharInfo();
void SetMouseButtonEvent(SDL_Event &event, uint32_t type, uint8_t button, Point position);
bool FetchMessage(tagMSG *lpMsg);
void TranslateMessage(const tagMSG *lpMsg);
void PushMessage(const tagMSG *lpMsg);
void PostMessage(uint32_t type, uint32_t wParam, uint32_t lParam);
void ClearMessageQueue();
@ -92,7 +91,6 @@ inline uint16_t DecodeMouseModState(uint32_t wParam)
#define DVL_WM_SYSCOMMAND 0x0112
#define DVL_WM_CHAR 0x0102
#define DVL_WM_CAPTURECHANGED 0x0215
#define DVL_WM_PAINT 0x000F

Loading…
Cancel
Save