Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Aguiar <alanjas@hotmail.com>2013-08-22 03:50:45 (GMT)
committer Alan Aguiar <alanjas@hotmail.com>2013-08-22 03:50:45 (GMT)
commit0c2096a9339a7c35ccea2aec3ce4f1876240b6b8 (patch)
treed57d86a5535a1c73a7c64fc2a050669d7ceb985b
parentcd58e868d23203bea1562813a3ec208982100eaa (diff)
simplify CSprite in new CSPrite2
-rw-r--r--.settings/org.eclipse.core.resources.prefs2
-rwxr-xr-xsrc/api/Game.py6
-rw-r--r--src/api/Globe.py2
-rwxr-xr-xsrc/api/Points.py2
-rwxr-xr-xsrc/api/Sprite.py4
-rwxr-xr-xsrc/api/Sprite2.py203
-rw-r--r--src/game/Area1Game1.py5
-rw-r--r--src/game/Area1Game3.py2
-rw-r--r--src/game/Area1Game4.py4
-rw-r--r--src/game/Area1Game6.py15
-rw-r--r--src/game/Area2Game2.py2
-rw-r--r--src/game/BoyHall.py9
-rw-r--r--src/game/HallState.py4
-rw-r--r--src/game/PresentationState.py2
-rw-r--r--src/game/SelectAreaState.py4
-rw-r--r--src/game/SelectCharacterState.py2
-rw-r--r--src/game/SelectPartidaState.py2
17 files changed, 224 insertions, 46 deletions
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index 5f447d3..da22f1a 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,5 +1,4 @@
eclipse.preferences.version=1
-encoding//EdSexual.activity/api/Sprite.py=utf-8
encoding//src/Main.py=utf-8
encoding//src/api/Button.py=utf-8
encoding//src/api/Game.py=utf-8
@@ -10,7 +9,6 @@ encoding//src/api/Label.py=utf-8
encoding//src/api/Math.py=utf-8
encoding//src/api/Mouse.py=utf-8
encoding//src/api/MultiLabel.py=utf-8
-encoding//src/api/Sprite.py=utf-8
encoding//src/api/Vector.py=utf-8
encoding//src/assets/data/area1game3_data.py=utf-8
encoding//src/assets/data/area1game4_data.py=utf-8
diff --git a/src/api/Game.py b/src/api/Game.py
index f4dcaaf..37d0873 100755
--- a/src/api/Game.py
+++ b/src/api/Game.py
@@ -11,11 +11,7 @@ from pygame.locals import *
import api.SuperSprite
from SuperSprite import CSuperSprite
-import api.Sprite
-from api.Sprite import CSprite
-
-
-
+from api.Sprite2 import CSprite
from api.Mouse import CMouse
from gettext import gettext as _
diff --git a/src/api/Globe.py b/src/api/Globe.py
index e57931f..6c84b80 100644
--- a/src/api/Globe.py
+++ b/src/api/Globe.py
@@ -2,7 +2,7 @@
import pygame
import Image
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
path = 'assets/images/dialog/'
diff --git a/src/api/Points.py b/src/api/Points.py
index 2424709..872b0cb 100755
--- a/src/api/Points.py
+++ b/src/api/Points.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import pygame
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
class CPoints(CSprite):
diff --git a/src/api/Sprite.py b/src/api/Sprite.py
index 881ecdd..3829225 100755
--- a/src/api/Sprite.py
+++ b/src/api/Sprite.py
@@ -16,7 +16,7 @@ from Mouse import *
# TODO: This class is a rotating sprite. update() in each frame rotates the sprite
# image, so this is inneficient for sprites that does not rotate continuoulsy.
-class CSprite(pygame.sprite.Sprite):
+class CSpriteOLD(pygame.sprite.Sprite):
# TODO: Como defino aca los vectores ?
@@ -635,4 +635,4 @@ class CSprite(pygame.sprite.Sprite):
rect = self.image.get_rect()
return (rect[2], rect[3])
else:
- return (0,0) \ No newline at end of file
+ return (0,0)
diff --git a/src/api/Sprite2.py b/src/api/Sprite2.py
new file mode 100755
index 0000000..edc02a3
--- /dev/null
+++ b/src/api/Sprite2.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import pygame
+import math
+import Image
+import api.Math as CMath
+import api.Vector
+from api.Vector import CVector
+
+from Mouse import *
+
+class CSprite(pygame.sprite.Sprite):
+ """ An enhanced Sprite class
+ expects a gameEngine.Scene class as its one parameter
+ Use methods to change image, direction, speed
+ Will automatically travel in direction and speed indicated
+ """
+
+ mPos = None
+
+ mOffsetX = 0
+ mOffsetY = 0
+
+ def __init__(self):
+ pygame.sprite.Sprite.__init__(self)
+
+ self.mPos = CVector(0.0, 0.0)
+ self.mVel = CVector(0.0, 0.0)
+
+ # Registration point offset.
+ self.mOffsetX = 0
+ self.mOffsetY = 0
+
+ # Speed of the sprite.
+ self.mSpeed = 0
+
+ self.maxSpeed = 50
+ self.minSpeed = -3
+
+ self.mactive = False
+ self.mclicked = False
+
+ self.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 30)
+ self.mImageMaster = self.font.render(">sprite>", True, (0,0,0), (0xFF, 0xFF, 0xFF))
+
+ # Set the image of the sprite.
+ self.image = self.mImageMaster.copy()
+
+ self.update()
+
+ def setRegistrationPointOffset(self, aOffsetX, aOffsetY):
+ self.mOffsetX = aOffsetX
+ self.mOffsetY = aOffsetY
+
+ def setXY(self, aX, aY):
+ self.mPos.setXY(aX, aY)
+ self.calculatePositionWithOffset()
+
+ def setVelXY(self, aVelX, aVelY):
+ self.mVel.setXY(aVelX, aVelY)
+ self.mVel.truncate(self.maxSpeed)
+
+ def setVelVec(self, aVec):
+ self.mVel.setXY(aVec.getX(), aVec.getY())
+ self.mVel.truncate(self.maxSpeed)
+
+ def setMaxSpeed(self, aMaxSpeed):
+ self.maxSpeed = aMaxSpeed
+
+ def update(self):
+
+ self.mPos.add(self.mVel)
+
+ self.calculatePositionWithOffset()
+
+ self.mclicked = False
+
+ if CMouse().firstPress():
+ if self.rect.collidepoint(CMouse().getPos()):
+ #print("first press in button")
+ self.mactive = True
+
+ #check for mouse release
+ if self.mactive == True:
+ if CMouse().release():
+ self.mactive = False
+ if self.rect.collidepoint(CMouse().getPos()):
+ #print("release in button")
+ self.mclicked = True
+
+ def setSpeed(self, speed):
+ """ immediately sets the objects speed to the
+ given value.
+ """
+ self.mSpeed = speed
+
+ def speedUp(self, amount):
+ """ changes speed by the given amount
+ Use a negative value to slow down
+ """
+ self.mSpeed += amount
+ if self.mSpeed < self.minSpeed:
+ self.mSpeed = self.minSpeed
+ if self.mSpeed > self.maxSpeed:
+ self.mSpeed = self.maxSpeed
+
+ def loadImage(self, aImageFilename, aIsTransparent=True):
+ self.mImageMaster = Image.loadImage(aImageFilename, aIsTransparent)
+ self.setImage(self.mImageMaster)
+
+ def setImage(self, aImage):
+ self.mImageMaster = aImage
+ self.image = aImage
+ self.rect = self.image.get_rect()
+ self.calculatePositionWithOffset()
+
+ def setPosition (self, position):
+ """ place the sprite directly at the given position
+ expects an (x, y) tuple
+ """
+ self.mPos.setX(position.getX())
+ self.mPos.setY(position.getY())
+
+ def setSpeedLimits(self, max, min):
+ """ determines maximum and minimum
+ speeds you will allow through
+ speedUp() method. You can still
+ directly set any speed you want
+ with setSpeed() Default values:
+ max: 10
+ min: -3
+ """
+ self.maxSpeed = max
+ self.minSpeed = min
+
+ def dataTrace(self):
+ """ utility method for debugging
+ print major properties
+ extend to add your own properties
+ """
+ print "x: %d, y: %d, speed: %.2f, dx: %.2f, dy: %.2f" % \
+ (self.mPos.x, self.mPos.y, self.mSpeed, self.mAngle, self.dx, self.dy)
+
+ def mouseDown(self):
+ """ boolean function. Returns True if the mouse is
+ clicked over the sprite, False otherwise
+ """
+ self.pressed = False
+ if CMouse().pressed():
+ if self.rect.collidepoint(CMouse().getPos()):
+ self.pressed = True
+ return self.pressed
+
+ def mouseOver(self):
+ if not CMouse().pressed():
+ if self.rect.collidepoint(CMouse().getPos()):
+ return True
+ else:
+ return False
+ else:
+ return False
+
+ def clicked(self):
+ """ Boolean function. Returns True only if mouse
+ is pressed and released over sprite
+ """
+ return self.mclicked
+
+ def distanceTo(self, point):
+ """ returns distance to any point in pixels
+ can be used in circular collision detection
+ """
+ (pointx, pointy) = point
+ dx = self.mPos.x - pointx
+ dy = self.mPos.y - pointy
+
+ dist = math.sqrt((dx * dx) + (dy * dy))
+ return dist
+
+ def destroy(self):
+ self.font = None
+ self.mImageMaster = None
+ self.image = None
+
+ def calculatePositionWithOffset(self):
+ self.rect = self.image.get_rect()
+ self.rect.x = self.mPos.getX() - self.mOffsetX
+ self.rect.y = self.mPos.getY() - self.mOffsetY
+
+ def getX(self):
+ return self.mPos.getX()
+
+ def getY(self):
+ return self.mPos.getY()
+
+ def getSize(self):
+ if self.image:
+ rect = self.image.get_rect()
+ return (rect[2], rect[3])
+ else:
+ return (0,0)
+
diff --git a/src/game/Area1Game1.py b/src/game/Area1Game1.py
index 9db176a..726e3a0 100644
--- a/src/game/Area1Game1.py
+++ b/src/game/Area1Game1.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import pygame
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from api.Button import CButton
from api.Points import CPoints
from api.Label import CLabel
@@ -34,6 +34,7 @@ class Piece(CSprite):
RADIUS_COLLISION = 50
+ mState = None
def __init__(self, aParent, aNum, aOrigin, aDestine):
CSprite.__init__(self)
@@ -86,8 +87,6 @@ class Piece(CSprite):
elif (self.mState == STATE_OK):
pass
-
-
def setState(self, aState):
if (aState == STATE_STALE):
diff --git a/src/game/Area1Game3.py b/src/game/Area1Game3.py
index fdbea29..ad969ab 100644
--- a/src/game/Area1Game3.py
+++ b/src/game/Area1Game3.py
@@ -7,7 +7,7 @@ import api.Image as Image
from api.Game import CGame
from api.GameState import CGameState
from api.Button import CButton
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from api.Label import CLabel
from api.MultiLabel import CMultiLabel
from api.Points import CPoints
diff --git a/src/game/Area1Game4.py b/src/game/Area1Game4.py
index 1ea901e..30f8970 100644
--- a/src/game/Area1Game4.py
+++ b/src/game/Area1Game4.py
@@ -7,7 +7,7 @@ import api.Image as Image
from api.Game import CGame
from api.GameState import CGameState
from api.Button import CButton
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from api.Label import CLabel
from api.MultiLabel import CMultiLabel
from api.Points import CPoints
@@ -149,6 +149,8 @@ class CArea1Game4(CGameState):
CGame().removeChild(self.mLabelQuestion)
CGame().removeChild(self.mPoints)
CGame().removeChild(self.mBook)
+ CGame().removeChild(self.mGoodSprite)
+ CGame().removeChild(self.mBadSprite)
self.mButtonBackA1G4 = None
self.mBackground = None
self.mLabelDefinition = None
diff --git a/src/game/Area1Game6.py b/src/game/Area1Game6.py
index 4a211b6..5af4769 100644
--- a/src/game/Area1Game6.py
+++ b/src/game/Area1Game6.py
@@ -3,7 +3,7 @@
import os
import sys
import pygame
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from api.Button import CButton
from api.Points import CPoints
from api.MultiLabel import CMultiLabel
@@ -51,6 +51,7 @@ class Piece(CSprite):
RADIUS_COLLISION = 40
+ mState = None
def __init__(self, aParent, aNum, aOrigin, aDestine):
CSprite.__init__(self)
@@ -87,7 +88,6 @@ class Piece(CSprite):
self.setState(STATE_RETURN)
self.mParent.mActivePiece = None
-
elif (self.mState == STATE_ADJUST):
if (CMath.dist(self.mPos.getX() , self.mPos.getY(), self.mDest.getX(), self.mDest.getY()) < self.RADIUS_COLLISION):
@@ -108,15 +108,6 @@ class Piece(CSprite):
pass
- def render(self):
- pass
-
-
- def destroy(self):
- pass
- #eliminar la imagen creada
-
-
def setState(self, aState):
if (aState == STATE_STALE):
@@ -137,13 +128,11 @@ class Piece(CSprite):
vec.mul(dist/self.TIME_ADJUST)
self.setVelXY(vec.getX(), vec.getY())
-
if (aState == STATE_OK):
self.setPosition(self.mDest)
self.mVel = CVector(0.0, 0.0)
#play(Sonido OK)
-
self.mState = aState
def getState(self):
diff --git a/src/game/Area2Game2.py b/src/game/Area2Game2.py
index d5d2577..ef33b04 100644
--- a/src/game/Area2Game2.py
+++ b/src/game/Area2Game2.py
@@ -7,7 +7,7 @@ import api.Image as Image
from api.Game import CGame
from api.GameState import CGameState
from api.Button import CButton
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from api.Label import CLabel
from api.MultiLabel import CMultiLabel
from api.Points import CPoints
diff --git a/src/game/BoyHall.py b/src/game/BoyHall.py
index 7720909..295a6bb 100644
--- a/src/game/BoyHall.py
+++ b/src/game/BoyHall.py
@@ -1,15 +1,10 @@
-import api.Sprite
-from api.Sprite import CSprite
+# -*- coding: utf-8 -*-
+from api.Sprite2 import CSprite
import api.Image as Image
-
-import api.Anim
from api.Anim import CAnim
-
from api.Mouse import *
-
from api.Vector import *
-
import api.Math as Math
class CBoyHall(CSprite):
diff --git a/src/game/HallState.py b/src/game/HallState.py
index 4e1df7c..c7448f7 100644
--- a/src/game/HallState.py
+++ b/src/game/HallState.py
@@ -11,9 +11,7 @@ from api.Game import CGame
import api.Button
from api.Button import CButton
import api.Image as CImage
-
-import api.Sprite
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
import api.Image as Image
diff --git a/src/game/PresentationState.py b/src/game/PresentationState.py
index 040e689..e7eeadd 100644
--- a/src/game/PresentationState.py
+++ b/src/game/PresentationState.py
@@ -12,7 +12,7 @@ import api.Button
from api.Button import CButton
import game.CreditsState
from CreditsState import *
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
#import game.SelectAreaState
#from SelectAreaState import *
diff --git a/src/game/SelectAreaState.py b/src/game/SelectAreaState.py
index 5bf3020..faaece1 100644
--- a/src/game/SelectAreaState.py
+++ b/src/game/SelectAreaState.py
@@ -11,9 +11,7 @@ from api.Game import CGame
import api.Button
from api.Button import CButton
import api.Image as CImage
-
-import api.Sprite
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
import api.Image as Image
diff --git a/src/game/SelectCharacterState.py b/src/game/SelectCharacterState.py
index bec0c14..eec97c5 100644
--- a/src/game/SelectCharacterState.py
+++ b/src/game/SelectCharacterState.py
@@ -9,7 +9,7 @@ from api.Label import CLabel
import api.Game
from api.Game import CGame
from api.Button import CButton
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
import api.Image as Image
diff --git a/src/game/SelectPartidaState.py b/src/game/SelectPartidaState.py
index fa4df3a..8164b7e 100644
--- a/src/game/SelectPartidaState.py
+++ b/src/game/SelectPartidaState.py
@@ -9,7 +9,7 @@ from api.Label import CLabel
import api.Game
from api.Game import CGame
from api.Button import CButton
-from api.Sprite import CSprite
+from api.Sprite2 import CSprite
from SelectCharacterState import CSelectCharacterState