Add files via upload
This commit is contained in:
parent
deb4fcc069
commit
a7808f6aac
28 changed files with 1571 additions and 3 deletions
111
build/lib/pygwin/gamepad.py
Normal file
111
build/lib/pygwin/gamepad.py
Normal file
|
@ -0,0 +1,111 @@
|
|||
import inputs as _inputs
|
||||
import threading as _threading
|
||||
import time as _time
|
||||
|
||||
class gamepad:
|
||||
def __init__(self, pygame):
|
||||
self._lasty = ''
|
||||
self._lastx = ''
|
||||
self.founded = False
|
||||
self._buttons = {'left-joystick': False,
|
||||
'right-joystick': False,
|
||||
'north': False,
|
||||
'south': False,
|
||||
'west': False,
|
||||
'east': False,
|
||||
'l1': False,
|
||||
'l2': False,
|
||||
'r1': False,
|
||||
'r2': False,
|
||||
'up': False,
|
||||
'down': False,
|
||||
'left': False,
|
||||
'right': False,
|
||||
'start': False,
|
||||
'select': False}
|
||||
self.leftJoystick = [0, 0]
|
||||
self.rightJoystick = [0, 0]
|
||||
self._pygame = pygame
|
||||
self._start()
|
||||
def _tick(self):
|
||||
events = _inputs.get_gamepad()
|
||||
if not self._pygame.display.get_active():
|
||||
return
|
||||
self.founded = True
|
||||
if events:
|
||||
for event in events:
|
||||
if event.code == 'ABS_X':
|
||||
self.leftJoystick[0] = event.state
|
||||
elif event.code == 'ABS_Y':
|
||||
self.leftJoystick[1] = event.state
|
||||
elif event.code == 'ABS_RY':
|
||||
self.rightJoystick[1] = event.state
|
||||
elif event.code == 'ABS_RX':
|
||||
self.rightJoystick[0] = event.state
|
||||
elif event.code == 'BTN_THUMBL':
|
||||
self._buttons['left-joystick'] = event.state
|
||||
elif event.code == 'BTN_THUMBR':
|
||||
self._buttons['right-joystick'] = event.state
|
||||
elif event.code == 'BTN_TL':
|
||||
self._buttons['l1'] = event.state
|
||||
elif event.code == 'BTN_TR':
|
||||
self._buttons['r1'] = event.state
|
||||
elif event.code == 'ABS_Z':
|
||||
if event.state == 255:
|
||||
self._buttons['l2'] = 1
|
||||
elif event.state == 0:
|
||||
self._buttons['l2'] = 0
|
||||
elif event.code == 'ABS_RZ':
|
||||
if event.state == 255:
|
||||
self._buttons['r2'] = 1
|
||||
elif event.state == 0:
|
||||
self._buttons['r2'] = 0
|
||||
elif event.code == 'BTN_WEST':
|
||||
self._buttons['west'] = event.state
|
||||
elif event.code == 'BTN_NORTH':
|
||||
self._buttons['north'] = event.state
|
||||
elif event.code == 'BTN_EAST':
|
||||
self._buttons['east'] = event.state
|
||||
elif event.code == 'BTN_SOUTH':
|
||||
self._buttons['south'] = event.state
|
||||
elif event.code == 'ABS_HAT0Y':
|
||||
if event.state == 1:
|
||||
self._buttons['down'] = True
|
||||
self._lasty = 'down'
|
||||
elif event.state == -1:
|
||||
self._buttons['up'] = True
|
||||
self._lasty = 'up'
|
||||
else:
|
||||
self._buttons[self._lasty] = False
|
||||
elif event.code == 'ABS_HAT0X':
|
||||
if event.state == 1:
|
||||
self._buttons['right'] = True
|
||||
self._lastx = 'right'
|
||||
elif event.state == -1:
|
||||
self._buttons['left'] = True
|
||||
self._lastx = 'left'
|
||||
else:
|
||||
self._buttons[self._lastx] = False
|
||||
elif event.code == 'BTN_START':
|
||||
self._buttons['select'] = event.state
|
||||
elif event.code == 'BTN_SELECT':
|
||||
self._buttons['start'] = event.state
|
||||
def _start(self):
|
||||
self.founded = False
|
||||
self._started = True
|
||||
def ttcb(self):
|
||||
while self._started:
|
||||
self._tick()
|
||||
_threading.Thread(target=lambda:ttcb(self),daemon=True).start()
|
||||
def close(self):
|
||||
self._started = False
|
||||
def isPressed(self, btn):
|
||||
return btn in self._buttons
|
||||
def reset(self):
|
||||
self._lasty = ''
|
||||
self._lastx = ''
|
||||
self._buttons = []
|
||||
self.leftJoystick = [0, 0]
|
||||
self.rightJoystick = [0, 0]
|
||||
def getPressed(self):
|
||||
return self._buttons
|
Loading…
Add table
Add a link
Reference in a new issue