# -*- coding: utf-8 -*- import pygame import MenuState from api.GameState import CGameState from api.MultiLabel import CMultiLabel from api.Label import CLabel from api.Game import CGame from api.Sprite 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 from gettext import gettext as _ 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)] NORMAL_COLOR = (255, 125, 50) class CSelectAreaState(CGameState): def init(self): CGameState.init(self) self.mBackground = Image.loadImage('assets/images/selectArea/background.jpg', False) CGame().setBackground(self.mBackground) 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(1170, 30) self.mButtonBack.setRegistrationPointOffset(22, 22) 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(55, 193) self.mArea1.loadImage('assets/images/selectArea/M-resaltado-A1.png') self.mArea1Is = False font28 = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mLabelA1 = CMultiLabel() self.mLabelA1.bgColor = NORMAL_COLOR self.mLabelA1.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA1.font = font28 self.mLabelA1.center = (300, 320) self.mLabelA1.size = (320, 80) self.mLabelA1.text = self.mAreas_list[0] self.mLabelA1._update_image() #patio self.mArea2 = CSprite(110, 380) self.mArea2.loadImage('assets/images/selectArea/M-resaltado-A2.png') self.mArea2Is = False self.mLabelA2 = CMultiLabel() self.mLabelA2.bgColor = NORMAL_COLOR self.mLabelA2.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA2.font = font28 self.mLabelA2.center = (600, 600) self.mLabelA2.size = (350, 80) self.mLabelA2.text = self.mAreas_list[1] self.mLabelA2._update_image() #casa self.mArea3 = CSprite(705, 105) self.mArea3.loadImage('assets/images/selectArea/M-resaltado-A3.png') self.mArea3Is = False self.mLabelA3 = CMultiLabel() self.mLabelA3.bgColor = NORMAL_COLOR self.mLabelA3.fgColor = (0xFF, 0xFF, 0xFF) self.mLabelA3.font = font28 self.mLabelA3.center = (950, 300) self.mLabelA3.size = (280, 80) self.mLabelA3.text = self.mAreas_list[2] self.mLabelA3._update_image() mes = _('Selecciona un área') self.mMessage = CLabel() self.mMessage.bgColor = NORMAL_COLOR self.mMessage.fgColor = (0xFF, 0xFF, 0xFF) self.mMessage.font = font28 self.mMessage.center = (600, 150) self.mMessage.size = (400, 40) self.mMessage.text = unicode(mes, 'UTF-8') self.mMessage._update_image() CGame().addChild(self.mMessage) def update(self): 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(): ms = MenuState.CMenuState() CGame().setState(ms) return x = CMouse().getX() y = CMouse().getY() if (CMath.pointInsidePolygon(x, y, 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.setCurrentGame(0) return else: if self.mArea1Is: CGame().removeChild(self.mArea1) CGame().removeChild(self.mLabelA1) self.mArea1Is = False if (CMath.pointInsidePolygon(x, y, 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, 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 destroy(self): CGameState.destroy(self) CGame().removeChild(self.mMessage) self.mMessage = None CGame().removeChild(self.mButtonBack) self.mButtonBack = None CGame().removeChild(self.mArea1) CGame().removeChild(self.mLabelA1) self.mArea1.destroy() self.mArea1 = None CGame().removeChild(self.mArea2) CGame().removeChild(self.mLabelA2) self.mArea2.destroy() self.mArea2 = None CGame().removeChild(self.mArea3) CGame().removeChild(self.mLabelA3) self.mArea3.destroy() self.mArea3 = None self.mBackground = None