# -*- coding: utf-8 -*- import pygame import MenuState from api.GameState import CGameState from api.MultiLabel import CMultiLabel from api.Game import CGame from api.Sprite2 import CSprite import api.Image as Image from api.Mouse import CMouse import api.Math as CMath from HallState import CHallState from assets.data import selectArea_data class CSelectAreaState(CGameState): mBackground = None mInstructions = None #mX = 10 mButtonBack = None #mCurrentSelectedArea = 0 mArea1 = None mArea2 = None mArea3 = None mFrameImageArea1 = None mFrameImageArea2 = None mFrameImageArea3 = None AREA1_POLYGON = [(70, 233), (344, 208), (505, 246), (505, 400), (212, 536), (70, 440)] AREA2_POLYGON = [(558, 379), (1113, 665), (342, 834), (124, 579)] AREA3_POLYGON = [(838, 155), (1034, 143), (1150, 240), (1133, 397), (927, 436), (749, 372), (746, 222)] def init(self): CGameState.init(self) self.mBackground = Image.loadImage('assets/images/selectArea/background.jpg', False) CGame().setBackground(self.mBackground) self.mPartida = None self.mBsetted = False self.mNsetted = True 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.mAreas_list = [] for a in selectArea_data.AREAS: self.mAreas_list.append(unicode(a, 'UTF-8')) #escuela self.mArea1 = CSprite() self.mArea1.setXY(55, 193) self.mFrameImageArea1 = Image.loadImage('assets/images/selectArea/M-resaltado-A1.png', True) self.mArea1.setImage(self.mFrameImageArea1) self.mArea1Is = False self.mLabelA1 = CMultiLabel() self.mLabelA1.bgColor = (255, 125, 50) self.mLabelA1.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA1.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mLabelA1.set_center((300, 320)) self.mLabelA1.set_size((320, 80)) self.mLabelA1.set_text(self.mAreas_list[0]) #patio self.mArea2 = CSprite() self.mArea2.setXY(110, 380) self.mFrameImageArea2 = Image.loadImage('assets/images/selectArea/M-resaltado-A2.png', True) self.mArea2.setImage(self.mFrameImageArea2) self.mArea2Is = False self.mLabelA2 = CMultiLabel() self.mLabelA2.bgColor = (255, 125, 50) self.mLabelA2.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA2.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mLabelA2.set_center((600, 600)) self.mLabelA2.set_size((350, 80)) self.mLabelA2.set_text(self.mAreas_list[1]) #casa self.mArea3 = CSprite() self.mArea3.setXY(705, 105) self.mFrameImageArea3 = Image.loadImage('assets/images/selectArea/M-resaltado-A3.png', True) self.mArea3.setImage(self.mFrameImageArea3) self.mArea3Is = False self.mLabelA3 = CMultiLabel() self.mLabelA3.bgColor = (255, 125, 50) self.mLabelA3.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA3.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mLabelA3.set_center((950, 300)) self.mLabelA3.set_size((280, 80)) self.mLabelA3.set_text(self.mAreas_list[2]) 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.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(): ms = MenuState.CMenuState() CGame().setState(ms) return x = CMouse().getX() y = CMouse().getY() if (CMath.pointInsidePolygon(x,y,self.AREA1_POLYGON)): if not(self.mArea1Is): CGame().addChild(self.mArea1) CGame().addChild(self.mLabelA1) self.mArea1Is = True if (CMouse().release()): hs = CHallState() CGame().setState(hs) hs.setPartida(self.mPartida) return else: if self.mArea1Is: CGame().removeChild(self.mArea1) CGame().removeChild(self.mLabelA1) self.mArea1Is = False if (CMath.pointInsidePolygon(x,y,self.AREA2_POLYGON)): if not(self.mArea2Is): CGame().addChild(self.mArea2) CGame().addChild(self.mLabelA2) self.mArea2Is = True if (CMouse().release()): #hs = CHallState() #CGame().setState(hs) return else: if self.mArea2Is: CGame().removeChild(self.mArea2) CGame().removeChild(self.mLabelA2) self.mArea2Is = False if (CMath.pointInsidePolygon(x,y,self.AREA3_POLYGON)): if not(self.mArea3Is): CGame().addChild(self.mArea3) CGame().addChild(self.mLabelA3) self.mArea3Is = True if (CMouse().release()): #hs = CHallState() #CGame().setState(hs) return else: if self.mArea3Is: CGame().removeChild(self.mArea3) CGame().removeChild(self.mLabelA3) self.mArea3Is = False def setPartida(self, aPartida): self.mPartida = aPartida def destroy(self): print 'select area state destroy' CGame().removeChild(self.mButtonBack ) self.mButtonBack = None CGameState.destroy(self) CGame().removeChild(self.mButtonBack) self.mButtonBack = None CGame().removeChild(self.mArea1) CGame().removeChild(self.mLabelA1) self.mArea1.destroy() self.mArea1 = None self.mFrameImageArea1 = None CGame().removeChild(self.mArea2) CGame().removeChild(self.mLabelA2) self.mArea2.destroy() self.mArea2 = None self.mFrameImageArea2 = None CGame().removeChild(self.mArea3) CGame().removeChild(self.mLabelA3) self.mArea3.destroy() self.mArea3 = None self.mFrameImageArea3 = None self.mBackground = None def doEvents(self, aEvent): print aEvent.type