Add files via upload

This commit is contained in:
themixray 2021-11-02 19:52:29 +03:00 committed by GitHub
parent cdadd9af36
commit 0b94717fb9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 88 additions and 228 deletions

View file

@ -7,254 +7,104 @@ class gamepad:
self._lasty = ''
self._lastx = ''
self.founded = False
self.buttons = []
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()
self._start()
def _tick(self):
events = _inputs.get_gamepad()
if not self._pygame.display.get_active():return
self.founded = True
temp = []
for x in self.buttons:
if x not in temp:
temp.append(x)
self.buttons = temp
if events:
for event in events:
if event.code == 'ABS_X':
self.leftJoystickCallback(x=event.state)
self.leftJoystick[0] = event.state
elif event.code == 'ABS_Y':
self.leftJoystickCallback(y=event.state)
self.leftJoystick[1] = event.state
elif event.code == 'ABS_RY':
self.rightJoystickCallback(y=event.state)
self.rightJoystick[1] = event.state
elif event.code == 'ABS_RX':
self.rightJoystickCallback(x=event.state)
self.rightJoystick[0] = event.state
elif event.code == 'BTN_THUMBL':
if event.state:
self.leftJoystickPressCallback()
self.buttons.append('left-joystick')
else:
self.leftJoystickReleaseCallback()
try:
self.buttons.remove('left-joystick')
except:
pass
self._buttons['left-joystick'] = event.state
elif event.code == 'BTN_THUMBR':
if event.state:
self.rightJoystickPressCallback()
self.buttons.append('right-joystick')
else:
self.rightJoystickReleaseCallback()
try:
self.buttons.remove('right-joystick')
except:
pass
self._buttons['right-joystick'] = event.state
elif event.code == 'BTN_TL':
if event.state:
self.L1PressCallback()
self.buttons.append('l1')
else:
self.L1ReleaseCallback()
try:
self.buttons.remove('l1')
except:
pass
self._buttons['l1'] = event.state
elif event.code == 'BTN_TR':
if event.state:
self.R1PressCallback()
self.buttons.append('r1')
else:
self.R1ReleaseCallback()
try:
self.buttons.remove('r1')
except:
pass
self._buttons['r1'] = event.state
elif event.code == 'ABS_Z':
if event.state == 255:
self.L2PressCallback()
self.buttons.append('l2')
self._buttons['l2'] = 1
elif event.state == 0:
self.L2ReleaseCallback()
try:
self.buttons.remove('l2')
except:
pass
self._buttons['l2'] = 0
elif event.code == 'ABS_RZ':
if event.state == 255:
self.R2PressCallback()
self.buttons.append('r2')
self._buttons['r2'] = 1
elif event.state == 0:
self.R2ReleaseCallback()
try:
self.buttons.remove('r2')
except:
pass
self._buttons['r2'] = 0
elif event.code == 'BTN_WEST':
if event.state:
self.westPressCallback()
self.buttons.append('west')
else:
self.westReleaseCallback()
try:
self.buttons.remove('west')
except:
pass
self._buttons['west'] = event.state
elif event.code == 'BTN_NORTH':
if event.state:
self.northPressCallback()
self.buttons.append('north')
else:
self.northReleaseCallback()
try:
self.buttons.remove('north')
except:
pass
self._buttons['north'] = event.state
elif event.code == 'BTN_EAST':
if event.state:
self.eastPressCallback()
self.buttons.append('east')
else:
self.eastReleaseCallback()
try:
self.buttons.remove('east')
except:
pass
self._buttons['east'] = event.state
elif event.code == 'BTN_SOUTH':
if event.state:
self.southPressCallback()
self.buttons.append('south')
else:
self.southReleaseCallback()
try:
self.buttons.remove('south')
except:
pass
self._buttons['south'] = event.state
elif event.code == 'ABS_HAT0Y':
if event.state == 1:
self.downPressCallback()
self.buttons.append('down')
self._buttons['down'] = True
self._lasty = 'down'
elif event.state == -1:
self.upPressCallback()
self.buttons.append('up')
self._buttons['up'] = True
self._lasty = 'up'
else:
if self._lasty == 'up':
self.upReleaseCallback()
try:
self.buttons.remove('up')
except:
pass
elif self._lasty == 'down':
self.downReleaseCallback()
try:
self.buttons.remove('down')
except:
pass
self._buttons[self._lasty] = False
elif event.code == 'ABS_HAT0X':
if event.state == 1:
self.rightPressCallback()
self.buttons.append('right')
self._buttons['right'] = True
self._lastx = 'right'
elif event.state == -1:
self.leftPressCallback()
self.buttons.append('left')
self._buttons['left'] = True
self._lastx = 'left'
else:
if self._lastx == 'right':
self.rightReleaseCallback()
try:
self.buttons.remove('right')
except:
pass
elif self._lastx == 'left':
self.leftReleaseCallback()
try:
self.buttons.remove('left')
except:
pass
self._buttons[self._lastx] = False
elif event.code == 'BTN_START':
if event.state:
self.selectPressCallback()
self.buttons.append('select')
else:
self.selectReleaseCallback()
try:
self.buttons.remove('select')
except:
pass
self._buttons['select'] = event.state
elif event.code == 'BTN_SELECT':
if event.state:
self.startPressCallback()
self.buttons.append('start')
else:
self.startReleaseCallback()
try:
self.buttons.remove('start')
except:
pass
def start(self):
# def exc(self):
# if self.founded == False:
# raise Exception('Gamepad not found!')
# _threading._timer(10, lambda: exc(self)).start()
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 _stop(self):
_threading.Thread(target=lambda:ttcb(self),daemon=True).start()
def close(self):
self._started = False
def isPressed(self, btn):
return btn in self.buttons
return btn in self._buttons
def reset(self):
self._lasty = ''
self._lastx = ''
self.buttons = []
self._buttons = []
self.leftJoystick = [0, 0]
self.rightJoystick = [0, 0]
def getPressed(self):
return self.buttons
# def leftJoystickCallback(self, x=None, y=None): pass
# def rightJoystickCallback(self, x=None, y=None): pass
# def leftJoystickPressCallback(self): pass
# def leftJoystickReleaseCallback(self): pass
# def rightJoystickPressCallback(self): pass
# def rightJoystickReleaseCallback(self): pass
# def L1PressCallback(self): pass
# def L1ReleaseCallback(self): pass
# def R1PressCallback(self): pass
# def R1ReleaseCallback(self): pass
# def R2PressCallback(self): pass
# def R2ReleaseCallback(self): pass
# def L2PressCallback(self): pass
# def L2ReleaseCallback(self): pass
# def westPressCallback(self): pass
# def westReleaseCallback(self): pass
# def northPressCallback(self): pass
# def northReleaseCallback(self): pass
# def eastPressCallback(self): pass
# def eastReleaseCallback(self): pass
# def southPressCallback(self): pass
# def southReleaseCallback(self): pass
# def southReleaseCallback(self): pass
# def selectPressCallback(self): pass
# def selectReleaseCallback(self): pass
# def startPressCallback(self): pass
# def startReleaseCallback(self): pass
# def upPressCallback(self): pass
# def upReleaseCallback(self): pass
# def downPressCallback(self): pass
# def downReleaseCallback(self): pass
# def leftPressCallback(self): pass
# def leftReleaseCallback(self): pass
# def rightPressCallback(self): pass
# def rightReleaseCallback(self): pass
return self._buttons