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 | |
parent | 224a2947bbdbaba19900b463a173acee4351b3de (diff) |
Hall state & minor changes.
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/BoyHall.py | 144 | ||||
-rw-r--r-- | src/game/HallState.py | 132 | ||||
-rw-r--r-- | src/game/SelectAreaState.py | 8 |
3 files changed, 283 insertions, 1 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 diff --git a/src/game/HallState.py b/src/game/HallState.py new file mode 100644 index 0000000..6da7340 --- /dev/null +++ b/src/game/HallState.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- + +import MenuState +from MenuState import * +import api.GameState +from api.GameState import CGameState +import api.MultiLabel +from api.MultiLabel import CMultiLabel +import api.Game +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 + +import api.Image as Image + +from api.Mouse import * + +import api.Math as CMath + +import Area1Game1 +from Area1Game1 import * + +import BoyHall +from BoyHall import * + +import pygame + +class CHallState(CGameState): + + mBackground = None + mInstructions = None + #mX = 10 + mButtonBack = None + + mCurrentSelectedArea = 0 + + mArea1 = None + + mFrameDoor0101 = [] + + AREA1_POLYGON = [(402,94), (961,94), (961,631), (402,631)] + + mPlayer = None + + mtext = None + + def init(self): + CGameState.init(self) + #self.mInstructions = CMultiLabel() + #CGame().addChild(self.mInstructions) + #print self.mX + + self.mCurrentSelectedArea = 0 + + self.mButtonBack = CButton() + self.mButtonBack.set_bgColor((0x99, 0x99, 0x66)) + self.mButtonBack.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 20) + self.mButtonBack.set_center((100, 100)) + self.mButtonBack.set_size((200, 40)) + self.mButtonBack.set_text("Volver") #_('BACK Credits') + CGame().addChild(self.mButtonBack) + + self.mBackground = CImage.loadImage('assets/images/hall/background_hall0101.png', False) + CGame().setBackground(self.mBackground) + + self.mArea1 = CSprite() + self.mArea1.setXY(402,96) + self.mFrameDoor0101.append(Image.loadImage('assets/images/hall/door0101_normal.png', True)) + self.mFrameDoor0101.append(Image.loadImage('assets/images/hall/door0101_selected.png', True)) + self.mArea1.setImage(self.mFrameDoor0101[0]) + CGame().addChild(self.mArea1) + + self.mPlayer = CBoyHall() + CGame().addChild(self.mPlayer) + + self.mText = CMultiLabel() + self.mText.textLines = [ + "dlkjfkljflk dslkdsj dsl", + "lkjdkldjdslk dslkdjd ", + "sadsakjd salkdjsa.", + "", + "dsalkjd ksajdlksjd lsk" + "dskldsjfkjd f d."] + + self.mText.size = (400, 300) + self.mText.fgColor = (0xFF, 0xFF, 0xFF) + self.mText.bgColor = (0, 0, 0) + self.mText.center = (320, 200) + self.mText.createImage() + CGame().addChild(self.mText) + + def update(self): + #print "menu update" + CGameState.update(self) + + if self.mButtonBack.clicked(): + print "clicked back......" + ms = MenuState.CMenuState() + CGame().setState(ms) + return + + #if (self.mArea1 <> None): + if (CMath.pointInsidePolygon(CMouse().getX(), CMouse().getY(), self.AREA1_POLYGON)): + self.mArea1.setImage(self.mFrameDoor0101[1]) + if (CMouse().firstPress()): + a1g1 = CArea1Game1() + CGame().setState(a1g1) + else: + self.mArea1.setImage(self.mFrameDoor0101[0]) + + #def render(self): + # CGameState.render(self) + # print "CMenuState render" + + def destroy(self): + CGameState.destroy(self) + CGame().removeChild(self.mButtonBack) + self.mButtonBack = None + CGame().removeChild(self.mArea1) + self.mArea1.destroy() + self.mArea1 = None + CGame().removeChild(self.mPlayer) + self.mPlayer.destroy() + self.mPlayer = None + self.mBackground = None + + def doEvents(self, aEvent): + print aEvent.type
\ No newline at end of file diff --git a/src/game/SelectAreaState.py b/src/game/SelectAreaState.py index bfa9ba6..8435244 100644 --- a/src/game/SelectAreaState.py +++ b/src/game/SelectAreaState.py @@ -21,6 +21,9 @@ from api.Mouse import * import api.Math as CMath +import HallState +from HallState import * + import pygame class CSelectAreaState(CGameState): @@ -70,13 +73,16 @@ class CSelectAreaState(CGameState): if self.mButtonBack.clicked(): print "clicked back......" - ms = MenuState.CMenuState() + ms = CMenuState() CGame().setState(ms) return #if (self.mArea1 <> None): if (CMath.pointInsidePolygon(CMouse().getX(), CMouse().getY(), self.AREA1_POLYGON)): self.mArea1.setImage(self.mFrameImageArea1[1]) + if (CMouse().release()): + hs = CHallState() + CGame().setState(hs) else: self.mArea1.setImage(self.mFrameImageArea1[0]) |