# -*- coding: utf-8 -*- import pygame import SelectAreaState # import CSelectAreaState from api.GameState import CGameState from api.Game import CGame 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 Area1Game3 import CArea1Game3 from Area1Game4 import CArea1Game4 from Area1Game5 import CArea1Game5 from Area1Game6 import CArea1Game6 class CHallState(CGameState): def init(self): CGameState.init(self) self.mBackground = None self.mBackgroundList = [] self.mInstructions = None #mX = 10 self.mButtonBack = None self.mBsetted = False self.mNsetted = True self.mPlayer = None self.mtext = None self.mGo = None self.AREA1_POLYGON = [(424,90), (764,90), (764, 700), (424,700)] self.mAreaStates = [] self.mCurrentSelectedArea = 0 self.mBackImageN = Image.loadImage('assets/images/back.png') self.mBackImageB = Image.loadImage('assets/images/back_big.png') self.mButtonBack = CSprite() self.mButtonBack.setRegistrationPointOffset(22, 22) self.mButtonBack.setXY(1170, 30) self.mButtonBack.setImage(self.mBackImageN) 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)) 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.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) number = CGame().getCurrentPartida() #TODO: remove from here? par = CGame().getPartida(number) character = par.getCharacter() self.mPlayer = CBoyHall(character) CGame().addChild(self.mPlayer, 1) #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) def setCurrentGame(self, n): self.mCurrentSelectedArea = n CGame().setBackground(self.mBackgroundList[self.mCurrentSelectedArea]) CGame().addChild(self.mAreaStates[self.mCurrentSelectedArea]) def update(self): #print "menu update" CGameState.update(self) if self.mButtonBack.mouseOver(): if not(self.mBsetted): self.mBsetted = True self.mNsetted = False self.mButtonBack.setRegistrationPointOffset(27, 27) self.mButtonBack.setImage(self.mBackImageB) else: if not(self.mNsetted): self.mBsetted = False self.mNSetted = True self.mButtonBack.setRegistrationPointOffset(22, 22) self.mButtonBack.setImage(self.mBackImageN) if self.mButtonBack.clicked(): #print "clicked back......" #ms = MenuState.CMenuState() cs = SelectAreaState.CSelectAreaState() CGame().setState(cs) 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)): CGame().addChild(self.mDoor) 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: CGame().removeChild(self.mDoor) if self.mGo is not None: x = self.mPlayer.getX() if (x > 400) and (x < 600): if self.mGo == 0: area = CArea1Game1() CGame().setState(area) elif self.mGo == 1: self.mGo = None elif self.mGo == 2: area = CArea1Game3() CGame().setState(area) elif self.mGo == 3: area = CArea1Game4() CGame().setState(area) elif self.mGo == 4: area = CArea1Game5() CGame().setState(area) elif self.mGo == 5: area = CArea1Game6() CGame().setState(area) 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