14
14
from typing import Iterable , Optional , TypeVar , Union
15
15
16
16
from pyglet .event import EVENT_HANDLED , EVENT_UNHANDLED , EventDispatcher
17
+ from pyglet .input import Controller
17
18
from typing_extensions import TypeGuard
18
19
19
20
import arcade
31
32
UITextMotionEvent ,
32
33
UITextMotionSelectEvent ,
33
34
)
35
+ from arcade .gui .experimental .controller import (
36
+ UIControllerButtonPressEvent ,
37
+ UIControllerButtonReleaseEvent ,
38
+ UIControllerDpadEvent ,
39
+ UIControllerStickEvent ,
40
+ UIControllerTriggerEvent ,
41
+ )
34
42
from arcade .gui .surface import Surface
35
43
from arcade .gui .widgets import UIWidget
36
44
from arcade .types import LBWH , AnchorPoint , Point2 , Rect
@@ -293,6 +301,11 @@ def enable(self) -> None:
293
301
self .on_text ,
294
302
self .on_text_motion ,
295
303
self .on_text_motion_select ,
304
+ self .on_stick_motion ,
305
+ self .on_trigger_motion ,
306
+ self .on_button_press ,
307
+ self .on_button_release ,
308
+ self .on_dpad_motion ,
296
309
)
297
310
298
311
def disable (self ) -> None :
@@ -316,6 +329,11 @@ def disable(self) -> None:
316
329
self .on_text ,
317
330
self .on_text_motion ,
318
331
self .on_text_motion_select ,
332
+ self .on_stick_motion ,
333
+ self .on_trigger_motion ,
334
+ self .on_button_press ,
335
+ self .on_button_release ,
336
+ self .on_dpad_motion ,
319
337
)
320
338
321
339
def on_update (self , time_delta ):
@@ -452,6 +470,21 @@ def on_resize(self, width, height):
452
470
453
471
self .trigger_render ()
454
472
473
+ def on_stick_motion (self , controller : Controller , name , value ):
474
+ return self .dispatch_ui_event (UIControllerStickEvent (controller , name , value ))
475
+
476
+ def on_trigger_motion (self , controller : Controller , name , value ):
477
+ return self .dispatch_ui_event (UIControllerTriggerEvent (controller , name , value ))
478
+
479
+ def on_button_press (self , controller : Controller , button ):
480
+ return self .dispatch_ui_event (UIControllerButtonPressEvent (controller , button ))
481
+
482
+ def on_button_release (self , controller : Controller , button ):
483
+ return self .dispatch_ui_event (UIControllerButtonReleaseEvent (controller , button ))
484
+
485
+ def on_dpad_motion (self , controller : Controller , value ):
486
+ return self .dispatch_ui_event (UIControllerDpadEvent (controller , value ))
487
+
455
488
@property
456
489
def rect (self ) -> Rect :
457
490
"""The rect of the UIManager, which is the window size."""
0 commit comments