//DEAL WITH ALL WINDOW MESSAGES //Message Pump bool WINDOW::HandleMessages(void) { while(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) //Is there a message waiting? { if(msg.message==WM_QUIT) return false; //if a quit message, return false //handle input if(msg.message==WM_KEYDOWN) SetKeyPressed(msg.wParam); if(msg.message==WM_KEYUP) SetKeyReleased(msg.wParam); if(msg.message==WM_LBUTTONDOWN) SetLeftButtonPressed(); if(msg.message==WM_RBUTTONDOWN) SetRightButtonPressed(); TranslateMessage(&msg); //Translate Message DispatchMessage(&msg); //dispatch message } return true; }
//! Update the input state void InputManager::Update() { if(!m_aAsyncInputStates.empty()) { for (size_t i=0; i<m_aAsyncInputStates.size(); ++i) { SetKeyPressed(m_aAsyncInputStates[i].key, m_aAsyncInputStates[i].bPressed); } m_aAsyncInputStates.clear(); } if(!m_aAsyncTouchStates.empty()) { SetTouchState(m_aAsyncTouchStates[0]); m_aAsyncTouchStates.clear(); } // update focus holder if (m_FocusHolder.IsValid()) { auto holder = m_FocusHolder.Get(); m_FocusHolder.Clear(); if (IsTouchPressed() || IsTouchJustReleased()) m_FocusHolder = holder; } }
void Application::OnKeyPress(KeyCode key) { SetKeyPressed(key, true); switch (key) { case KEY_F1: m_q3map->ToggleRenderFlag(Q3RenderShowWireframe); break; case KEY_F2: m_q3map->ToggleRenderFlag(Q3RenderShowLightmaps); glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[RenderLightmaps], m_q3map->HasRenderFlag(Q3RenderShowLightmaps) ? 1 : 0); break; case KEY_F3: m_q3map->ToggleRenderFlag(Q3RenderUseLightmaps); glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[UseLightmaps], m_q3map->HasRenderFlag(Q3RenderUseLightmaps) ? 1 : 0); break; case KEY_F4: m_q3map->ToggleRenderFlag(Q3RenderAlphaTest); glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[UseAlphaTest], m_q3map->HasRenderFlag(Q3RenderAlphaTest) ? 1 : 0); break; case KEY_F5: m_q3map->ToggleRenderFlag(Q3RenderSkipMissingTex); break; case KEY_F6: m_q3map->ToggleRenderFlag(Q3RenderSkipPVS); break; case KEY_F7: m_q3map->ToggleRenderFlag(Q3RenderSkipFC); break; case KEY_TILDE: m_debugRenderState++; if (!VREnabled()) { if (m_debugRenderState > RenderMapStats) m_debugRenderState = None; } else { if (g_oculusVR.IsDebugHMD() || !g_oculusVR.IsDK2()) if (m_debugRenderState == RenderVRTrackingCamera) m_debugRenderState++; } if (m_debugRenderState >= DebugRenderMax) m_debugRenderState = None; break; case KEY_ESC: Terminate(); break; default: break; } if (VREnabled()) { g_oculusVR.OnKeyPress(key); } }
/** * Starts a new game. */ void TetraminoesManager::InnerData::StartGame(int difficulty) { level = difficulty; lines = 0; score = 0; target = MAX_LINES[level - 1]; time = 0; timeMark = 0; maxInterval = MAX_INTERVALS[level - 1]; SetKeyPressed(); InitWorld(); SelectNextPiece(); GetNextPiece(); gameOver = false; gamePaused = false; UpdateHud(); }
void Application::OnKeyRelease(KeyCode key) { SetKeyPressed(key, false); }