瀏覽代碼

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

unknown 10 年之前
父節點
當前提交
578c423d3c
共有 3 個文件被更改,包括 26 次插入57 次删除
  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):
         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):
             self.plateau.combattants[numCombattant].estCibleAttaque(actif)    
 
@@ -359,6 +359,15 @@ class Ligne(Zone):
                 if coord!= None and coord != self.plateau.pionSelectionne().position:
                     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):
     """attaque de zone de forme circulaire"""
     def __init__(self):

+ 8 - 48
lib/Case.py

@@ -22,12 +22,10 @@ class Case(QGraphicsPolygonItem):
         self.terrain = Terrain()                       #terrain par defaut 
         self.couleur = None                            #couleur du fond 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.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.ombre = True       #ombre (cache les pions uniquement)  
 
         #effet sur la case 
         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))
 ##        else:
 ##            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.creer()
@@ -116,25 +109,6 @@ class Case(QGraphicsPolygonItem):
         self.polygoneCible.setVisible(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):
 ##        self.plateau = plateau  #refPlateau
         self.plateau = plateau
@@ -145,7 +119,11 @@ class Case(QGraphicsPolygonItem):
         self.etiquetteAltitude = None
         
         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):
         """renvoie l'objet graphique hexagone de la case"""
@@ -187,10 +165,6 @@ class Case(QGraphicsPolygonItem):
      
     ########################
 
-
-
-
-
     ### deplacement
     def estFranchissable(self, z=0):
         """la case est-elle franchissable?"""
@@ -207,9 +181,7 @@ class Case(QGraphicsPolygonItem):
         #capacites de deplacement du pion actuellement selectionne
         return 1
 
-
-
-    ### pour le combat
+    ### occupation
     def majOccupation(self, objet, nouveauZ = None):
         """met a jour l'occupation de la case par les pions, decors..."""
         if objet != None:
@@ -251,6 +223,8 @@ class Case(QGraphicsPolygonItem):
                 retour = objet
         return retour          
 
+
+    #autres interaction de combat
     def estObstacleVision(self, hauteurObs):
         """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"""
@@ -266,15 +240,10 @@ class Case(QGraphicsPolygonItem):
                 retour = True
         return retour                
 
-
-
-
-
     ########## fonctions de maj ###########
     def majCouleur(self, couleur):
         self.couleur = couleur
         self.setBrush(couleur)
-        self.polygoneChampDep.setBrush(self.couleurDep())
         pinceau = QPen()
         pinceau.setColor(self.couleurBordure())
         pinceau.setWidth(1)
@@ -289,7 +258,6 @@ class Case(QGraphicsPolygonItem):
                 if self.terrain.couleur.isValid():
                      self.setBrush(QBrush(self.terrain.couleur))
                      self.couleur = self.terrain.couleur
-                     self.polygoneChampDep.setBrush(self.couleurDep())
         else:
             self.terrain = Terrain()
 
@@ -300,14 +268,6 @@ class Case(QGraphicsPolygonItem):
             un cout de 0 fait disparaitre ce symbole"""
         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):
         """affiche la case comme etant la cible du curseur (lors d'une creation de pion, d'un deplacement...)"""
         if actif:

+ 8 - 8
lib/Plateau.py

@@ -320,7 +320,7 @@ class Plateau(QGraphicsScene):
 
     def chercherCouleur(self):
         """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
 
 ##    def majBoutonsCaches(self):
@@ -590,14 +590,14 @@ class Plateau(QGraphicsScene):
         index = self.fenetre.ui.cp_listeDecors.item(ligne, 0)
         decor = charger("lib\\biblio\\decor", str(index.text().toUtf8()))
         self.activerMode(Modes.CreationPion, decor)
-        self.fenetre.ui.cbt_vue.setFocus()
+        self.vue().setFocus()
         
     def modeCreationCombattant(self, ligne, col):
         """enclenche le mode de creation de pions depuis la liste des creatures"""
         index = self.fenetre.ui.cp_listeCreatures.item(ligne, 0)
         creature = charger("lib\\biblio\\combattant", str(index.text().toUtf8()))
         self.activerMode(Modes.CreationPion, creature)
-        self.fenetre.ui.cbt_vue.setFocus()
+        self.vue().setFocus()
 
     def modeMajTerrainCase(self, ligne, col):
         """enclenche le mode permettant la mise a jour du terrain des cases"""
@@ -695,7 +695,7 @@ class Plateau(QGraphicsScene):
     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"""
         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)
 
     def pionSuivant(self):
@@ -719,7 +719,7 @@ class Plateau(QGraphicsScene):
             if int(item.text().toUtf8()) == numCombattant:
                 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)        
  
     def afficheEcranGestionCombat(self):
@@ -1083,7 +1083,7 @@ class Plateau(QGraphicsScene):
         """renvoie les coordonnees de la case situee au QPointF entre en parametre"""
         coord = None
         if point != None:
-            lstObjets = self.fenetre.ui.cbt_vue.scene().items(point)
+            lstObjets = self.vue().scene().items(point)
             for objet in lstObjets:
                 if objet:
                     if objet.__class__.__name__ == "Case":
@@ -1414,7 +1414,7 @@ class Plateau(QGraphicsScene):
         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
             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
             #for coord in self.caches[self.cacheEnCours]["listeCases"]:
             #    self.
@@ -1441,7 +1441,7 @@ class Plateau(QGraphicsScene):
     ######### gestion des evenements souris et clavier ###############
     def mouseMoveEvent(self, 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())
             if coord != None:
                 self.caseSurvolClicEnfonce(coord)