Parcourir la source

dans Plateau: self.vue() remplace self.fenetre.ui.cbt_vue

unknown il y a 10 ans
Parent
commit
578c423d3c
3 fichiers modifiés avec 26 ajouts et 57 suppressions
  1. 10 1
      lib/Actions.py
  2. 8 48
      lib/Case.py
  3. 8 8
      lib/Plateau.py

+ 10 - 1
lib/Actions.py

@@ -307,7 +307,7 @@ class Zone(Attaque):
 
 
     def afficherCibles(self, actif):
     def afficherCibles(self, actif):
         for coord in self._casesCibles:
         for coord in self._casesCibles:
-            self.plateau.cases[coord].majEstCibleAttaque(actif)
+            self.plateau.cases[coord].majEstCibleCurseur(actif)
         for numCombattant in self.plateau.pionsSurListeCase(self._casesCibles):
         for numCombattant in self.plateau.pionsSurListeCase(self._casesCibles):
             self.plateau.combattants[numCombattant].estCibleAttaque(actif)    
             self.plateau.combattants[numCombattant].estCibleAttaque(actif)    
 
 
@@ -359,6 +359,15 @@ class Ligne(Zone):
                 if coord!= None and coord != self.plateau.pionSelectionne().position:
                 if coord!= None and coord != self.plateau.pionSelectionne().position:
                     self._casesCibles.append(coord)  
                     self._casesCibles.append(coord)  
 
 
+    def estValide(self):
+        retour = True
+        for coord in self._casesCibles:
+            if self.plateau.cases[coord].estObstacleVision():
+                retour = False
+                break
+        return retour
+            
+
 class Disque(Zone):
 class Disque(Zone):
     """attaque de zone de forme circulaire"""
     """attaque de zone de forme circulaire"""
     def __init__(self):
     def __init__(self):

+ 8 - 48
lib/Case.py

@@ -22,12 +22,10 @@ class Case(QGraphicsPolygonItem):
         self.terrain = Terrain()                       #terrain par defaut 
         self.terrain = Terrain()                       #terrain par defaut 
         self.couleur = None                            #couleur du fond par defaut
         self.couleur = None                            #couleur du fond par defaut
         self.bordure = QColor(85, 85, 85, 85)          #couleur de la bordure par defaut
         self.bordure = QColor(85, 85, 85, 85)          #couleur de la bordure par defaut
-        self.estDansChampDeplacement = False           #la case est dans le champ de deplacement du pion selectionne
         self.centreGraphique = None
         self.centreGraphique = None
 
 
         self.occupeePar = {}    #objet: altitudes occupees (sous forme de tuple, ex: (0,1,2) pour une creature occupant les cases d'altitude 0, 1 et 2)
         self.occupeePar = {}    #objet: altitudes occupees (sous forme de tuple, ex: (0,1,2) pour une creature occupant les cases d'altitude 0, 1 et 2)
         self.estCache = False   #est sous un cache place par le MJ (cache le terrain, les decors, les pions aux joueurs...)
         self.estCache = False   #est sous un cache place par le MJ (cache le terrain, les decors, les pions aux joueurs...)
-        self.ombre = True       #ombre (cache les pions uniquement)  
 
 
         #effet sur la case 
         #effet sur la case 
         self.effetActif = "" 
         self.effetActif = "" 
@@ -99,11 +97,6 @@ class Case(QGraphicsPolygonItem):
 ##            text.setPos(QPointF(((self.x*0.866)+0.2886)*self.plateau.hCase,  self.y*self.plateau.hCase))
 ##            text.setPos(QPointF(((self.x*0.866)+0.2886)*self.plateau.hCase,  self.y*self.plateau.hCase))
 ##        else:
 ##        else:
 ##            text.setPos(QPointF(self.x*self.plateau.hCase,  self.y*self.plateau.hCase))
 ##            text.setPos(QPointF(self.x*self.plateau.hCase,  self.y*self.plateau.hCase))
-        
-        #polygone utilise lorsque dans champ de deplacement 
-        self.polygoneChampDep = QGraphicsPolygonItem(self.polygone(self.x, self.y), parent=self)
-        self.polygoneChampDep.setVisible(False)
-        self.polygoneChampDep.setAcceptHoverEvents(False)
 
 
         self.logoDep = LogoDep(self)
         self.logoDep = LogoDep(self)
         self.logoDep.creer()
         self.logoDep.creer()
