diff options
author | Fernando Sansberro <sansberro@batovi.com> | 2012-04-30 15:20:47 (GMT) |
---|---|---|
committer | Fernando Sansberro <sansberro@batovi.com> | 2012-04-30 15:20:47 (GMT) |
commit | f5445986c75c16cc691d9eaefe263e8b06831d36 (patch) | |
tree | e2dae01f5f69fa0dfca1b8101a9bde7fd7c9aac1 /src/game/BoyHall.py | |
parent | 224a2947bbdbaba19900b463a173acee4351b3de (diff) |
Hall state & minor changes.
Diffstat (limited to 'src/game/BoyHall.py')
-rw-r--r-- | src/game/BoyHall.py | 144 |
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 |