# -*- coding: latin-1 -*-
from Code.Traducir import tr

import Tareas

import QT.TabTipos as TabTipos

#--------------------------------------------------------------------------------------------------------------------------------
class Tutorial :
    def __init__( self ) :
        self.fichero = ""
        self.autor = ""
        self.descripcion = ""
        self.tamTablero = 0

        self.idUltimo = -1
        self.liEscenas = []
        self.liPFlechas = []
        self.liPMarcos = []
        self.liTPartidas = []
        self.liSonidos = []
        self.liVariables = []
        self.vTransicion = None
        self.pFlechaTransicion = None

    def dame_vTransicion( self ) :
        if self.vTransicion is None :
            v = Tareas.Variable( tr("TUT_VARIABLES_TRANSICION"), Tareas.VDECIMAL, 1.0 )
            v.id = self.idNuevo()
            self.vTransicion = v
            self.liVariables.append(v)
        return self.vTransicion

    def dame_pFlechaTransicion( self, configuracion ) :
        if self.pFlechaTransicion is None :
            bf = configuracion.cTableroN.fTransicion

            regFlecha = PFlecha()
            regFlecha.nombre = tr("TUT_FLECHA_TRANSICION")
            regFlecha.id = self.idNuevo()

            regFlecha.grosor = bf.grosor
            regFlecha.altocabeza = bf.altocabeza
            regFlecha.tipo=bf.tipo
            regFlecha.destino=bf.destino
            regFlecha.anchoCasilla=bf.anchoCasilla
            regFlecha.color=bf.color
            regFlecha.colorinterior=bf.colorinterior
            regFlecha.opacidad=bf.opacidad
            regFlecha.redondeos=bf.redondeos
            regFlecha.forma=bf.forma
            regFlecha.ancho=bf.ancho
            regFlecha.vuelo=bf.vuelo
            regFlecha.descuelgue=bf.descuelgue
            regFlecha.posicion.orden = bf.posicion.orden

            self.liPFlechas.append( regFlecha )
            self.pFlechaTransicion = regFlecha
            siCreada = True
        else :
            siCreada = False

        return siCreada, self.pFlechaTransicion

    def lee( self ) :
        pass
    def graba( self ) :
        pass
    def idNuevo(self) :
        self.idUltimo += 1
        return self.idUltimo

    def buscaIdPartida( self, unpgn ) :
        npart = TPartida()
        npart.dicCabeceras = unpgn.dic
        npart.partida = unpgn.partida
        for opart in self.liTPartidas :
            if opart == npart :
                return opart.id
        npart.id = self.idNuevo()
        self.liTPartidas.append(npart)
        return npart.id

    def dameFlecha( self, id ) :
        for flecha in self.liPFlechas :
            if flecha.id == id :
                return flecha
        return None

    def dameMarco( self, id ) :
        for marco in self.liPMarcos :
            if marco.id == id :
                return marco
        return None

#--------------------------------------------------------------------------------------------------------------------------------
class Escena :
    def __init__( self ) :
        self.id = None
        self.nombre = ""
        self.fen = None
        self.idPartida = None
        self.numjugada = None

        self.liTareas = []

#--------------------------------------------------------------------------------------------------------------------------------
class TPartida :
    def __init__( self ) :
        self.id = None
        self.dicCabeceras = None
        self.partida = None

    def nombre( self ) :
        g = self.dicCabeceras.get
        txt = "%s-%s"%(g( "WHITE", "?" ),g( "BLACK", "?"))
        txt += "· %s"%( g( "RESULT", "*" ), )
        txt += "· %s"%( g("DATE","?").replace( "?", "" ).replace( "--", "" ).replace( "//", "" ), )
        txt += "· %s"%( g( "EVENT", "" ) )
        if "ECO" in self.dicCabeceras :
            txt += "· %s"%( g( "ECO", "" ) )
        if "OPENING" in self.dicCabeceras :
            txt += "· %s"%( g( "OPENING", "" ) )
        if "FEN" in self.dicCabeceras :
            txt += "· %s"%( g( "FEN", "" ) )
        if len(txt) > 100 :
            txt = txt[:100] + "..."
        return txt

    def movimientos( self ) :
        txt = ""
        for jg in self.partida.liJugadas :
            txt += jg.movimientos()
        return txt

    def __equal__( self, otra ) :
        return self.movimientos() == otra.movimientos()

#--------------------------------------------------------------------------------------------------------------------------------
class PFlecha( TabTipos.Flecha ) :
    def __init__( self ) :
        TabTipos.Flecha.__init__( self )
        self.nombre = ""
        self.id = None

#--------------------------------------------------------------------------------------------------------------------------------
class PMarco( TabTipos.Marco ) :
    def __init__( self ) :
        TabTipos.Marco.__init__( self )
        self.nombre = ""
        self.id = None

