From 352d8f57e63e628d3c3082de03ddbad7d8e5a4f8 Mon Sep 17 00:00:00 2001 From: Alan Aguiar Date: Sat, 11 Jan 2014 23:29:30 +0000 Subject: fix aspect ratio - mouse scaled --- (limited to 'src/api') diff --git a/src/api/Game.py b/src/api/Game.py index 6c2cc02..30b1daa 100644 --- a/src/api/Game.py +++ b/src/api/Game.py @@ -74,14 +74,15 @@ class CGame(object): info = pygame.display.Info() width = info.current_w height = info.current_h + if width/1200.0 < height/900.0: self.mScale = width/1200.0 self.mWidth = width - self.mHeight = int(height * self.mScale) + self.mHeight = int(900 * self.mScale) else: self.mScale = height/900.0 self.mHeight = height - self.mWidth = int(width * self.mScale) + self.mWidth = int(1200 * self.mScale) self.mScreen = pygame.display.set_mode((self.mWidth, self.mHeight), pygame.FULLSCREEN) pygame.display.set_caption(_('JES')) self.window = pygame.Surface((1200, 900), 0, self.mScreen) @@ -99,6 +100,7 @@ class CGame(object): pygame.mouse.set_visible(False) self.mMouse = CMouse() + self.mMouse.set_scale(self.mScale) self.mMousePointerSprite = CSprite() self.mMousePointerSprite.setImage(Image.loadImage('assets/images/cursor.png', True)) #insert mouse pointer at layer 5 @@ -127,7 +129,7 @@ class CGame(object): self.mQuit = True self.mMouse.update() - self.mMousePointerSprite.setXY(self.mMouse.getX(), self.mMouse.getY()) + self.mMousePointerSprite.setPosTuple(self.mMouse.getPos()) self.mState.update() diff --git a/src/api/Mouse.py b/src/api/Mouse.py index 0db50d4..da27c30 100644 --- a/src/api/Mouse.py +++ b/src/api/Mouse.py @@ -7,7 +7,6 @@ class CMouse(object): mInstance = None mInitialized = False mPressed = False - #mPressedLeastThanOneFrame = False mPrevPressed = False def __new__(self, *args, **kargs): @@ -25,23 +24,43 @@ class CMouse(object): if (self.mInitialized): return self.mInitialized = True - + self.mScale = 1 self.mPressed = False - #self.mPressedLeastThanOneFrame = False self.mPrevPressed = False + + def set_scale(self, aScale): + self.mScale = aScale + if self.mScale == 1: + self.getPos = self._getPosN + self.getX = self._getXN + self.getY = self._getYN + else: + self.getPos = self._getPosS + self.getX = self._getXS + self.getY = self._getYS - def getPos(self): + def _getPosN(self): return pygame.mouse.get_pos() - - def getX(self): + + def _getXN(self): return pygame.mouse.get_pos()[0] - - def getY(self): + + def _getYN(self): return pygame.mouse.get_pos()[1] + def _getPosS(self): + x, y = pygame.mouse.get_pos() + return ( int(x / self.mScale) , int(y / self.mScale) ) + + def _getXS(self): + return int(pygame.mouse.get_pos()[0] / self.mScale) + + def _getYS(self): + return int(pygame.mouse.get_pos()[1] / self.mScale) + def pressed(self): return self.mPressed - + def firstPress(self): return (self.mPressed and not self.mPrevPressed) @@ -49,14 +68,10 @@ class CMouse(object): return (not(self.mPressed) and self.mPrevPressed) def update(self): - #print("mouse update") - #print("x=" + str(self.getX())) - #print("y=" + str(self.getY())) - - self.mPrevPressed = self.mPressed; + self.mPrevPressed = self.mPressed pp = pygame.mouse.get_pressed() self.mPressed = (pp[0] == 1 and pp[1] == 0 and pp[2] == 0) - + def destroy(self): self.mInstance = None - #print "destroy" + diff --git a/src/api/Sprite2.py b/src/api/Sprite2.py index 5e9e1c6..57f0ed6 100644 --- a/src/api/Sprite2.py +++ b/src/api/Sprite2.py @@ -108,13 +108,20 @@ class CSprite(pygame.sprite.Sprite): self.rect = self.image.get_rect() self.calculatePositionWithOffset() - def setPosition (self, position): + def setPosition(self, position): """ place the sprite directly at the given position - expects an (x, y) tuple + expects an vector """ self.mPos.setX(position.getX()) self.mPos.setY(position.getY()) + def setPosTuple(self, position): + """ place the sprite directly at the given position + + expects an (x, y) tuple + """ + self.mPos.setXY(position[0], position[1]) + def setSpeedLimits(self, amax, amin): """ determines maximum and minimum speeds you will allow through -- cgit v0.9.1