@@ -116,25 +109,6 @@ class Case(QGraphicsPolygonItem):
         self.polygoneCible.setVisible(False)
         self.polygoneCible.setVisible(False)
         self.polygoneCible.setAcceptHoverEvents(False)
         self.polygoneCible.setAcceptHoverEvents(False)
 
 
-        #polygone test (pour capter les evts souris par dessus d'autres objets)
-##        self.polygoneTest = QGraphicsPolygonItem(self.polygone(self.x, self.y), parent=self)
-##        self.polygoneTest.setVisible(True)
-##        self.polygoneTest.setAcceptHoverEvents(True)
-##        self.polygoneTest.setFlag(QGraphicsItem.ItemIsFocusable)
-##        self.polygoneTest.setBrush(QColor(0,0,0,0))
-##        self.polygoneTest.setPen(QPen(QColor(0,0,0,0)))
-##        self.polygoneTest.setAcceptedMouseButtons(Qt.NoButton)
-##        self.polygoneTest.setZValue(200)
-##        self.polygoneTest.setParentItem(self)
-
-    def majGraphique(self):
-        """met a jour l'aspect graphique de la acse en fonction de son etat"""
-        if self.terrain:
-            if len(self.terrain.nom) > 0 : 
-                self.majTerrain(self.terrain)   
-        self.majAffichageSpecial("")
-        self.majEffet(self.effetActif)
-
     def recreer(self, plateau):
     def recreer(self, plateau):
 ##        self.plateau = plateau  #refPlateau
 ##        self.plateau = plateau  #refPlateau
         self.plateau = plateau
         self.plateau = plateau
@@ -145,7 +119,11 @@ class Case(QGraphicsPolygonItem):
         self.etiquetteAltitude = None
         self.etiquetteAltitude = None
         
         
         self.creerGraphique()
         self.creerGraphique()
-        self.majGraphique()
+        if self.terrain:
+            if len(self.terrain.nom) > 0 : 
+                self.majTerrain(self.terrain)   
+        self.majAffichageSpecial("")
+        self.majEffet(self.effetActif)
 
 
     def polygone(self, x, y):
     def polygone(self, x, y):
         """renvoie l'objet graphique hexagone de la case"""
         """renvoie l'objet graphique hexagone de la case"""
@@ -187,10 +165,6 @@ class Case(QGraphicsPolygonItem):
      
      
     ########################
     ########################
 
 
-
-
-
-
     ### deplacement
     ### deplacement
     def estFranchissable(self, z=0):
     def estFranchissable(self, z=0):
         """la case est-elle franchissable?"""
         """la case est-elle franchissable?"""
@@ -207,9 +181,7 @@ class Case(QGraphicsPolygonItem):
         #capacites de deplacement du pion actuellement selectionne
         #capacites de deplacement du pion actuellement selectionne
         return 1
         return 1
 
 
-
-
-    ### pour le combat
+    ### occupation
     def majOccupation(self, objet, nouveauZ = None):
     def majOccupation(self, objet, nouveauZ = None):
         """met a jour l'occupation de la case par les pions, decors..."""
         """met a jour l'occupation de la case par les pions, decors..."""
         if objet != None:
         if objet != None:
@@ -251,6 +223,8 @@ class Case(QGraphicsPolygonItem):
                 retour = objet
                 retour = objet
         return retour          
         return retour          
 
 
+
+    #autres interaction de combat
     def estObstacleVision(self, hauteurObs):
     def estObstacleVision(self, hauteurObs):
         """renvoie vrai si la case et l'eventuel decor qui l'occupe bloquent le champ de
         """renvoie vrai si la case et l'eventuel decor qui l'occupe bloquent le champ de
            vision d'un observateur situe a la hauteur precisee"""
            vision d'un observateur situe a la hauteur precisee"""
@@ -266,15 +240,10 @@ class Case(QGraphicsPolygonItem):
                 retour = True
                 retour = True
         return retour                
         return retour                
 
 
-
-
-
-
     ########## fonctions de maj ###########
     ########## fonctions de maj ###########
     def majCouleur(self, couleur):
     def majCouleur(self, couleur):
         self.couleur = couleur
         self.couleur = couleur
         self.setBrush(couleur)
         self.setBrush(couleur)
