# -*- 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) class CSelectPartidaState(CGameState): def init(self): CGameState.__init__(self) self.mBackground = Image.loadImage('assets/images/selectArea/background.jpg', False) CGame().setBackground(self.mBackground) self.PARTIDA1_RECT = [(114, 254), (385, 625)] self.PARTIDA2_RECT = [(464, 254), (735, 625)] self.PARTIDA3_RECT = [(815, 254), (1086, 625)] self.mOverEnabled = True self.mToDel = None self.mFlag = 60 self.misEmptyP1 = True self.misEmptyP2 = True self.misEmptyP3 = True self.mP1_Stars = [] self.mP2_Stars = [] self.mP3_Stars = [] 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.mDeletePartida1 = CSprite(350, 240) self.mDeletePartida1.setImage(delete) self.mDeletePartida2 = CSprite(700, 240) self.mDeletePartida2.setImage(delete) self.mDeletePartida3 = CSprite(1050, 240) self.mDeletePartida3.setImage(delete) recuadro = Image.loadImage('assets/images/selectPartida/recuadro.png') self.mPartida1 = CSprite(114, 254) self.mPartida1.setImage(recuadro) CGame().addChild(self.mPartida1) border = Image.loadImage('assets/images/selectPartida/recuadro-interno2.png') self.mBorderPartida1 = CSprite(100, 240) self.mBorderPartida1.setImage(border) self.mPartida2 = CSprite(464, 254) self.mPartida2.setImage(recuadro) CGame().addChild(self.mPartida2) self.mBorderPartida2 = CSprite(450, 240) self.mBorderPartida2.setImage(border) self.mPartida3 = CSprite(815, 254) self.mPartida3.setImage(recuadro) CGame().addChild(self.mPartida3) self.mBorderPartida3 = CSprite(800, 240) self.mBorderPartida3.setImage(border) 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.mLabel1 = CLabel() self.mLabel1.bgColor = (218, 224, 152) self.mLabel1.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel1.font = font28 self.mLabel1.center = (250, 300) self.mLabel1.size = (150, 40) self.mLabel1.text = mes % 1 self.mLabel1._update_image() self.mLabel2 = CLabel() self.mLabel2.bgColor = (218, 224, 152) self.mLabel2.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel2.font = font28 self.mLabel2.center = (600, 300) self.mLabel2.size = (150, 40) self.mLabel2.text = mes % 2 self.mLabel2._update_image() self.mLabel3 = CLabel() self.mLabel3.bgColor = (218, 224, 152) self.mLabel3.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel3.font = font28 self.mLabel3.center = (950, 300) self.mLabel3.size = (150, 40) self.mLabel3.text = mes % 3 self.mLabel3._update_image() 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.mEmpty1 = CLabel() self.mEmpty1.bgColor = (218, 224, 152) self.mEmpty1.fgColor = (0xFF, 0xFF, 0xFF) self.mEmpty1.font = font28 self.mEmpty1.center = (250, 450) self.mEmpty1.size = (200, 40) self.mEmpty1.text = mes self.mEmpty1._update_image() self.mEmpty2 = CLabel() self.mEmpty2.bgColor = (218, 224, 152) self.mEmpty2.fgColor = (0xFF, 0xFF, 0xFF) self.mEmpty2.font = font28 self.mEmpty2.center = (600, 450) self.mEmpty2.size = (200, 40) self.mEmpty2.text = mes self.mEmpty2._update_image() self.mEmpty3 = CLabel() self.mEmpty3.bgColor = (218, 224, 152) self.mEmpty3.fgColor = (0xFF, 0xFF, 0xFF) self.mEmpty3.font = font28 self.mEmpty3.center = (950, 450) self.mEmpty3.size = (200, 40) self.mEmpty3.text = mes self.mEmpty3._update_image() self.mChar1 = CSprite(200, 310) self.mChar2 = CSprite(550, 310) self.mChar3 = CSprite(900, 310) ########################################################## par = CGame().getPartida(1) if (par == None) or par.isEmpty(): CGame().addChild(self.mEmpty1) else: self.misEmptyP1 = False CGame().addChild(self.mLabel1) CGame().addChild(self.mDeletePartida1, 1) if par.getCharacter() == 'Juan': self.mChar1.setImage(juan) else: self.mChar1.setImage(elisa) CGame().addChild(self.mChar1) #gets the area 1 levels a1 = par.getArea(1) for i in range(6): s = CSprite(150 + 30 * i, 510) if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP1_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite(150 + 30 * i, 540) if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP1_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite(150 + 30 * i, 570) if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP1_Stars.append(s) CGame().addChild(s) ########################################################## par = CGame().getPartida(2) if (par == None) or par.isEmpty(): CGame().addChild(self.mEmpty2) else: self.misEmptyP2 = False CGame().addChild(self.mLabel2) CGame().addChild(self.mDeletePartida2, 1) if par.getCharacter() == 'Juan': self.mChar2.setImage(juan) else: self.mChar2.setImage(elisa) CGame().addChild(self.mChar2) #gets the area 1 levels a1 = par.getArea(1) for i in range(6): s = CSprite(500 + 30 * i, 510) if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP2_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite(500 + 30 * i, 540) if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP2_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite(500 + 30 * i, 570) if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP2_Stars.append(s) CGame().addChild(s) ########################################################## par = CGame().getPartida(3) if (par == None) or par.isEmpty(): CGame().addChild(self.mEmpty3) else: self.misEmptyP3 = False CGame().addChild(self.mLabel3) CGame().addChild(self.mDeletePartida3, 1) if par.getCharacter() == 'Juan': self.mChar3.setImage(juan) else: self.mChar3.setImage(elisa) CGame().addChild(self.mChar3) #gets the area 1 levels a1 = par.getArea(1) for i in range(6): s = CSprite(850 + 30 * i, 510) if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP3_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite(850 + 30 * i, 540) if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP3_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite(850 + 30 * i, 570) if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) self.mP3_Stars.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 if self.mDeletePartida1.clicked(): self.mToDel = 1 self.addDialog() return if self.mDeletePartida2.clicked(): self.mToDel = 2 self.addDialog() return if self.mDeletePartida3.clicked(): self.mToDel = 3 self.addDialog() return if self.mOverEnabled: self.mFlag = self.mFlag - 1 if self.mFlag < 0: self.mFlag = 0 if self.mFlag == 0: if self.mPartida1.clicked(): if self.misEmptyP1: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) CGame().setCurrentPartida(1) return elif self.mPartida2.clicked(): if self.misEmptyP2: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) CGame().setCurrentPartida(2) return elif self.mPartida3.clicked(): if self.misEmptyP3: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) CGame().setCurrentPartida(3) return x = CMouse().getX() y = CMouse().getY() if (CMath.pointInsideRectangle(x,y,self.PARTIDA1_RECT)): CGame().addChild(self.mBorderPartida1) else: CGame().removeChild(self.mBorderPartida1) if (CMath.pointInsideRectangle(x,y,self.PARTIDA2_RECT)): CGame().addChild(self.mBorderPartida2) else: CGame().removeChild(self.mBorderPartida2) if (CMath.pointInsideRectangle(x,y,self.PARTIDA3_RECT)): CGame().addChild(self.mBorderPartida3) else: CGame().removeChild(self.mBorderPartida3) 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) if self.mToDel == 1: CGame().removeChild(self.mChar1) CGame().removeChild(self.mLabel1) CGame().removeChild(self.mDeletePartida1) self.misEmptyP1 = True for e in self.mP1_Stars: CGame().removeChild(e) CGame().addChild(self.mEmpty1) elif self.mToDel == 2: CGame().removeChild(self.mChar2) CGame().removeChild(self.mLabel2) CGame().removeChild(self.mDeletePartida2) self.misEmptyP2 = True for e in self.mP2_Stars: CGame().removeChild(e) CGame().addChild(self.mEmpty2) elif self.mToDel == 3: CGame().removeChild(self.mChar3) CGame().removeChild(self.mLabel3) CGame().removeChild(self.mDeletePartida3) self.misEmptyP3 = True for e in self.mP3_Stars: CGame().removeChild(e) CGame().addChild(self.mEmpty3) self.mFlag = 60 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 = 40 return def destroy(self): CGameState.destroy(self) CGame().removeChild(self.mButtonBack ) self.mButtonBack = None CGame().removeChild(self.mMessage) self.mMessage = None CGame().removeChild(self.mPartida1) self.mPartida1 = None CGame().removeChild(self.mBorderPartida1) self.mBorderPartida1 = None CGame().removeChild(self.mLabel1) self.mLabel1 = None CGame().removeChild(self.mChar1) self.mChar1 = None CGame().removeChild(self.mEmpty1) CGame().removeChild(self.mPartida2) self.mPartida2 = None CGame().removeChild(self.mBorderPartida2) self.mBorderPartida2 = None CGame().removeChild(self.mLabel2) self.mLabel2 = None CGame().removeChild(self.mChar2) self.mChar2 = None CGame().removeChild(self.mEmpty2) CGame().removeChild(self.mPartida3) self.mPartida3 = None CGame().removeChild(self.mBorderPartida3) self.mBorderPartida3 = None CGame().removeChild(self.mLabel3) self.mLabel3 = None CGame().removeChild(self.mChar3) self.mChar3 = None CGame().removeChild(self.mEmpty3) for e in self.mP1_Stars: CGame().removeChild(e) for e in self.mP2_Stars: CGame().removeChild(e) for e in self.mP3_Stars: CGame().removeChild(e) CGame().removeChild(self.mDeletePartida1) CGame().removeChild(self.mDeletePartida2) CGame().removeChild(self.mDeletePartida3) self.mBackground = None