|
|
@@ -20,6 +20,9 @@ class ModeBase(object):
|
|
|
#met le focus sur la QGraphicsView a l'activation
|
|
|
self._focus = False
|
|
|
|
|
|
+ def nom(self):
|
|
|
+ return self.__class__.__name__
|
|
|
+
|
|
|
def activer(self, param = None):
|
|
|
"""active le mode"""
|
|
|
self.activerCurseur()
|
|
|
@@ -40,8 +43,9 @@ class ModeBase(object):
|
|
|
def activerCurseur(self):
|
|
|
self.plateau.fenetre.ui.cbt_vue.setDragMode(self._activerDragMode)
|
|
|
curseurPix = QPixmap(self._sourceCurseur)
|
|
|
- curseurPinceau = QCursor(curseurPix, 0, curseurPix.height())
|
|
|
- self.plateau.fenetre.ui.cbt_vue.setCursor(curseurPinceau)
|
|
|
+ if not curseurPix.isNull():
|
|
|
+ curseurPinceau = QCursor(curseurPix, 0, curseurPix.height())
|
|
|
+ self.plateau.fenetre.ui.cbt_vue.setCursor(curseurPinceau)
|
|
|
|
|
|
def desactiverCurseur(self):
|
|
|
self.plateau.fenetre.ui.cbt_vue.setCursor(QCursor(Qt.ArrowCursor))
|
|
|
@@ -109,15 +113,28 @@ class ModeBase(object):
|
|
|
|
|
|
def toucheClavier(self, event):
|
|
|
pass
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+class ModeBaseCp(ModeBase):
|
|
|
+ """mode servant de base a tous les modes lies a la creation de plateau"""
|
|
|
+ def __init__(self, plateau):
|
|
|
+ super(ModeBaseCp, self).__init__(plateau)
|
|
|
+ self.type = "cp"
|
|
|
+
|
|
|
+
|
|
|
+class ModeBasePi(ModeBase):
|
|
|
+ """mode servant de base a tous les modes lies aux actions des combattants"""
|
|
|
+ def __init__(self, plateau):
|
|
|
+ super(ModeBasePi, self).__init__(plateau)
|
|
|
+ self.type = "pi"
|
|
|
|
|
|
### --------------------------------------- ####
|
|
|
|
|
|
|
|
|
-class Standard(ModeBase):
|
|
|
- """mode standard"""
|
|
|
+class StandardCp(ModeBaseCp):
|
|
|
+ """mode standard en creation de plateau"""
|
|
|
def __init__(self, plateau):
|
|
|
- super(Standard, self).__init__(plateau)
|
|
|
+ super(StandardCp, self).__init__(plateau)
|
|
|
self._sourceCurseur = ""
|
|
|
self._focus = False
|
|
|
self._activerDragMode = True
|
|
|
@@ -126,7 +143,7 @@ class Standard(ModeBase):
|
|
|
pass
|
|
|
#doit selectionner le pion
|
|
|
|
|
|
-class MajCases(ModeBase):
|
|
|
+class MajCases(ModeBaseCp):
|
|
|
"""mode de mise a jour des cases (terrain, couleur, effet special)"""
|
|
|
def __init__(self, plateau):
|
|
|
super(MajCases, self).__init__(plateau)
|
|
|
@@ -177,10 +194,10 @@ class MajCases(ModeBase):
|
|
|
elif event.key() == Qt.Key_Down:
|
|
|
self.plateau.fenetre.ui.epaisseurPinceau.setValue(self.plateau.fenetre.ui.epaisseurPinceau.value()-1)
|
|
|
|
|
|
-class Pipette(ModeBase):
|
|
|
+class Pipette(ModeBaseCp):
|
|
|
"""mode pipette: on preleve la couleur ou le terrain d'une case"""
|
|
|
def __init__(self, plateau):
|
|
|
- super(ZonePlacement, self).__init__(plateau)
|
|
|
+ super(Pipette, self).__init__(plateau)
|
|
|
self._sourceCurseur = "img\\curseurSeringue.png"
|
|
|
|
|
|
def activerCurseur(self):
|
|
|
@@ -194,7 +211,7 @@ class Pipette(ModeBase):
|
|
|
self.plateau.activerMode(Modes.CaseMaj, param)
|
|
|
|
|
|
|
|
|
-class ZonePlacement(ModeBase):
|
|
|
+class ZonePlacement(ModeBaseCp):
|
|
|
"""mode de definition de la/les zones de placement des joueurs"""
|
|
|
def __init__(self, plateau):
|
|
|
super(ZonePlacement, self).__init__(plateau)
|
|
|
@@ -226,7 +243,7 @@ class ZonePlacement(ModeBase):
|
|
|
self.plateau.majZonePlacement(self.plateau.pinceau.selection())
|
|
|
|
|
|
|
|
|
-class EntreesSorties(ModeBase):
|
|
|
+class EntreesSorties(ModeBaseCp):
|
|
|
"""mode de definition deentrees et sorties du plateau"""
|
|
|
def __init__(self, plateau):
|
|
|
super(EntreesSorties, self).__init__(plateau)
|
|
|
@@ -271,7 +288,7 @@ class EntreesSorties(ModeBase):
|
|
|
self.es.majProjection()
|
|
|
|
|
|
|
|
|
-class CreationPion(ModeBase):
|
|
|
+class CreationPion(ModeBaseCp):
|
|
|
"""mode de creation de pions (combattant ou decor)"""
|
|
|
def __init__(self, plateau):
|
|
|
super(CreationPion, self).__init__(plateau)
|
|
|
@@ -304,7 +321,7 @@ class CreationPion(ModeBase):
|
|
|
self.plateau.proj.majRotation(-1)
|
|
|
|
|
|
|
|
|
-class SuppressionPion(ModeBase):
|
|
|
+class SuppressionPion(ModeBaseCp):
|
|
|
"""mode de suppression de pions (combattant ou decor)"""
|
|
|
def __init__(self, plateau):
|
|
|
super(SuppressionPion, self).__init__(plateau)
|
|
|
@@ -320,6 +337,65 @@ class SuppressionPion(ModeBase):
|
|
|
self.plateau.pionSupprimer(item.parentItem().numero)
|
|
|
|
|
|
|
|
|
+class DeplacementPion(ModeBaseCp):
|
|
|
+ """mode de deplacement de pions (combattant ou decor) en mode creation
|
|
|
+ attention: different des actions de type deplacement qu'effectuent les pions en mode Combat"""
|
|
|
+ def __init__(self, plateau):
|
|
|
+ super(DeplacementPion, self).__init__(plateau)
|
|
|
+ self._num = 0
|
|
|
+
|
|
|
+ def activer(self, num):
|
|
|
+ self._num = num
|
|
|
+ if self._num < 10000:
|
|
|
+ pion = self.plateau.combattants[self._num]
|
|
|
+ else:
|
|
|
+ pion = self.plateau.decors[self._num]
|
|
|
+ self.plateau.proj.creer(pion)
|
|
|
+ self.deplace = False
|
|
|
+ super(DeplacementPion, self).activer()
|
|
|
+
|
|
|
+ def desactiver(self):
|
|
|
+ self.plateau.proj.desactiver()
|
|
|
+ self._num = 0
|
|
|
+ super(DeplacementPion, self).desactiver()
|
|
|
+
|
|
|
+ def survol_case(self, coord):
|
|
|
+ if self._num > 0:
|
|
|
+ self.plateau.proj.majCoord(coord)
|
|
|
+ self.deplace = True
|
|
|
+
|
|
|
+ def clic_case(self, coord):
|
|
|
+ if self._num > 0:
|
|
|
+ if self.deplace:
|
|
|
+ if self._num < 10000:
|
|
|
+ pion = self.plateau.combattants[self._num]
|
|
|
+ else:
|
|
|
+ pion = self.plateau.decors[self._num]
|
|
|
+ pion.majPosition(self.plateau.proj.coord(), self.plateau.proj.nbRotations())
|
|
|
+
|
|
|
+ def toucheClavier(self, event):
|
|
|
+ if self._num > 0:
|
|
|
+ if event.key() == Qt.Key_Right:
|
|
|
+ self.plateau.proj.majRotation(1)
|
|
|
+ self.deplace = True
|
|
|
+ elif event.key() == Qt.Key_Left:
|
|
|
+ self.plateau.proj.majRotation(-1)
|
|
|
+ self.deplace = True
|
|
|
+
|
|
|
+
|
|
|
+#-----------------------------------------------
|
|
|
+#-----------------------------------------------
|
|
|
+
|
|
|
+class StandardPi(ModeBasePi):
|
|
|
+ """mode standard de la manipulation de pion en combat"""
|
|
|
+ def __init__(self, plateau):
|
|
|
+ super(StandardPi, self).__init__(plateau)
|
|
|
+ self._focus = False
|
|
|
+ self._activerDragMode = True
|
|
|
+
|
|
|
+ def clic_pion(self, num):
|
|
|
+ pass
|
|
|
+ #doit selectionner le pion
|
|
|
|
|
|
|
|
|
|