-        self.polygoneChampDep.setBrush(self.couleurDep())
         pinceau = QPen()
         pinceau = QPen()
         pinceau.setColor(self.couleurBordure())
         pinceau.setColor(self.couleurBordure())
         pinceau.setWidth(1)
         pinceau.setWidth(1)
@@ -289,7 +258,6 @@ class Case(QGraphicsPolygonItem):
                 if self.terrain.couleur.isValid():
                 if self.terrain.couleur.isValid():
                      self.setBrush(QBrush(self.terrain.couleur))
                      self.setBrush(QBrush(self.terrain.couleur))
                      self.couleur = self.terrain.couleur
                      self.couleur = self.terrain.couleur
-                     self.polygoneChampDep.setBrush(self.couleurDep())
         else:
         else:
             self.terrain = Terrain()
             self.terrain = Terrain()
 
 
@@ -300,14 +268,6 @@ class Case(QGraphicsPolygonItem):
             un cout de 0 fait disparaitre ce symbole"""
             un cout de 0 fait disparaitre ce symbole"""
         self.logoDep.afficher(cout, valide)
         self.logoDep.afficher(cout, valide)
 
 
-    def majEstDansChampDeplacement(self, actif):
-        """la case apparait ou pas comme etant dans le champ de deplacement d'un pion"""
-        self.polygoneChampDep.setVisible(actif)
-
-    def majEstCibleAttaque(self, actif):
-        """la case apparait ou pas comme etant dans le champ de deplacement d'un pion"""
-        self.polygoneChampDep.setVisible(actif)
-
     def majEstCibleCurseur(self, actif, valide=True):
     def majEstCibleCurseur(self, actif, valide=True):
         """affiche la case comme etant la cible du curseur (lors d'une creation de pion, d'un deplacement...)"""
         """affiche la case comme etant la cible du curseur (lors d'une creation de pion, d'un deplacement...)"""
         if actif:
         if actif:

+ 8 - 8
lib/Plateau.py

@@ -320,7 +320,7 @@ class Plateau(QGraphicsScene):
 
 
     def chercherCouleur(self):
     def chercherCouleur(self):
         """ouvre la boite de dialogue de selection de couleur"""
         """ouvre la boite de dialogue de selection de couleur"""
-        couleur = QColorDialog(self.fenetre.ui.cbt_vue).getColor(QColor("white"), self.fenetre.ui.cbt_vue)
+        couleur = QColorDialog(self.vue()).getColor(QColor("white"), self.vue())
         return couleur
         return couleur
 
 
 ##    def majBoutonsCaches(self):
 ##    def majBoutonsCaches(self):
@@ -590,14 +590,14 @@ class Plateau(QGraphicsScene):
         index = self.fenetre.ui.cp_listeDecors.item(ligne, 0)
         index = self.fenetre.ui.cp_listeDecors.item(ligne, 0)
         decor = charger("lib\\biblio\\decor", str(index.text().toUtf8()))
         decor = charger("lib\\biblio\\decor", str(index.text().toUtf8()))
         self.activerMode(Modes.CreationPion, decor)
         self.activerMode(Modes.CreationPion, decor)
-        self.fenetre.ui.cbt_vue.setFocus()
+        self.vue().setFocus()
         
         
     def modeCreationCombattant(self, ligne, col):
     def modeCreationCombattant(self, ligne, col):
         """enclenche le mode de creation de pions depuis la liste des creatures"""
         """enclenche le mode de creation de pions depuis la liste des creatures"""
         index = self.fenetre.ui.cp_listeCreatures.item(ligne, 0)
         index = self.fenetre.ui.cp_listeCreatures.item(ligne, 0)
         creature = charger("lib\\biblio\\combattant", str(index.text().toUtf8()))
         creature = charger("lib\\biblio\\combattant", str(index.text().toUtf8()))
         self.activerMode(Modes.CreationPion, creature)
         self.activerMode(Modes.CreationPion, creature)
-        self.fenetre.ui.cbt_vue.setFocus()
+        self.vue().setFocus()
 
 
     def modeMajTerrainCase(self, ligne, col):
     def modeMajTerrainCase(self, ligne, col):
         """enclenche le mode permettant la mise a jour du terrain des cases"""
         """enclenche le mode permettant la mise a jour du terrain des cases"""
