| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- """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
-
-
|