# -*- coding: utf-8 -*- import pygame import SelectAreaState # import CSelectAreaState from api.GameState import CGameState from api.Game import CGame from api.Button import CButton import api.Image as CImage from api.Sprite2 import CSprite import api.Image as Image from api.Mouse import CMouse import api.Math as CMath from BoyHall import CBoyHall from Area1Game1 import CArea1Game1 from gettext import gettext as _ class CHallState(CGameState): def init(self): CGameState.init(self) self.mBackground = None self.mBackgroundList = [] self.mInstructions = None #mX = 10 self.mButtonBack = None self.mCurrentSelectedArea = 0 self.AREA1_POLYGON = [(424,90), (764,90), (764, 700), (424,700)] self.mPlayer = None self.mtext = None self.mGo = None #self.mInstructions = CMultiLabel() #CGame().addChild(self.mInstructions) #print self.mX self.mPartida = None self.mAreaStates = [] 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")) CGame().addChild(self.mButtonBack) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-1.jpg', False)) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-2.jpg', False)) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-3.jpg', False)) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-4.jpg', False)) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-5.jpg', False)) self.mBackgroundList.append(CImage.loadImage('assets/images/hall/A1-Pasillo-6.jpg', False)) CGame().setBackground(self.mBackgroundList[self.mCurrentSelectedArea]) self.mDoor = CSprite() self.mDoor.setXY(400, 50) self.mFrameImageDoor = Image.loadImage('assets/images/hall/A1-puerta-resaltada.png') self.mDoor.setImage(self.mFrameImageDoor) self.mDoorIs = False self.mStar1 = Image.loadImage('assets/images/hall/star1.png') self.mStar2 = Image.loadImage('assets/images/hall/star2.png') self.mLeftArrow = CSprite() self.mLeftArrow.setXY(10, 400) self.mImageLeftArrow = Image.loadImage('assets/images/hall/arrow.png') self.mLeftArrow.setImage(self.mImageLeftArrow) CGame().addChild(self.mLeftArrow) self.mRightArrow = CSprite() self.mRightArrow.setXY(1060, 400) self.mImageRightArrow = pygame.transform.flip(self.mImageLeftArrow, True, False) self.mRightArrow.setImage(self.mImageRightArrow) CGame().addChild(self.mRightArrow) def update(self): #print "menu update" CGameState.update(self) if self.mButtonBack.clicked(): print "clicked back......" #ms = MenuState.CMenuState() cs = SelectAreaState.CSelectAreaState() CGame().setState(cs) cs.setPartida(self.mPartida) return elif self.mLeftArrow.clicked(): print 'previous game' CGame().removeChild(self.mAreaStates[self.mCurrentSelectedArea]) self.mCurrentSelectedArea = self.mCurrentSelectedArea - 1 if self.mCurrentSelectedArea < 0: self.mCurrentSelectedArea = 5 #self.mPlayer.setVelXY(-20, 0) self.mPlayer.setXY(1000, 500) CGame().setBackground(self.mBackgroundList[self.mCurrentSelectedArea]) self.mPlayer.mDestX = 1000 self.mPlayer.mAnim.init(6, 3, True, 3) self.mPlayer.mLastSense = 0 self.mPlayer.setVelXY(-5, 0) self.mPlayer.setXY(1400, 500) CGame().addChild(self.mAreaStates[self.mCurrentSelectedArea]) return elif self.mRightArrow.clicked(): print 'next game' CGame().removeChild(self.mAreaStates[self.mCurrentSelectedArea]) self.mCurrentSelectedArea = self.mCurrentSelectedArea + 1 if self.mCurrentSelectedArea > 5: self.mCurrentSelectedArea = 0 #self.mPlayer.setVelXY(20, 0) self.mPlayer.setXY(200, 500) CGame().setBackground(self.mBackgroundList[self.mCurrentSelectedArea]) self.mPlayer.mDestX = 200 self.mPlayer.mAnim.init(3, 3, True, 0) self.mPlayer.mLastSense = 1 self.mPlayer.setVelXY(5, 0) self.mPlayer.setXY(-200, 500) CGame().addChild(self.mAreaStates[self.mCurrentSelectedArea]) return if (CMath.pointInsidePolygon(CMouse().getX(), CMouse().getY(), self.AREA1_POLYGON)): if not(self.mDoorIs): CGame().addChild(self.mDoor) self.mDoorIs = True if (CMouse().release()): x = CMouse().getX() - self.mPlayer.getX() self.mPlayer.mDestX = 600 if x < 0: self.mPlayer.setImage(self.mPlayer.mFrameImage[3]) self.mPlayer.mAnim.init(6, 5, True, 3) self.mPlayer.mLastSense = 0 else: self.mPlayer.setImage(self.mPlayer.mFrameImage[0]) self.mPlayer.mAnim.init(3, 5, True, 0) self.mPlayer.mLastSense = 1 self.mGo = self.mCurrentSelectedArea else: if self.mDoorIs: CGame().removeChild(self.mDoor) self.mDoorIs = False if self.mGo is not None: x = self.mPlayer.getX() if (x > 400) and (x < 600): if self.mGo == 0: a1g1 = CArea1Game1() CGame().setState(a1g1) def setPartida(self, aPartida): self.mPartida = aPartida #TODO: remove from here? par = CGame().getPartida(self.mPartida) character = par.getCharacter() print 'get character of CGAME', character, self.mPartida self.mPlayer = CBoyHall(character) CGame().addChild(self.mPlayer) #TODO no solo area 1 a1 = par.getArea(1) for i in range(6): s = CSprite() if a1[i] == 0: s.setImage(self.mStar1) else: s.setImage(self.mStar2) s.setXY(730, 40) self.mAreaStates.append(s) CGame().addChild(self.mAreaStates[self.mCurrentSelectedArea]) def destroy(self): #CGame().removeChild(self.mText) #self.mText = None CGameState.destroy(self) CGame().removeChild(self.mButtonBack) self.mButtonBack = None CGame().removeChild(self.mDoor) #self.mDoor.destroy() self.mDoor = None CGame().removeChild(self.mLeftArrow) self.mLeftArrow.destroy() self.mLeftArrow = None CGame().removeChild(self.mRightArrow) self.mRightArrow.destroy() self.mRightArrow = None CGame().removeChild(self.mPlayer) self.mPlayer.destroy() self.mPlayer = None for e in self.mAreaStates: CGame().removeChild(e) self.mStar1 = None self.mStar2 = None self.mBackground = None def doEvents(self, aEvent): print aEvent.type