@@ -695,7 +695,7 @@ class Plateau(QGraphicsScene):
     def clicListOrdreJeu(self, ligne, col):
     def clicListOrdreJeu(self, ligne, col):
         """on a clique dans la liste d'ordre de jeu, le pion correspondant est selectionne et centre sur la carte"""
         """on a clique dans la liste d'ordre de jeu, le pion correspondant est selectionne et centre sur la carte"""
         numCombattant = int(self.fenetre.ui.inf_listeOrdreJeu.item(ligne, 0).text().toUtf8())  
         numCombattant = int(self.fenetre.ui.inf_listeOrdreJeu.item(ligne, 0).text().toUtf8())  
-        self.fenetre.ui.cbt_vue.centerOn(self.cases[self.combattants[numCombattant].position].centreGraphique)
+        self.vue().centerOn(self.cases[self.combattants[numCombattant].position].centreGraphique)
         self.pionSaisir(numCombattant)
         self.pionSaisir(numCombattant)
 
 
     def pionSuivant(self):
     def pionSuivant(self):
@@ -719,7 +719,7 @@ class Plateau(QGraphicsScene):
             if int(item.text().toUtf8()) == numCombattant:
             if int(item.text().toUtf8()) == numCombattant:
                 self.fenetre.ui.inf_listeOrdreJeu.scrollToItem(item)
                 self.fenetre.ui.inf_listeOrdreJeu.scrollToItem(item)
 
 
-        self.fenetre.ui.cbt_vue.centerOn(self.cases[self.combattants[numCombattant].position].centreGraphique)
+        self.vue().centerOn(self.cases[self.combattants[numCombattant].position].centreGraphique)
         self.pionSaisir(numCombattant)        
         self.pionSaisir(numCombattant)        
  
  
     def afficheEcranGestionCombat(self):
     def afficheEcranGestionCombat(self):
@@ -1083,7 +1083,7 @@ class Plateau(QGraphicsScene):
         """renvoie les coordonnees de la case situee au QPointF entre en parametre"""
         """renvoie les coordonnees de la case situee au QPointF entre en parametre"""
         coord = None
         coord = None
         if point != None:
         if point != None:
-            lstObjets = self.fenetre.ui.cbt_vue.scene().items(point)
+            lstObjets = self.vue().scene().items(point)
             for objet in lstObjets:
             for objet in lstObjets:
                 if objet:
                 if objet:
                     if objet.__class__.__name__ == "Case":
                     if objet.__class__.__name__ == "Case":
@@ -1414,7 +1414,7 @@ class Plateau(QGraphicsScene):
         if len(self.caches[self.cacheEnCours]["listeCases"]) > 0: 
         if len(self.caches[self.cacheEnCours]["listeCases"]) > 0: 
             #centre la vue sur le premier point du polygone d'une case du milieu de la liste
             #centre la vue sur le premier point du polygone d'une case du milieu de la liste
             indiceMilieu = int((len(self.caches[self.cacheEnCours]["listeCases"])/2))
             indiceMilieu = int((len(self.caches[self.cacheEnCours]["listeCases"])/2))
-            self.fenetre.ui.cbt_vue.centerOn(self.cases[self.caches[self.cacheEnCours]["listeCases"][indiceMilieu]].polygon()[0])
+            self.vue().centerOn(self.cases[self.caches[self.cacheEnCours]["listeCases"][indiceMilieu]].polygon()[0])
             #mettre en surbrillance
             #mettre en surbrillance
             #for coord in self.caches[self.cacheEnCours]["listeCases"]:
             #for coord in self.caches[self.cacheEnCours]["listeCases"]:
             #    self.
             #    self.
@@ -1441,7 +1441,7 @@ class Plateau(QGraphicsScene):
     ######### gestion des evenements souris et clavier ###############
     ######### gestion des evenements souris et clavier ###############
     def mouseMoveEvent(self, event):
     def mouseMoveEvent(self, event):
         super(Plateau, self).mouseMoveEvent(event)
         super(Plateau, self).mouseMoveEvent(event)
-        if event.buttons() == Qt.LeftButton and self.fenetre.ui.cbt_vue.dragMode() != QGraphicsView.ScrollHandDrag:
+        if event.buttons() == Qt.LeftButton and self.vue().dragMode() != QGraphicsView.ScrollHandDrag:
             coord = self.coordonneesAuPoint(event.scenePos())
             coord = self.coordonneesAuPoint(event.scenePos())
             if coord != None:
             if coord != None:
                 self.caseSurvolClicEnfonce(coord)  
                 self.caseSurvolClicEnfonce(coord)