add kbm support

This commit is contained in:
2026-08-13 09:11:13 +03:00
parent fb2e8eefd9
commit 7c7386099a
62 changed files with 1036 additions and 134 deletions
@@ -76,8 +76,10 @@ DWORD dwProfileSettingsA[NUM_PROFILE_VALUES]=
//-------------------------------------------------------------------------------------
BOOL g_bWidescreen = TRUE;
int g_iScreenWidth = 1920;
int g_iScreenHeight = 1080;
// PIEBOT: currently touchcontrol KBM only works on 720p
int g_iScreenWidth = 1280;
int g_iScreenHeight = 720;
void DefineActions(void)
{
@@ -358,6 +360,89 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
pMinecraft->soundEngine->playMusicTick();
}
break;
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
if (!(lParam & 0x40000000))
{
InputManager.OnKeyDown((int)wParam);
}
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_KEYUP:
case WM_SYSKEYUP:
InputManager.OnKeyUp((int)wParam);
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_CHAR:
InputManager.OnChar((wchar_t)wParam);
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_INPUT:
{
UINT dwSize = 0;
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, nullptr, &dwSize, sizeof(RAWINPUTHEADER));
if (dwSize > 0 && dwSize <= 256)
{
BYTE rawBuffer[256];
if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, rawBuffer, &dwSize, sizeof(RAWINPUTHEADER)) == dwSize)
{
const RAWINPUT* raw = (RAWINPUT*)rawBuffer;
if (raw->header.dwType == RIM_TYPEMOUSE)
{
InputManager.OnRawMouseDelta(raw->data.mouse.lLastX, raw->data.mouse.lLastY);
}
}
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_MOUSEMOVE:
InputManager.OnMouseMove(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_LBUTTONDOWN:
InputManager.OnLButtonDown(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_LBUTTONUP:
InputManager.OnLButtonUp(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_RBUTTONDOWN:
InputManager.OnRButtonDown(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_RBUTTONUP:
InputManager.OnRButtonUp(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_MBUTTONDOWN:
InputManager.OnMButtonDown(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_MBUTTONUP:
InputManager.OnMButtonUp(LOWORD(lParam), HIWORD(lParam));
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_MOUSEWHEEL:
{
POINT pt = { (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam) };
ScreenToClient(hWnd, &pt);
InputManager.OnMouseWheel((short)HIWORD(wParam), pt.x, pt.y);
}
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_KILLFOCUS:
InputManager.SetWindowFocused(false);
if (InputManager.IsMouseCaptured())
InputManager.SetMouseCaptured(false);
break;
case WM_SETFOCUS:
InputManager.SetWindowFocused(true);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
@@ -973,12 +1058,13 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
MSG msg = {0};
while( WM_QUIT != msg.message )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
if (msg.message == WM_QUIT) break;
TranslateMessage( &msg );
DispatchMessage( &msg );
continue;
}
if (msg.message == WM_QUIT) break;
RenderManager.StartFrame();
#if 0
if(pMinecraft->soundEngine->isStreamingWavebankReady() &&
@@ -1027,6 +1113,10 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
// g_NetworkManager.DoWork();
PIXEndNamedEvent();
PIXBeginNamedEvent(0,"Input manager tick mouse");
InputManager.TickKBM();
PIXEndNamedEvent();
// LeaderboardManager::Instance()->Tick();
// Render game graphics.
if(app.GetGameStarted())