# -*- coding: utf-8 -*- import pygame from api.GameState import CGameState from api.Label import CLabel from api.Game import CGame from api.Sprite2 import CSprite from api.Globe import Globe from api.Button import CButton from api.PartidasMan import Partida from api.Mouse import CMouse import api.Math as CMath from SelectCharacterState import CSelectCharacterState from SelectAreaState import CSelectAreaState import MenuState import api.Image as Image from gettext import gettext as _ OVER_COLOR = (255, 0, 0) NORMAL_COLOR = (255, 125, 50) FLAG = 10 class CSelectPartidaState(CGameState): def init(self): CGameState.__init__(self) self.mBackground = Image.loadImage('assets/images/selectArea/background.jpg', False) CGame().setBackground(self.mBackground) self.mRectP = {} self.mRectP[0] = [(114, 254), (385, 625)] self.mRectP[1] = [(464, 254), (735, 625)] self.mRectP[2] = [(815, 254), (1086, 625)] self.mOverEnabled = True self.mToDel = None self.mFlag = FLAG self.mStarsP = {} self.mIsEmptyP = {} for i in range(3): self.mStarsP[i] = [] self.mIsEmptyP[i] = True 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) delete = Image.loadImage('assets/images/selectPartida/delete.png') self.mDeleteP = {} for i in range(3): dp = CSprite(350 + 350 * i, 240) dp.setImage(delete) self.mDeleteP[i] = dp recuadro = Image.loadImage('assets/images/selectPartida/recuadro.png') self.mPartida = {} for i in range(3): par = CSprite(114 + 350 * i, 254) par.setImage(recuadro) self.mPartida[i] = par CGame().addChild(par) border = Image.loadImage('assets/images/selectPartida/recuadro-interno2.png') self.mBorderP = {} for i in range(3): bor = CSprite(100 + 350 * i, 240) bor.setImage(border) self.mBorderP[i] = bor font28 = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) mes = _('Selecciona una partida') 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) mes = unicode(_('Partida %s'), 'UTF-8') self.mLabelP = {} for i in range(3): label = CLabel() label.bgColor = (218, 224, 152) label.fgColor = (0xFF, 0xFF, 0xFF) label.font = font28 label.center = (250 + 350 * i, 300) label.size = (150, 40) label.text = mes % (i + 1) label._update_image() self.mLabelP[i] = label juan = Image.loadImage('assets/images/selectPartida/T-juan.png') elisa = Image.loadImage('assets/images/selectPartida/T-elisa.png') star1 = Image.loadImage('assets/images/hall/star1.png') star2 = Image.loadImage('assets/images/hall/star2.png') mes = unicode(_('Partida vacía'), 'UTF-8') self.mEmptyP = {} for i in range(3): empty = CLabel() empty.bgColor = (218, 224, 152) empty.fgColor = (0xFF, 0xFF, 0xFF) empty.font = font28 empty.center = (250 + 350 * i, 450) empty.size = (200, 40) empty.text = mes empty._update_image() self.mEmptyP[i] = empty self.mChar = {} for i in range(3): ch = CSprite(200 + 350 * i, 310) self.mChar[i] = ch ########################################################## for parNum in range(3): par = CGame().getPartida(parNum + 1) if (par == None) or par.isEmpty(): CGame().addChild(self.mEmptyP[parNum]) else: self.mIsEmptyP[parNum] = False CGame().addChild(self.mLabelP[parNum]) CGame().addChild(self.mDeleteP[parNum], 1) if par.getCharacter() == 'Juan': self.mChar[parNum].setImage(juan) else: self.mChar[parNum].setImage(elisa) CGame().addChild(self.mChar[parNum]) #gets the area levels inicio = 150 + parNum * 350 for j in range(3): a = par.getArea(j + 1) for i in range(6): s = CSprite(inicio + 30 * i, 510 + j * 30) if a[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mStarsP[parNum].append(s) CGame().addChild(s) ########################################################## alphasurface = pygame.Surface((1200,900)) alphasurface.convert() alphasurface.fill((100,100,100)) alphasurface.set_alpha(200) self.mAlpha = CSprite(0, 0) self.mAlpha.setImage(alphasurface) msg = _('¿Estás seguro que deseas\neliminar la partida?') self.mDialog = Globe((350, 130), text=unicode(msg, 'UTF-8'), pico=None) self.mDialog.set_center((600, 300)) self.mButtonTrue = CButton() self.mButtonTrue.bgColor = NORMAL_COLOR self.mButtonTrue.font = font28 self.mButtonTrue.center = (460, 400) self.mButtonTrue.size = (200, 40) self.mButtonTrue.set_text(_('Aceptar')) self.mButtonFalse = CButton() self.mButtonFalse.bgColor = NORMAL_COLOR self.mButtonFalse.font = font28 self.mButtonFalse.center = (740, 400) self.mButtonFalse.size = (200, 40) self.mButtonFalse.set_text(_('Cancelar')) def addDialog(self): CGame().addChild(self.mAlpha, 1) self.mOverEnabled = False CGame().addChild(self.mDialog, 2) CGame().addChild(self.mButtonTrue, 2) CGame().addChild(self.mButtonFalse, 2) 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 for i in range(3): if self.mDeleteP[i].clicked(): self.mToDel = i + 1 self.addDialog() return if self.mOverEnabled: self.mFlag = self.mFlag - 1 if self.mFlag < 0: self.mFlag = 0 for i in range(3): if self.mPartida[i].clicked(): if self.mIsEmptyP[i]: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) CGame().setCurrentPartida(i + 1) return x = CMouse().getX() y = CMouse().getY() for i in range(3): if CMath.pointInsideRectangle(x, y, self.mRectP[i]): CGame().addChild(self.mBorderP[i]) else: CGame().removeChild(self.mBorderP[i]) else: self.mFlag = self.mFlag + 1 if self.mButtonTrue.mouseOver(): self.mButtonTrue.set_bgColor(OVER_COLOR) else: self.mButtonTrue.set_bgColor(NORMAL_COLOR) if self.mButtonFalse.mouseOver(): self.mButtonFalse.set_bgColor(OVER_COLOR) else: self.mButtonFalse.set_bgColor(NORMAL_COLOR) if self.mButtonTrue.clicked(): CGame().removeChild(self.mAlpha) self.mOverEnabled = True CGame().removeChild(self.mDialog) CGame().removeChild(self.mButtonTrue) CGame().removeChild(self.mButtonFalse) self.mButtonTrue.set_bgColor(NORMAL_COLOR) p = Partida() CGame().setPartida(self.mToDel, p) parNum = self.mToDel - 1 CGame().removeChild(self.mChar[parNum]) CGame().removeChild(self.mLabelP[parNum]) CGame().removeChild(self.mDeleteP[parNum]) self.mIsEmptyP[parNum] = True for e in self.mStarsP[parNum]: CGame().removeChild(e) CGame().addChild(self.mEmptyP[parNum]) self.mFlag = FLAG return if self.mButtonFalse.clicked(): CGame().removeChild(self.mAlpha) self.mOverEnabled = True CGame().removeChild(self.mDialog) CGame().removeChild(self.mButtonTrue) CGame().removeChild(self.mButtonFalse) self.mButtonFalse.set_bgColor(NORMAL_COLOR) self.mFlag = FLAG return def destroy(self): CGameState.destroy(self) CGame().removeChild(self.mButtonBack ) self.mButtonBack = None CGame().removeChild(self.mMessage) self.mMessage = None for i in range(3): CGame().removeChild(self.mPartida[i]) self.mPartida[i] = None CGame().removeChild(self.mBorderP[i]) self.mBorderP[i] = None CGame().removeChild(self.mLabelP[i]) self.mLabelP[i] = None CGame().removeChild(self.mChar[i]) self.mChar[i] = None CGame().removeChild(self.mEmptyP[i]) self.mEmptyP[i] = None CGame().removeChild(self.mDeleteP[i]) self.mDeleteP[i] = None for e in self.mStarsP[i]: CGame().removeChild(e) self.mStarsP[i] = None self.mBackground = None