@ -34,143 +34,130 @@ static char currentKeyState[512] = { 0 }; // Contains current frame keyboard s
void UWP_PollInput ( )
{
// Register previous keyboard state
for ( int k = 0 ; k < 512 ; k + + ) previousKeyState [ k ] = currentKeyState [ k ] ;
// NOTE: Since UWP updates key state while our game is processing, the current key state really is the CURRENT, most up to date key state - not the key state from last frame.
// If we register the current key state as the last key state right before processing the frame, prev and current keyboard states will nearly always be identical.
// In the future, we should either create a third cache for windows to write key changes into, or better yet, just poll the keyboard using CoreWindow's GetKeyState https://docs.microsoft.com/en-us/uwp/api/windows.ui.core.corewindow#Windows_UI_Core_CoreWindow_GetKeyState_Windows_System_VirtualKey_
// Check if gamepads are ready
for ( int i = 0 ; i < MAX_GAMEPADS ; i + + )
// Process Keyboard
{
// HACK: UWP keeps a contiguous list of gamepads. For the interest of time I'm just doing a 1:1 mapping of
// connected gamepads with their spot in the list, but this has serious robustness problems
// e.g. player 1, 2, and 3 are playing a game - if player2 disconnects, p3's controller would now be mapped to p2's character since p3 is now second in the list.
gamepadReady [ i ] = ( i < Gamepad : : Gamepads - > Size ) ;
// Register previous keyboard state
for ( int k = 0 ; k < 512 ; k + + ) previousKeyState [ k ] = currentKeyState [ k ] ;
// Poll keyboard input
CoreWindow ^ window = CoreWindow : : GetForCurrentThread ( ) ;
using Windows : : System : : VirtualKey ;
// NOTE: Potential UWP bug with Alt key: https://social.msdn.microsoft.com/Forums/windowsapps/en-US/9bebfb0a-7637-400e-8bda-e55620091407/unexpected-behavior-in-windowscoreuicorephysicalkeystatusismenukeydown
currentKeyState [ KEY_SPACE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Space ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_ESCAPE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Escape ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_ENTER ] = ( window - > GetAsyncKeyState ( VirtualKey : : Enter ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_BACKSPACE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Back ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_RIGHT ] = ( window - > GetAsyncKeyState ( VirtualKey : : Right ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_LEFT ] = ( window - > GetAsyncKeyState ( VirtualKey : : Left ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_DOWN ] = ( window - > GetAsyncKeyState ( VirtualKey : : Down ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_UP ] = ( window - > GetAsyncKeyState ( VirtualKey : : Up ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F1 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F1 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F2 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F2 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F3 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F3 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F4 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F4 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F5 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F5 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F6 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F6 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F7 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F7 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F8 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F8 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F9 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F9 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F10 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F10 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F11 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F11 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F12 ] = ( window - > GetAsyncKeyState ( VirtualKey : : F12 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_LEFT_SHIFT ] = ( window - > GetAsyncKeyState ( VirtualKey : : LeftShift ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_LEFT_CONTROL ] = ( window - > GetAsyncKeyState ( VirtualKey : : LeftControl ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_LEFT_ALT ] = ( window - > GetAsyncKeyState ( VirtualKey : : LeftMenu ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_RIGHT_SHIFT ] = ( window - > GetAsyncKeyState ( VirtualKey : : RightShift ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_RIGHT_CONTROL ] = ( window - > GetAsyncKeyState ( VirtualKey : : RightControl ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_RIGHT_ALT ] = ( window - > GetAsyncKeyState ( VirtualKey : : RightMenu ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_ZERO ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number0 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_ONE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number1 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_TWO ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number2 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_THREE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number3 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_FOUR ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number4 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_FIVE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number5 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_SIX ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number6 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_SEVEN ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number7 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_EIGHT ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number8 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_NINE ] = ( window - > GetAsyncKeyState ( VirtualKey : : Number9 ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_A ] = ( window - > GetAsyncKeyState ( VirtualKey : : A ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_B ] = ( window - > GetAsyncKeyState ( VirtualKey : : B ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_C ] = ( window - > GetAsyncKeyState ( VirtualKey : : C ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_D ] = ( window - > GetAsyncKeyState ( VirtualKey : : D ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_E ] = ( window - > GetAsyncKeyState ( VirtualKey : : E ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_F ] = ( window - > GetAsyncKeyState ( VirtualKey : : F ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_G ] = ( window - > GetAsyncKeyState ( VirtualKey : : G ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_H ] = ( window - > GetAsyncKeyState ( VirtualKey : : H ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_I ] = ( window - > GetAsyncKeyState ( VirtualKey : : I ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_J ] = ( window - > GetAsyncKeyState ( VirtualKey : : J ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_K ] = ( window - > GetAsyncKeyState ( VirtualKey : : K ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_L ] = ( window - > GetAsyncKeyState ( VirtualKey : : L ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_M ] = ( window - > GetAsyncKeyState ( VirtualKey : : M ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_N ] = ( window - > GetAsyncKeyState ( VirtualKey : : N ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_O ] = ( window - > GetAsyncKeyState ( VirtualKey : : O ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_P ] = ( window - > GetAsyncKeyState ( VirtualKey : : P ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_Q ] = ( window - > GetAsyncKeyState ( VirtualKey : : Q ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_R ] = ( window - > GetAsyncKeyState ( VirtualKey : : R ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_S ] = ( window - > GetAsyncKeyState ( VirtualKey : : S ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_T ] = ( window - > GetAsyncKeyState ( VirtualKey : : T ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_U ] = ( window - > GetAsyncKeyState ( VirtualKey : : U ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_V ] = ( window - > GetAsyncKeyState ( VirtualKey : : V ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_W ] = ( window - > GetAsyncKeyState ( VirtualKey : : W ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_X ] = ( window - > GetAsyncKeyState ( VirtualKey : : X ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_Y ] = ( window - > GetAsyncKeyState ( VirtualKey : : Y ) = = CoreVirtualKeyStates : : Down ) ;
currentKeyState [ KEY_Z ] = ( window - > GetAsyncKeyState ( VirtualKey : : Z ) = = CoreVirtualKeyStates : : Down ) ;
}
// Get current gamepad state
for ( int i = 0 ; i < MAX_GAMEPADS ; i + + )
// Process Gamepads
{
if ( gamepadReady [ i ] )
// Check if gamepads are ready
for ( int i = 0 ; i < MAX_GAMEPADS ; i + + )
{
// Register previous gamepad states
for ( int k = 0 ; k < MAX_GAMEPAD_BUTTONS ; k + + ) previousGamepadState [ i ] [ k ] = currentGamepadState [ i ] [ k ] ;
// Get current gamepad state
auto gamepad = Gamepad : : Gamepads - > GetAt ( i ) ;
GamepadReading reading = gamepad - > GetCurrentReading ( ) ;
// NOTE: Maybe it would be wiser to redefine the gamepad button mappings in "raylib.h" for the UWP platform instead of doing this
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_A ] = ( ( reading . Buttons & GamepadButtons : : A ) = = GamepadButtons : : A ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_B ] = ( ( reading . Buttons & GamepadButtons : : B ) = = GamepadButtons : : B ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_X ] = ( ( reading . Buttons & GamepadButtons : : X ) = = GamepadButtons : : X ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_Y ] = ( ( reading . Buttons & GamepadButtons : : Y ) = = GamepadButtons : : Y ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_LB ] = ( ( reading . Buttons & GamepadButtons : : LeftShoulder ) = = GamepadButtons : : LeftShoulder ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_RB ] = ( ( reading . Buttons & GamepadButtons : : RightShoulder ) = = GamepadButtons : : RightShoulder ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_SELECT ] = ( ( reading . Buttons & GamepadButtons : : View ) = = GamepadButtons : : View ) ; // Changed for XB1 Controller
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_START ] = ( ( reading . Buttons & GamepadButtons : : Menu ) = = GamepadButtons : : Menu ) ; // Changed for XB1 Controller
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_UP ] = ( ( reading . Buttons & GamepadButtons : : DPadUp ) = = GamepadButtons : : DPadUp ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_RIGHT ] = ( ( reading . Buttons & GamepadButtons : : DPadRight ) = = GamepadButtons : : DPadRight ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_DOWN ] = ( ( reading . Buttons & GamepadButtons : : DPadLeft ) = = GamepadButtons : : DPadDown ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_LEFT ] = ( ( reading . Buttons & GamepadButtons : : DPadDown ) = = GamepadButtons : : DPadLeft ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_HOME ] = false ; // Home button not supported by UWP
// Get current axis state
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LEFT_X ] = reading . LeftThumbstickX ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LEFT_Y ] = reading . LeftThumbstickY ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RIGHT_X ] = reading . RightThumbstickX ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RIGHT_Y ] = reading . RightThumbstickY ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LT ] = reading . LeftTrigger ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RT ] = reading . RightTrigger ;
}
}
}
// Stand-ins for "core.c" variables
// HACK: UWP keeps a contiguous list of gamepads. For the interest of time I'm just doing a 1:1 mapping of
// connected gamepads with their spot in the list, but this has serious robustness problems
// e.g. player 1, 2, and 3 are playing a game - if player2 disconnects, p3's controller would now be mapped to p2's character since p3 is now second in the list.
// NOTE(sam): We could also poll for all keys every frame using CoreWindow's GetKeyState https://docs.microsoft.com/en-us/uwp/api/windows.ui.core.corewindow#Windows_UI_Core_CoreWindow_GetKeyState_Windows_System_VirtualKey_
// Helper to process key events
inline void ProcessKeyEvent ( Windows : : System : : VirtualKey key , int action )
{
using Windows : : System : : VirtualKey ;
switch ( key )
{
case VirtualKey : : Space : currentKeyState [ KEY_SPACE ] = action ; break ;
case VirtualKey : : Escape : currentKeyState [ KEY_ESCAPE ] = action ; break ;
case VirtualKey : : Enter : currentKeyState [ KEY_ENTER ] = action ; break ;
case VirtualKey : : Delete : currentKeyState [ KEY_BACKSPACE ] = action ; break ;
case VirtualKey : : Right : currentKeyState [ KEY_RIGHT ] = action ; break ;
case VirtualKey : : Left : currentKeyState [ KEY_LEFT ] = action ; break ;
case VirtualKey : : Down : currentKeyState [ KEY_DOWN ] = action ; break ;
case VirtualKey : : Up : currentKeyState [ KEY_UP ] = action ; break ;
case VirtualKey : : F1 : currentKeyState [ KEY_F1 ] = action ; break ;
case VirtualKey : : F2 : currentKeyState [ KEY_F2 ] = action ; break ;
case VirtualKey : : F3 : currentKeyState [ KEY_F4 ] = action ; break ;
case VirtualKey : : F4 : currentKeyState [ KEY_F5 ] = action ; break ;
case VirtualKey : : F5 : currentKeyState [ KEY_F6 ] = action ; break ;
case VirtualKey : : F6 : currentKeyState [ KEY_F7 ] = action ; break ;
case VirtualKey : : F7 : currentKeyState [ KEY_F8 ] = action ; break ;
case VirtualKey : : F8 : currentKeyState [ KEY_F9 ] = action ; break ;
case VirtualKey : : F9 : currentKeyState [ KEY_F10 ] = action ; break ;
case VirtualKey : : F10 : currentKeyState [ KEY_F11 ] = action ; break ;
case VirtualKey : : F11 : currentKeyState [ KEY_F12 ] = action ; break ;
case VirtualKey : : LeftShift : currentKeyState [ KEY_LEFT_SHIFT ] = action ; break ;
case VirtualKey : : LeftControl : currentKeyState [ KEY_LEFT_CONTROL ] = action ; break ;
case VirtualKey : : LeftMenu : currentKeyState [ KEY_LEFT_ALT ] = action ; break ; // NOTE: Potential UWP bug with Alt key: https://social.msdn.microsoft.com/Forums/windowsapps/en-US/9bebfb0a-7637-400e-8bda-e55620091407/unexpected-behavior-in-windowscoreuicorephysicalkeystatusismenukeydown
case VirtualKey : : RightShift : currentKeyState [ KEY_RIGHT_SHIFT ] = action ; break ;
case VirtualKey : : RightControl : currentKeyState [ KEY_RIGHT_CONTROL ] = action ; break ;
case VirtualKey : : RightMenu : currentKeyState [ KEY_RIGHT_ALT ] = action ; break ;
case VirtualKey : : Number0 : currentKeyState [ KEY_ZERO ] = action ; break ;
case VirtualKey : : Number1 : currentKeyState [ KEY_ONE ] = action ; break ;
case VirtualKey : : Number2 : currentKeyState [ KEY_TWO ] = action ; break ;
case VirtualKey : : Number3 : currentKeyState [ KEY_THREE ] = action ; break ;
case VirtualKey : : Number4 : currentKeyState [ KEY_FOUR ] = action ; break ;
case VirtualKey : : Number5 : currentKeyState [ KEY_FIVE ] = action ; break ;
case VirtualKey : : Number6 : currentKeyState [ KEY_SIX ] = action ; break ;
case VirtualKey : : Number7 : currentKeyState [ KEY_SEVEN ] = action ; break ;
case VirtualKey : : Number8 : currentKeyState [ KEY_EIGHT ] = action ; break ;
case VirtualKey : : Number9 : currentKeyState [ KEY_NINE ] = action ; break ;
case VirtualKey : : A : currentKeyState [ KEY_A ] = action ; break ;
case VirtualKey : : B : currentKeyState [ KEY_B ] = action ; break ;
case VirtualKey : : C : currentKeyState [ KEY_C ] = action ; break ;
case VirtualKey : : D : currentKeyState [ KEY_D ] = action ; break ;
case VirtualKey : : E : currentKeyState [ KEY_E ] = action ; break ;
case VirtualKey : : F : currentKeyState [ KEY_F ] = action ; break ;
case VirtualKey : : G : currentKeyState [ KEY_G ] = action ; break ;
case VirtualKey : : H : currentKeyState [ KEY_H ] = action ; break ;
case VirtualKey : : I : currentKeyState [ KEY_I ] = action ; break ;
case VirtualKey : : J : currentKeyState [ KEY_J ] = action ; break ;
case VirtualKey : : K : currentKeyState [ KEY_K ] = action ; break ;
case VirtualKey : : L : currentKeyState [ KEY_L ] = action ; break ;
case VirtualKey : : M : currentKeyState [ KEY_M ] = action ; break ;
case VirtualKey : : N : currentKeyState [ KEY_N ] = action ; break ;
case VirtualKey : : O : currentKeyState [ KEY_O ] = action ; break ;
case VirtualKey : : P : currentKeyState [ KEY_P ] = action ; break ;
case VirtualKey : : Q : currentKeyState [ KEY_Q ] = action ; break ;
case VirtualKey : : R : currentKeyState [ KEY_R ] = action ; break ;
case VirtualKey : : S : currentKeyState [ KEY_S ] = action ; break ;
case VirtualKey : : T : currentKeyState [ KEY_T ] = action ; break ;
case VirtualKey : : U : currentKeyState [ KEY_U ] = action ; break ;
case VirtualKey : : V : currentKeyState [ KEY_V ] = action ; break ;
case VirtualKey : : W : currentKeyState [ KEY_W ] = action ; break ;
case VirtualKey : : X : currentKeyState [ KEY_X ] = action ; break ;
case VirtualKey : : Y : currentKeyState [ KEY_Y ] = action ; break ;
case VirtualKey : : Z : currentKeyState [ KEY_Z ] = action ; break ;
gamepadReady [ i ] = ( i < Gamepad : : Gamepads - > Size ) ;
}
// Get current gamepad state
for ( int i = 0 ; i < MAX_GAMEPADS ; i + + )
{
if ( gamepadReady [ i ] )
{
// Register previous gamepad states
for ( int k = 0 ; k < MAX_GAMEPAD_BUTTONS ; k + + ) previousGamepadState [ i ] [ k ] = currentGamepadState [ i ] [ k ] ;
// Get current gamepad state
auto gamepad = Gamepad : : Gamepads - > GetAt ( i ) ;
GamepadReading reading = gamepad - > GetCurrentReading ( ) ;
// NOTE: Maybe it would be wiser to redefine the gamepad button mappings in "raylib.h" for the UWP platform instead of remapping them manually
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_A ] = ( ( reading . Buttons & GamepadButtons : : A ) = = GamepadButtons : : A ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_B ] = ( ( reading . Buttons & GamepadButtons : : B ) = = GamepadButtons : : B ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_X ] = ( ( reading . Buttons & GamepadButtons : : X ) = = GamepadButtons : : X ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_Y ] = ( ( reading . Buttons & GamepadButtons : : Y ) = = GamepadButtons : : Y ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_LB ] = ( ( reading . Buttons & GamepadButtons : : LeftShoulder ) = = GamepadButtons : : LeftShoulder ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_RB ] = ( ( reading . Buttons & GamepadButtons : : RightShoulder ) = = GamepadButtons : : RightShoulder ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_SELECT ] = ( ( reading . Buttons & GamepadButtons : : View ) = = GamepadButtons : : View ) ; // Changed for XB1 Controller
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_START ] = ( ( reading . Buttons & GamepadButtons : : Menu ) = = GamepadButtons : : Menu ) ; // Changed for XB1 Controller
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_UP ] = ( ( reading . Buttons & GamepadButtons : : DPadUp ) = = GamepadButtons : : DPadUp ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_RIGHT ] = ( ( reading . Buttons & GamepadButtons : : DPadRight ) = = GamepadButtons : : DPadRight ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_DOWN ] = ( ( reading . Buttons & GamepadButtons : : DPadLeft ) = = GamepadButtons : : DPadDown ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_LEFT ] = ( ( reading . Buttons & GamepadButtons : : DPadDown ) = = GamepadButtons : : DPadLeft ) ;
currentGamepadState [ i ] [ GAMEPAD_XBOX_BUTTON_HOME ] = false ; // Home button not supported by UWP
// Get current axis state
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LEFT_X ] = reading . LeftThumbstickX ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LEFT_Y ] = reading . LeftThumbstickY ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RIGHT_X ] = reading . RightThumbstickX ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RIGHT_Y ] = reading . RightThumbstickY ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_LT ] = reading . LeftTrigger ;
gamepadAxisState [ i ] [ GAMEPAD_XBOX_AXIS_RT ] = reading . RightTrigger ;
}
}
}
}
void App : : OnKeyDown ( CoreWindow ^ sender , KeyEventArgs ^ args )
{
ProcessKeyEvent ( args - > VirtualKey , 1 ) ;
}
void App : : OnKeyUp ( CoreWindow ^ sender , KeyEventArgs ^ args )
{
ProcessKeyEvent ( args - > VirtualKey , 0 ) ;
}
// The following functions were reimplemented for UWP from core.c
@ -277,9 +264,6 @@ void App::SetWindow(CoreWindow^ window)
currentDisplayInformation - > DpiChanged + = ref new TypedEventHandler < DisplayInformation ^ , Object ^ > ( this , & App : : OnDpiChanged ) ;
currentDisplayInformation - > OrientationChanged + = ref new TypedEventHandler < DisplayInformation ^ , Object ^ > ( this , & App : : OnOrientationChanged ) ;
window - > KeyDown + = ref new TypedEventHandler < CoreWindow ^ , KeyEventArgs ^ > ( this , & App : : OnKeyDown ) ;
window - > KeyUp + = ref new TypedEventHandler < CoreWindow ^ , KeyEventArgs ^ > ( this , & App : : OnKeyUp ) ;
// The CoreWindow has been created, so EGL can be initialized.
InitWindow ( 800 , 450 , ( EGLNativeWindowType ) window ) ;
}
@ -292,6 +276,7 @@ void App::Load(Platform::String^ entryPoint)
static int posX = 100 ;
static int posY = 100 ;
static int time = 0 ;
// This method is called after the window becomes active.
void App : : Run ( )
{
@ -299,7 +284,9 @@ void App::Run()
{
if ( mWindowVisible )
{
// Update
UWP_PollInput ( ) ;
// Draw
BeginDrawing ( ) ;
@ -322,11 +309,20 @@ void App::Run()
{
posX - = 50 ;
}
if ( UWPIsKeyPressed ( KEY_D ) )
{
posX + = 50 ;
}
EndDrawing ( ) ;
// Update
UWP_PollInput ( ) ; // TODO: Move to beginning of frame - currently at end of frame to accomodate keyboard callback
if ( currentKeyState [ KEY_LEFT_ALT ] )
DrawRectangle ( 250 , 250 , 20 , 20 , BLACK ) ;
if ( currentKeyState [ KEY_BACKSPACE ] )
DrawRectangle ( 280 , 250 , 20 , 20 , BLACK ) ;
DrawRectangle ( 250 , 280 + ( time + + % 60 ) , 10 , 10 , PURPLE ) ;
EndDrawing ( ) ;
CoreWindow : : GetForCurrentThread ( ) - > Dispatcher - > ProcessEvents ( CoreProcessEventsOption : : ProcessAllIfPresent ) ;
}
else