# -*- coding: iso-8859-15 -*-
"""
 *
 * Pelaajien jono ja pelaajiin liittyvät toiminnot.
"""
from pelaaja import Pelaaja

class Pelaajat:

    def __init__(self):
        self.vuoro = 0;
        self.pelaajat = []
        pelaaja1 = Pelaaja()
        self.pelaajat.append(pelaaja1);
        pelaaja2 = Pelaaja()
        self.pelaajat.append(pelaaja2);
    
    def vaihdaVuoro(self):
        if (self.vuoro == 0):
            self.vuoro = 1
        else:
            self.vuoro = 0

    def vaihdaVaraukset(self, pallot):
        """
        * jos yritetään punaisia palloja saa lyöntipallo 
        * negatiivisen varauksen
        * samoin kuin musta pallo
        * vastaavasti jos
        * yritetään sinisiä palloja saa lyöntipallo 
        * positiivisen varauksen
        * samoin kuin musta pallo
        * @param pallot 
        """

        varaus = pallot.getPallojenPerusVaraus()
        if (self.getPelaaja().getYritanVaria() == "punainen"):
            pallot.getPallotArray()[1].setPalloVaraus(-varaus);
        if (self.getPelaaja().getYritanVaria() == "sininen"):
          pallot.getPallotArray()[1].setPalloVaraus(varaus);

    def getVuoro(self):
        return self.vuoro
    
    def getPelaaja(self):
        return self.pelaajat[self.vuoro]
    
    def alkaakoYrittaaMustaa(self, reiat):
        """     * jos omat pallot loppu aloittaa yrittaa mustaa
        """

        vari = self.getPelaaja().getYritanVaria();
        # jos ollaan vasta alussa ei voida yrittää mustaa
        if (vari =="enTieda"):
            return;
        pussissa = reiat.getMitaReiissa().get(vari);
        if ((self.getPelaaja().getPallojaJaljella() -
                reiat.getMitaReiissa().get(vari)) == 0):
            self.getPelaaja().setYritanMustaaPalloa(True)

    
    def tarkastaTilanne(self, reiat, pallot):
        """
        * Pallojen pysahdyttya tutkitaan mitä tapahtui
        * @param reiat kertovat mitä sisältävät
        * @return jatketaanko peliä
        """

        #mitään ei mennyt reikiin, vaihdetaan vuoro, peli jatkuu
        if (reiat.getEkanaReiassa() == "enTieda"):
            self.vaihdaVuoro();
            self.vaihdaVaraukset(pallot);
            return True
        
        # jos mustapallo meni reikään katsotaan kumpi voitti, peli ei jatku
        if (reiat.getMitaReiissa()['musta'] == 1):
            if (self.getPelaaja().getYritanMustaaPalloa()):
                self.getPelaaja().setVoittanut(True)
                self.vaihdaVuoro()
                self.getPelaaja().setHavinnyt(True);
                self.vaihdaVuoro();
            else:
                self.getPelaaja().setHavinnyt(True);
                self.vaihdaVuoro();
                self.getPelaaja().setVoittanut(True);
                self.vaihdaVuoro();
            return False
        
        # pelaajien värit asetaan 
        # ensimmäisen pussituksen mukaan. Peli jatkuu.
        if (self.getPelaaja().getYritanVaria() == "enTieda"):
            self.getPelaaja().setYritanVaria(reiat.getEkanaReiassa())
            # asetetaan toisen pelaajan tavoittelemien pallojen väri
            if (self.getPelaaja().getYritanVaria() == "sininen"):
                self.vaihdaVuoro()
                self.getPelaaja().setYritanVaria("punainen")
                self.vaihdaVuoro()
            elif (self.getPelaaja().getYritanVaria() == "punainen"):
                self.vaihdaVuoro()
                self.getPelaaja().setYritanVaria("sininen")
                self.vaihdaVuoro()
       ## jos valkoinen pallo reikään niin vuoro vaihtuu. Peli jatkuu
        if (reiat.getMitaReiissa()['valkoinen'] == 1):
            self.vaihdaVuoro()
            self.vaihdaVaraukset(pallot)
        
        # päivitetään pistetilanne
        
        return True

