//�������������������������������������������������������������������������Ŀ // trigger � // � // trigger :- '[' <constraint> * ']' � //��������������������������������������������������������������������������� STATIC void trigger () { EVNT[triggers] = event_id; match (YY_LBRACKET); // Collect all constraints trig_key = 0; theTrigger = MaxTrigger(); while (CurrentToken && CurrentToken != YY_RBRACKET) constraint(); match (YY_RBRACKET); TRGS[triggers] = theTrigger; // Advance to the next trigger triggers++; if (triggers > MAX_TRIGS) error ("Exceeded internal compiler limits -- too many triggers\n"); }
void CXBApplicationEx::ReadInput() { MEASURE_FUNCTION; //----------------------------------------- // Handle input //----------------------------------------- // Read the input from the IR remote #ifdef HAS_IR_REMOTE XBInput_GetInput( m_IR_Remote ); ZeroMemory( &m_DefaultIR_Remote, sizeof(m_DefaultIR_Remote) ); for ( DWORD i = 0; i < 4; i++ ) { if ( m_IR_Remote[i].hDevice) { m_DefaultIR_Remote.wButtons = m_IR_Remote[i].wButtons; } } #endif #ifdef HAS_SDL //SDL_PumpEvents(); static RESOLUTION windowres = WINDOW; // Read the input from the mouse g_Mouse.Update(); SDL_Event event; while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: if (!g_application.m_bStop) g_application.getApplicationMessenger().Shutdown(); break; case SDL_VIDEORESIZE: #ifndef __APPLE__ g_settings.m_ResInfo[WINDOW].iWidth = event.resize.w; g_settings.m_ResInfo[WINDOW].iHeight = event.resize.h; g_graphicsContext.ResetOverscan(g_settings.m_ResInfo[WINDOW]); g_graphicsContext.SetVideoResolution(windowres, FALSE, false); g_Mouse.SetResolution(g_settings.m_ResInfo[WINDOW].iWidth, g_settings.m_ResInfo[WINDOW].iHeight, 1, 1); g_fontManager.ReloadTTFFonts(); #endif break; #ifdef HAS_SDL_JOYSTICK case SDL_JOYBUTTONUP: case SDL_JOYBUTTONDOWN: case SDL_JOYAXISMOTION: case SDL_JOYBALLMOTION: case SDL_JOYHATMOTION: g_Joystick.Update(event); break; #endif case SDL_KEYDOWN: g_Keyboard.Update(event); break; case SDL_ACTIVEEVENT: //If the window was inconified or restored if( event.active.state & SDL_APPACTIVE ) { m_AppActive = event.active.gain != 0; } break; case SDL_MOUSEBUTTONDOWN: // mouse scroll wheel. if (event.button.button == 4) g_Mouse.UpdateMouseWheel(1); else if (event.button.button == 5) g_Mouse.UpdateMouseWheel(-1); break; } } #else // Read the input from the keyboard g_Keyboard.Update(); // Read the input from the mouse g_Mouse.Update(); #endif #ifdef HAS_LIRC g_RemoteControl.Update(); #endif #ifdef HAS_GAMEPAD // Read the input for all connected gampads XBInput_GetInput( m_Gamepad ); // Lump inputs of all connected gamepads into one common structure. // This is done so apps that need only one gamepad can function with // any gamepad. ZeroMemory( &m_DefaultGamepad, sizeof(m_DefaultGamepad) ); float maxTrigger = 0.0f; for ( DWORD i = 0; i < 4; i++ ) { if ( m_Gamepad[i].hDevice ) { if (maxTrigger < MaxTrigger(m_Gamepad[i])) { maxTrigger = MaxTrigger(m_Gamepad[i]); m_DefaultGamepad.fX1 = m_Gamepad[i].fX1; m_DefaultGamepad.fY1 = m_Gamepad[i].fY1; m_DefaultGamepad.fX2 = m_Gamepad[i].fX2; m_DefaultGamepad.fY2 = m_Gamepad[i].fY2; } m_DefaultGamepad.wButtons |= m_Gamepad[i].wButtons; m_DefaultGamepad.wPressedButtons |= m_Gamepad[i].wPressedButtons; m_DefaultGamepad.wLastButtons |= m_Gamepad[i].wLastButtons; for ( DWORD b = 0; b < 8; b++ ) { m_DefaultGamepad.bAnalogButtons[b] |= m_Gamepad[i].bAnalogButtons[b]; m_DefaultGamepad.bPressedAnalogButtons[b] |= m_Gamepad[i].bPressedAnalogButtons[b]; m_DefaultGamepad.bLastAnalogButtons[b] |= m_Gamepad[i].bLastAnalogButtons[b]; } } } // Secure the deadzones of the analog sticks m_DefaultGamepad.fX1 = DeadZone(m_DefaultGamepad.fX1); m_DefaultGamepad.fY1 = DeadZone(m_DefaultGamepad.fY1); m_DefaultGamepad.fX2 = DeadZone(m_DefaultGamepad.fX2); m_DefaultGamepad.fY2 = DeadZone(m_DefaultGamepad.fY2); #endif }