# -*- 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() self.mButtonBack.setRegistrationPointOffset(22, 22) self.mButtonBack.setXY(1170, 30) self.mButtonBack.setImage(self.mBackImageN) CGame().addChild(self.mButtonBack) delete = Image.loadImage('assets/images/selectPartida/delete.png') self.mDeletePartida1 = CSprite() self.mDeletePartida1.setXY(350, 240) self.mDeletePartida1.setImage(delete) self.mDeletePartida2 = CSprite() self.mDeletePartida2.setXY(700, 240) self.mDeletePartida2.setImage(delete) self.mDeletePartida3 = CSprite() self.mDeletePartida3.setXY(1050, 240) self.mDeletePartida3.setImage(delete) recuadro = Image.loadImage('assets/images/selectPartida/recuadro.png') self.mPartida1 = CSprite() self.mPartida1.setXY(114, 254) self.mPartida1.setImage(recuadro) CGame().addChild(self.mPartida1) border = Image.loadImage('assets/images/selectPartida/recuadro-interno2.png') self.mBorderPartida1 = CSprite() self.mBorderPartida1.setXY(100, 240) self.mBorderPartida1.setImage(border) self.mPartida1Is = False self.mPartida2 = CSprite() self.mPartida2.setXY(464, 254) self.mPartida2.setImage(recuadro) CGame().addChild(self.mPartida2) self.mBorderPartida2 = CSprite() self.mBorderPartida2.setXY(450, 240) self.mBorderPartida2.setImage(border) self.mPartida2Is = False self.mPartida3 = CSprite() self.mPartida3.setXY(815, 254) self.mPartida3.setImage(recuadro) CGame().addChild(self.mPartida3) self.mBorderPartida3 = CSprite() self.mBorderPartida3.setXY(800, 240) self.mBorderPartida3.setImage(border) self.mPartida3Is = False mes = _('Selecciona una partida') self.mMessage = CLabel() self.mMessage.bgColor = NORMAL_COLOR self.mMessage.fgColor = (0xFF, 0xFF, 0xFF) self.mMessage.set_font('DejaVuSans.ttf', 28) self.mMessage.set_center((600, 150)) self.mMessage.set_size((400, 40)) self.mMessage.set_text(unicode(mes, 'UTF-8')) CGame().addChild(self.mMessage) mes = unicode(_('Partida %s'), 'UTF-8') self.mLabel1 = CLabel() #self.mLabel1.bgColor = (255, 125, 50) self.mLabel1.bgColor = (218, 224, 152) self.mLabel1.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel1.set_font('DejaVuSans.ttf', 28) self.mLabel1.set_center((250, 300)) self.mLabel1.set_size((150, 40)) self.mLabel1.set_text(mes % 1) #CGame().addChild(self.mLabel1) self.mLabel2 = CLabel() self.mLabel2.bgColor = (218, 224, 152) self.mLabel2.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel2.set_font('DejaVuSans.ttf', 28) self.mLabel2.set_center((600, 300)) self.mLabel2.set_size((150, 40)) self.mLabel2.set_text(mes % 2) #CGame().addChild(self.mLabel2) self.mLabel3 = CLabel() self.mLabel3.bgColor = (218, 224, 152) self.mLabel3.fgColor = (0xFF, 0xFF, 0xFF) self.mLabel3.set_font('DejaVuSans.ttf', 28) self.mLabel3.set_center((950, 300)) self.mLabel3.set_size((150, 40)) self.mLabel3.set_text(mes % 3) #CGame().addChild(self.mLabel3) 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.set_font('DejaVuSans.ttf', 28) self.mEmpty1.set_center((250, 450)) self.mEmpty1.set_size((200, 40)) self.mEmpty1.set_text(mes) #CGame().addChild(self.mEmpty1) self.mEmpty2 = CLabel() self.mEmpty2.bgColor = (218, 224, 152) self.mEmpty2.fgColor = (0xFF, 0xFF, 0xFF) self.mEmpty2.set_font('DejaVuSans.ttf', 28) self.mEmpty2.set_center((600, 450)) self.mEmpty2.set_size((200, 40)) self.mEmpty2.set_text(mes) #CGame().addChild(self.mEmpty2) self.mEmpty3 = CLabel() self.mEmpty3.bgColor = (218, 224, 152) self.mEmpty3.fgColor = (0xFF, 0xFF, 0xFF) self.mEmpty3.set_font('DejaVuSans.ttf', 28) self.mEmpty3.set_center((950, 450)) self.mEmpty3.set_size((200, 40)) self.mEmpty3.set_text(mes) #CGame().addChild(self.mEmpty3) self.mChar1 = CSprite() self.mChar1.setXY(200, 310) self.mChar2 = CSprite() self.mChar2.setXY(550, 310) self.mChar3 = CSprite() self.mChar3.setXY(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() if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(150 + 30 * i, 510) self.mP1_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite() if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(150 + 30 * i, 540) self.mP1_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite() if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(150 + 30 * i, 570) 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() if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(500 + 30 * i, 510) self.mP2_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite() if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(500 + 30 * i, 540) self.mP2_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite() if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(500 + 30 * i, 570) 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() if a1[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(850 + 30 * i, 510) self.mP3_Stars.append(s) CGame().addChild(s) #gets the area 2 levels a2 = par.getArea(2) for i in range(6): s = CSprite() if a2[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(850 + 30 * i, 540) self.mP3_Stars.append(s) CGame().addChild(s) #gets the area 3 levels a3 = par.getArea(3) for i in range(6): s = CSprite() if a3[i] == 0: s.setImage(star1) else: s.setImage(star2) s.setXY(850 + 30 * i, 570) 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() self.mAlpha.setXY(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.set_bgColor(NORMAL_COLOR) self.mButtonTrue.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mButtonTrue.set_center((460, 400)) self.mButtonTrue.set_size((200, 40)) self.mButtonTrue.set_text(_('Aceptar')) self.mButtonFalse = CButton() self.mButtonFalse.set_bgColor(NORMAL_COLOR) self.mButtonFalse.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 28) self.mButtonFalse.set_center((740, 400)) self.mButtonFalse.set_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): #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(): 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(): print "partida 1" if self.misEmptyP1: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) ch.setPartida(1) return elif self.mPartida2.clicked(): print "partida 2" if self.misEmptyP2: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) ch.setPartida(2) return elif self.mPartida3.clicked(): print "partida 3" if self.misEmptyP3: ch = CSelectCharacterState() else: ch = CSelectAreaState() CGame().setState(ch) ch.setPartida(3) return x = CMouse().getX() y = CMouse().getY() if (CMath.pointInsideRectangle(x,y,self.PARTIDA1_RECT)): if not(self.mPartida1Is): self.mPartida1Is = True CGame().addChild(self.mBorderPartida1) return else: if self.mPartida1Is: self.mPartida1Is = False CGame().removeChild(self.mBorderPartida1) return if (CMath.pointInsideRectangle(x,y,self.PARTIDA2_RECT)): if not(self.mPartida2Is): self.mPartida2Is = True CGame().addChild(self.mBorderPartida2) return else: if self.mPartida2Is: self.mPartida2Is = False CGame().removeChild(self.mBorderPartida2) return if (CMath.pointInsideRectangle(x,y,self.PARTIDA3_RECT)): if not(self.mPartida3Is): self.mPartida3Is = True CGame().addChild(self.mBorderPartida3) return else: if self.mPartida3Is: self.mPartida3Is = False CGame().removeChild(self.mBorderPartida3) return 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) 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.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 print "CMenuState destroy"