package Ġuk . co . electron studio . ret row ar Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . controllers . Controller Ċ import Ġcom . badlogic . gdx . controllers . Controllers Ċ Ċ import Ġcom . badlogic . gdx . controllers . P ov Direction Ċ import Ġcom . badlogic . gdx . graphics . GL 2 0 Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Batch Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġcom . badlogic . gdx . utils . Align Ċ Ċ import Ġuk . co . electron studio . ret row ar . screens . Game Session Ċ import Ġuk . co . electron studio . sdl 2 gdx . R umble Controller ĊĊ Ċ /** Ċ Ġ* ĠDisplays Ġall Ġconnected Ġcontrollers Ġso Ġwe Ġcan Ġtest Ġif Ġthe Ġmappings Ġare Ġcorrect . Ċ Ġ*/ Ċ class ĠController Tester ( session : ĠGame Session ) Ġ: ĠSimple Game ( session , Ġ 6 4 0 f , Ġ 3 6 0 f , ĠfadeIn Effect Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ INVALID Ġ= Ġ- 1 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ LEFT X Ġ= Ġ 0 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ LE F TY Ġ= Ġ 1 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ RIGHT X Ġ= Ġ 2 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ R IGH TY Ġ= Ġ 3 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ TRIGGER LEFT Ġ= Ġ 4 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ TRIG G ERR IGHT Ġ= Ġ 5 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ AXIS _ MAX Ġ= Ġ 6 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlist Ġof Ġbuttons Ġavailable Ġfrom Ġa Ġcontroller ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ INVALID Ġ= Ġ- 1 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ A Ġ= Ġ 0 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ B Ġ= Ġ 1 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ X Ġ= Ġ 2 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ Y Ġ= Ġ 3 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ BACK Ġ= Ġ 4 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ GUID E Ġ= Ġ 5 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ START Ġ= Ġ 6 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ LEFT STICK Ġ= Ġ 7 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ RIGHT STICK Ġ= Ġ 8 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ LEFT SHO UL DER Ġ= Ġ 9 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ RIGHT SHO UL DER Ġ= Ġ 1 0 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ UP Ġ= Ġ 1 1 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ DOWN Ġ= Ġ 1 2 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ LEFT Ġ= Ġ 1 3 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ RIGHT Ġ= Ġ 1 4 ĊĠĠĠ Ġval ĠSDL _ CONTROLLER _ BUTTON _ MAX Ġ= Ġ 1 5 ĊĊĠĠĠ Ġoverride Ġfun Ġdo Logic ( deltaTime : ĠFloat ) Ġ{ Ġ// ĠCalled Ġautomatically Ġevery Ġframe ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Drawing ( batch : ĠBatch ) Ġ{ Ġ// Ġcalled Ġautomatically Ġevery Ġframe ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Clear Color ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f ) Ġ// Ġclear Ġthe Ġscreen ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Clear ( GL 2 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĊĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ" Local Ġcontrollers Ġ: Ġ${ Controllers . get Controllers (). size } ĠĠĠ ĠNetwork Ġcontrollers : Ġ${ App . app . network Controllers . size } ĠĠĠĠ ĠMobile Ġcontrollers : Ġ${ App . app . mob Controller Manager . controllers . size }", Ġ 0 f , Ġ 2 0 f ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġheight ĊĊĠĠĠĠĠĠĠ Ġval Ġcontrollers Ġ= ĠCont rollers . get Controllers () Ġ+ ĠApp . app . network Controllers . values Ġ+ ĠApp . app . mob Controller Manager . controllers ĊĊĠĠĠĠĠĠĠ Ġcontrollers . forEach Indexed Ġ{ Ġindex , Ġcontroller Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ 0 f Ġelse Ġwidth Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont . color Ġ= Ġcom . badlogic . gdx . graphics . Color . LI ME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġcontroller . name . remove Prefix (" SDL ĠGame Controller Ġ"), Ġx , Ġy , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Controller ( controller , Ġy , Ġbatch , Ġx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( controller Ġas ĠR umble Controller ). r umble ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Utils . clamp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . get Axis ( SDL _ CONTROLLER _ AXIS _ LE F TY ) Ġ/ Ġ- 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath Utils . clamp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . get Axis ( SDL _ CONTROLLER _ AXIS _ R IGH TY ) Ġ/ Ġ- 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ 0 f Ġelse Ġ 5 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Controller ( m : ĠController , Ġy : ĠFloat , Ġbatch : ĠBatch , Ġx : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġfont . color Ġ= Ġcom . badlogic . gdx . graphics . Color . WHITE ĊĠĠĠĠĠĠĠ Ġvar Ġy 1 Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 1 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . get Button ( j )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ-= Ġ 8 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmapping : ĠString Ġ= Ġwhen Ġ( j ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ A Ġ-> Ġ" A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ B Ġ-> Ġ" B " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ X Ġ-> Ġ" X " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ Y Ġ-> Ġ" Y " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ LEFT SHO UL DER Ġ-> Ġ" L _ BU MP ER " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ RIGHT SHO UL DER Ġ-> Ġ" R _ BU MP ER " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ GUID E Ġ-> Ġ" GUID E " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ BACK Ġ-> Ġ" BACK " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ START Ġ-> Ġ" START " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ DOWN Ġ-> Ġ" DP AD _ DOWN " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ UP Ġ-> Ġ" DP AD _ UP " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ LEFT Ġ-> Ġ" DP AD _ LEFT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ DP AD _ RIGHT Ġ-> Ġ" DP AD _ RIGHT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠ ĠSDL . SDL _ CONTROLLER _ BUTTON _ Ġ Ġ-> Ġ" L _ TRIGGER " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠSDL . SDL _ CONTROLLER _ BUTTON _ A Ġ Ġ-> Ġ" R _ TRIGGER " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ RIGHT STICK Ġ-> Ġ" R _ STICK _ PUSH " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ BUTTON _ LEFT STICK Ġ-> Ġ" L _ STICK _ PUSH " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" UN MAP PED ĠBUTTON Ġ$ j " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġmapping , Ġx , Ġy 1 , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . get Axis ( j ) Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ-= Ġ 8 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmapping : ĠString Ġ= Ġwhen Ġ( j ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ LEFT X Ġ-> Ġ" L _ STICK _ HORIZONTAL _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ RIGHT X Ġ-> Ġ" R _ STICK _ HORIZONTAL _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ LE F TY Ġ-> Ġ" L _ STICK _ VERTICAL _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ R IGH TY Ġ-> Ġ" R _ STICK _ VERTICAL _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ TRIGGER LEFT Ġ-> Ġ" L _ TRIGGER _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSDL _ CONTROLLER _ AXIS _ TRIG G ERR IGHT Ġ-> Ġ" R _ TRIGGER _ AXIS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" UN MAP PED ĠAX IS Ġ$ j " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ"$ mapping : Ġ${ m . get Axis ( j )} Ġ", Ġx , Ġy 1 , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . getP ov ( 0 ) Ġ!= ĠP ov Direction . center ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ-= Ġ 8 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmapping : ĠString Ġ= Ġwhen Ġ( 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġm . DP AD Ġ-> Ġ" DP AD " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" UNKNOWN ĠD PAD Ġ$ j " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ" PO V Ġ${ m . getP ov ( 0 )} ", Ġx , Ġy 1 , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 8 f ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ" Accel $ j : Ġ${ c . get Accel erometer ( j )} ", Ġx , Ġy , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠG dx RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . get Slider X ( j )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 8 f ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ" X Slider $ j : Ġ${ c . get Slider X ( j )} ", Ġx , Ġy , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . get Slider Y ( j )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 8 f ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( batch , Ġ" Y Slider $ j : Ġ${ c . get Slider Y ( j )} ", Ġx , Ġy , Ġ 2 5 6 f , ĠAlign . left , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġy 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThese Ġmethods Ġmust Ġbe Ġimplemented Ġbut Ġdon 't Ġhave Ġto Ġdo Ġanything ĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{} Ċ } Ċ