Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/game/BoyHall.py
diff options
context:
space:
mode:
authorFernando Sansberro <sansberro@batovi.com>2012-04-30 15:20:47 (GMT)
committer Fernando Sansberro <sansberro@batovi.com>2012-04-30 15:20:47 (GMT)
commitf5445986c75c16cc691d9eaefe263e8b06831d36 (patch)
treee2dae01f5f69fa0dfca1b8101a9bde7fd7c9aac1 /src/game/BoyHall.py
parent224a2947bbdbaba19900b463a173acee4351b3de (diff)
Hall state & minor changes.
Diffstat (limited to 'src/game/BoyHall.py')
-rw-r--r--src/game/BoyHall.py144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/game/BoyHall.py b/src/game/BoyHall.py
new file mode 100644
index 0000000..d5382a0
--- /dev/null
+++ b/src/game/BoyHall.py
@@ -0,0 +1,144 @@
+import api.Sprite
+from api.Sprite 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):
+
+ mState = None
+ mParent = None
+ MIN_DISTANCE = 40
+
+ TIME_RETURN = 15
+ TIME_ADJUST = 8
+
+ RADIUS_COLLISION = 40
+
+ NUM_FRAMES_WALKING = 3
+ DELAY_FRAMES_WALKING = 3
+
+ mAnim = None
+
+ STATE_STALE = 0
+ STATE_WALKING = 1
+ STATE_TALKING = 2
+
+ mFrameImage = []
+
+ # Canvas size: 140x240.
+
+ # Define registration point.
+ OFFSET_X = 70
+ OFFSET_Y = 120
+
+ # Destination point of walking.
+ mDestX = 0
+ mDestY = 0
+
+ def __init__(self):
+ CSprite.__init__(self)
+
+ self.mFrameImage.append(Image.loadImage('assets/images/hall/boy001.png', True))
+ self.mFrameImage.append(Image.loadImage('assets/images/hall/boy002.png', True))
+ self.mFrameImage.append(Image.loadImage('assets/images/hall/boy003.png', True))
+
+ self.setImage(self.mFrameImage[1])
+
+ self.mAnim = CAnim(self.NUM_FRAMES_WALKING, self.DELAY_FRAMES_WALKING, True)
+
+ self.setRegistrationPointOffset(self.OFFSET_X, self.OFFSET_Y)
+ self.setXY(200, 750)
+ #self.setMaxVel(100, 100)
+
+ self.mDestX = 0
+ self.mDestY = 0
+
+ self.setState(self.STATE_STALE)
+
+
+ def set_parent(self, aParent):
+ self.mParent = aParent
+ #image = ....
+ def set_origin(self, aOrigin):
+ self.mOrigin = aOrigin
+ #self.mPos =
+ self.setXY(aOrigin.getX(), aOrigin.getY())
+
+ def set_destine(self, aDestine):
+ self.mDest = aDestine
+
+ def update(self):
+
+ CSprite.update(self)
+
+ self.mAnim.update()
+
+ if (self.mState == self.STATE_WALKING):
+ # Check if arrives to destination point.
+ if (Math.dist(self.getX(), self.getY(), self.mDestX, self.mDestY) < 5):
+ self.setXY(self.mDestX, self.mDestY)
+ self.setState(self.STATE_STALE)
+ return
+
+ # If a click is made, change the destination point.
+ if CMouse().firstPress():
+ self.setState(self.STATE_WALKING)
+ return
+
+ if (self.mAnim.frameHasChanged()):
+ self.setImage(self.mFrameImage[self.mAnim.getCurrentFrame()])
+
+ elif (self.mState == self.STATE_STALE):
+ if CMouse().firstPress():
+ self.setState(self.STATE_WALKING)
+ return
+
+ def render(self):
+ print("render")
+ pass
+
+
+ def destroy(self):
+ pass
+ #TODO: Eliminar la imagen creada.
+
+ def setState(self, aState):
+
+ self.setTimeState(0)
+
+ if (aState == self.STATE_STALE):
+
+ self.setVelXY(0, 0)
+ self.setImage(self.mFrameImage[1])
+ self.mAnim.init(1, 0, False)
+
+ elif (aState == self.STATE_WALKING):
+
+ x = int(CMouse().getX())
+ y = int(CMouse().getY())
+
+ self.mDestX = x
+ self.mDestY = y
+ x = self.mDestX - self.getX()
+ y = self.mDestY - self.getY()
+ vec = CVector(x, y)
+ vec.normalize()
+ vec.mul(5)
+ self.setVelVec(vec)
+
+ self.setImage(self.mFrameImage[0])
+ self.mAnim.init(self.NUM_FRAMES_WALKING, self.DELAY_FRAMES_WALKING, True)
+
+ self.mState = aState
+
+ def getState(self):
+ return self.mState \ No newline at end of file