From 0b94717fb9edfe455cdbef2131abf664c151bf04 Mon Sep 17 00:00:00 2001 From: themixray <35273590+themixray@users.noreply.github.com> Date: Tue, 2 Nov 2021 19:52:29 +0300 Subject: [PATCH] Add files via upload --- pygwin/__init__.py | 1 - pygwin/_win.py | 33 +++++-- pygwin/gamepad.py | 236 +++++++++------------------------------------ pygwin/image.py | 10 +- pygwin/mouse.py | 7 +- pygwin/surface.py | 29 ++---- 6 files changed, 88 insertions(+), 228 deletions(-) diff --git a/pygwin/__init__.py b/pygwin/__init__.py index 3155edf..2d12791 100644 --- a/pygwin/__init__.py +++ b/pygwin/__init__.py @@ -5,7 +5,6 @@ import pygwin.mouse as mouse from pygwin.rect import rect import pygwin.image as image import pygwin.mixer as mixer -from pygwin.events import * from pygame.locals import * from pygwin.font import * from pygwin._win import * diff --git a/pygwin/_win.py b/pygwin/_win.py index 45dc584..2088077 100644 --- a/pygwin/_win.py +++ b/pygwin/_win.py @@ -16,12 +16,30 @@ class win(_surface): self._clock.tick(fps) self._withfps = True _pg.display.update() - def title(self, title): - _pg.display.set_caption(title) - def icon(self, path): - _pg.display.set_icon(_pg.image.load(path)) - def resize(self, size): - _pg.display.set_mode(size) + def title(): + def fget(self): + return _pg.display.get_caption() + def fset(self, value): + if type(value) != str: + return + _pg.display.set_caption(value) + def fdel(self): + pass + return locals() + title = property(**title()) + def icon(value): + _pg.display.set_icon(_pg.image.load(value)) + def size(): + def fget(self): + return _pg.display.get_window_size() + def fset(self, value): + if type(value) != tuple or type(value) != list: + return + _pg.display.set_mode(value) + def fdel(self): + pass + return locals() + size = property(**size()) def fullscreen(self): _pg.display.toogle_fullscreen() def close(self): @@ -89,3 +107,6 @@ def ramLimit(bytes): def close(): _pg.quit() quit() + +def getEvents(): + return _pg.event.get() diff --git a/pygwin/gamepad.py b/pygwin/gamepad.py index c023573..597c065 100644 --- a/pygwin/gamepad.py +++ b/pygwin/gamepad.py @@ -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 diff --git a/pygwin/image.py b/pygwin/image.py index 3691621..77a0937 100644 --- a/pygwin/image.py +++ b/pygwin/image.py @@ -20,23 +20,23 @@ def load(path): surf._surface_orig = image return surf -def save(surface, path): +def save(surface, dest): if type(surface) == _surface: orig = surface._surface_orig else: orig = surface._orig - _pg.image.save_extended(orig, path) + _pg.image.save_extended(orig, dest) def toString(surface): if type(surface) == _surface: orig = surface._surface_orig else: orig = surface._orig - return _p.dumps([_pg.image.tostring(orig, "RGBA"), list(surface.size)]) + return _p.dumps([_pg.image.tostring(orig,"RGBA"),list(surface.size)],0) def fromString(string): - string = _p.loads(string) - surf = _pg.image.fromstring(string[0], tuple(string[1]), "RGBA") + string = _p.loads(string, encoding='latin1') + surf = _pg.image.fromstring(string[0],tuple(string[1]),"RGBA") surface = _surface(tuple(string[1])) surface._surface_orig = surf return surface diff --git a/pygwin/mouse.py b/pygwin/mouse.py index f956532..48da5fd 100644 --- a/pygwin/mouse.py +++ b/pygwin/mouse.py @@ -1,9 +1,10 @@ from pygwin._pg import pg as _pg -def isPressed(x): - return _pg.mouse.get_pressed()[x] def getPressed(): - return _pg.mouse.get_pressed() + orig = _pg.mouse.get_pressed(3) + return {'left':orig[0],'middle':orig[1],'right':orig[2]} +def isPressed(x): + return getPressed()[x] def setPosition(x): _pg.mouse.set_pos(x) def getPosition(): diff --git a/pygwin/surface.py b/pygwin/surface.py index 8605ab3..6d55228 100644 --- a/pygwin/surface.py +++ b/pygwin/surface.py @@ -6,12 +6,6 @@ class surface: self._size = size self._orig = _pg.Surface(size, _pg.SRCALPHA) self._pixels = [] - # self._pixels = [] - # pxls = _pg.PixelArray(self._orig) - # for x in range(self.size[0]): - # self._pixels.append([]) - # for y in range(self.size[1]): - # self._pixels[x].append(pxls[x, y]) @property def pixels(self): pixels = [] @@ -24,12 +18,18 @@ class surface: @property def size(self): return self._size + def rect(self, x=0, y=0, center=[]): + if center == []: + return _r(x, y, self.size[0], self.size[1]) + else: + return _r(center[0]-(self.size[0]/2), + center[1]-(self.size[1]/2), + self.size[0], self.size[1]) def copy(self): surf = surface(self.size) surf._surface_orig = self._orig return surf def getPixel(self, x, y): - # return self._pixels[x][y] return self._orig.get_at((x,y)) def setPixel(self, x, y, color): self._orig.set_at((x,y),color) @@ -42,11 +42,6 @@ class surface: return self.copy() def fill(self, color): self._orig.fill(color) - # self._pixels = [] - # for x in range(self.size[0]): - # self._pixels.append([]) - # for y in range(self.size[1]): - # self._pixels[x].append(color) return self.copy() def crop(self, rect): self._orig = self._orig.subsurface((rect.x,rect.y,rect.w,rect.h)) @@ -67,16 +62,10 @@ class surface: if amt < 0: return self.copy() scale = (int(self._orig.get_width()*(amt+1)),int(self._orig.get_height()[1]*(amt+1))) + size = self._orig.get_size() self._orig = _pg.transform.smoothscale(self._orig,scale) - self._orig = _pg.transform.smoothscale(self._orig,self._orig.get_size()) + self._orig = _pg.transform.smoothscale(self._orig,size) return self.copy() - def rect(self, x=0, y=0, center=None): - if center == None: - return _r(x, y, self.size[0], self.size[1]) - else: - return _r(center[0]-(self.size[0]/2), - center[1]-(self.size[1]/2), - self.size[0], self.size[1]) class _draw: def __init__(self,surface): self._surf = surface