diff options
author | Alan Aguiar <alanjas@hotmail.com> | 2014-01-11 23:29:30 (GMT) |
---|---|---|
committer | Alan Aguiar <alanjas@hotmail.com> | 2014-01-11 23:29:30 (GMT) |
commit | 352d8f57e63e628d3c3082de03ddbad7d8e5a4f8 (patch) | |
tree | f6fbac962f47051a56cab3673b44966061ba0e7a /src | |
parent | bbc13785debddec4da6b992ce025596a5847a98b (diff) |
fix aspect ratio - mouse scaled
Diffstat (limited to 'src')
-rw-r--r-- | src/api/Game.py | 8 | ||||
-rw-r--r-- | src/api/Mouse.py | 47 | ||||
-rw-r--r-- | src/api/Sprite2.py | 11 |
3 files changed, 45 insertions, 21 deletions
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
|