"""Projection du deplacement d'un pion""" from PyQt4.QtCore import * from PyQt4.QtGui import * from Forme import Forme from Combattant import Combattant class ProjectionDep(): def __init__(self, plateau): self.plateau = plateau self._pion = None self._active = False self._coord = (-1,-1) self._forme = Forme(self.plateau.formeCases) self._nbRotations = 0 def creer(self, pion): self._forme.definirForme(pion.formeDef[self.plateau.formeCases]) self._coord = pion.position self._nbRotations = pion.nbRotations self._active = True def majCoord(self, coord): self.desactiver() self._coord = coord self.maj() def majRotation(self, modRotation): self.desactiver() self._nbRotations += modRotation self.maj() def coord(self): return self._coord def nbRotations(self): return self._nbRotations def desactiver(self): for coord in self._forme.listeCases(self._coord, self._nbRotations): if coord in self.plateau.cases: self.plateau.cases[coord].majEstCibleCurseur(False) self.active = False def projectionValide(self): """la projection est valide si toutes les cases de la forme existent""" for coord in self._forme.listeCases(self._coord, self._nbRotations): if not coord in self.plateau.cases: return False return True def deplacementValide(self): """le deplacement est valide si toutes les cases de la forme sont franchissables et pas occupees par un combattant""" if self.projectionValide(): for coord in self._forme.listeCases(self._coord, self._nbRotations): if not self.plateau.cases[coord].terrain.franchissable: return False if self.plateau.cases[coord].occupant(None, Combattant) != None: if self.plateau.cases[coord].occupant() != self._pion: return False return True def maj(self): self._active = True if self.projectionValide(): depValide = self.deplacementValide() i = 0 for coord in self._forme.listeCases(self._coord, self._nbRotations): i += 1 self.plateau.cases[coord].majEstCibleCurseur(True, depValide) def z(self): """renvoie l'altitude du pion qu'on deplace""" z = 0 try: z = self._pion.z except: pass return z