Forráskód Böngészése

Création et validation du mode CreationPion

Signed-off-by: olinox <olinox14@yahoo.fr>
olinox 10 éve
szülő
commit
f804a9d8ac
7 módosított fájl, 88 hozzáadás és 104 törlés
  1. 1 0
      lib/Decor.py
  2. 9 9
      lib/EcranEditionDecors.py
  3. 23 8
      lib/Modes.py
  4. 31 85
      lib/Plateau.py
  5. BIN
      lib/biblio/decor
  6. 10 2
      lib/ui/ecran_principal.py
  7. 14 0
      lib/ui/mainwindow.ui

+ 1 - 0
lib/Decor.py

@@ -10,6 +10,7 @@ from Pion import Pion
 class Decor(Pion):
     """decor a placer sur le plateau"""
     def __init__(self, parent=None):
+        super(Decor, self).__init__()
         self.id = "00"
         self.escalade = False            #peut etre escalade
         self.franchissable = False       #peut etre traverse (ex: rideau, porte)

+ 9 - 9
lib/EcranEditionDecors.py

@@ -64,15 +64,15 @@ class EcranEditionDecors(QDialog):
             self.ui.affichageCouleurDecor.setStyleSheet("QLabel {backGround:%s}" %(self.decor.couleur.name()))
 
         self.ui.imgLogoDecor.setText(QString.fromUtf8(str(self.decor.logo)))
-        if self.decor.img["nom"] != self.decor.logo: 
-            self.ui.imgDecor.setText(QString.fromUtf8(str(self.decor.img["nom"])))
-        self.ui.imgTailleXDecor.setValue(self.decor.img["kx"])
-        self.ui.imgTailleYDecor.setValue(self.decor.img["ky"])
-        self.ui.imgPosXDecor.setValue(self.decor.img["dx"])
-        self.ui.imgPosYDecor.setValue(self.decor.img["dy"])
-        self.ui.imgRotationDecor.setValue(self.decor.img["rotation"])
-        self.ui.imgPivoteDecor.setChecked(self.decor.img["pivote"])
-        self.ui.imgMasqueDecor.setChecked(self.decor.img["masqueAuto"])
+        if self.decor.img.nom != self.decor.logo: 
+            self.ui.imgDecor.setText(QString.fromUtf8(str(self.decor.img.nom)))
+        self.ui.imgTailleXDecor.setValue(self.decor.img.kx)
+        self.ui.imgTailleYDecor.setValue(self.decor.img.ky)
+        self.ui.imgPosXDecor.setValue(self.decor.img.dx)
+        self.ui.imgPosYDecor.setValue(self.decor.img.dy)
+        self.ui.imgRotationDecor.setValue(self.decor.img.rotation)
+        self.ui.imgPivoteDecor.setChecked(self.decor.img.pivote)
+        self.ui.imgMasqueDecor.setChecked(self.decor.img.masqueAuto)
           
         self.ui.hauteurDecor.setValue(self.decor.hauteur)    
         self.ui.couvertDecor.setChecked(self.decor.couvert)

+ 23 - 8
lib/Modes.py

@@ -120,7 +120,7 @@ class Standard(ModeBase):
         super(Standard, self).__init__(plateau)
         self._sourceCurseur = ""
         self._focus = False
-        self.activerDragMode = True
+        self._activerDragMode = True
 
     def clic_pion(self, num):
         pass
@@ -261,6 +261,7 @@ class EntreesSorties(ModeBase):
 
     def toucheClavier(self, event):
         if event.key() == Qt.Key_Delete:
+            #supprimer l'es
             self.desactiver()
         elif event.key() == Qt.Key_Right:
             self.es.nbRotations += 1
@@ -273,20 +274,34 @@ class EntreesSorties(ModeBase):
 class CreationPion(ModeBase):
     """mode de creation de pions (combattant ou decor)"""
     def __init__(self, plateau):
-        super(EntreesSorties, self).__init__(plateau)
+        super(CreationPion, self).__init__(plateau)
         self._focus = True
-        self.param = None
+        self._pion = None
 
+    def activer(self, pion):
+        self._pion = pion
+        self.plateau.proj.creer(self._pion)
+        super(CreationPion, self).activer()
         
-
     def desactiver(self):
-        self.plateau.majProjectionPosition(False)
-
-
-
+        self.plateau.proj.desactiver()
+        self._pion = None
+        super(CreationPion, self).desactiver()
 
+    def survol_case(self, coord):
+        if self._pion:
+            self.plateau.proj.majCoord(coord)
 
+    def clic_case(self, coord):
+        if self._pion:
+            self.plateau.creerPion(self._pion)
 
+    def toucheClavier(self, event):
+        if self._pion:
+            if event.key() == Qt.Key_Right:
+                self.plateau.proj.majRotation(1)
+            elif event.key() == Qt.Key_Left:
+                self.plateau.proj.majRotation(-1)
 
 
 

+ 31 - 85
lib/Plateau.py

@@ -214,8 +214,8 @@ class Plateau(QGraphicsScene):
         self.fenetre.connect(self.fenetre.ui.cp_nouveauTerrain, SIGNAL("clicked()"), self.terrainNouveau, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_editerCombattant, SIGNAL("clicked()"), self.creatureEdit, Qt.UniqueConnection)
         self.fenetre.connect(self.fenetre.ui.cp_nouveauCombattant, SIGNAL("clicked()"), self.creatureNouveau, Qt.UniqueConnection)
-##        self.fenetre.connect(self.fenetre.ui.decorEdit, SIGNAL("clicked()"), self.decorEdit, Qt.UniqueConnection)
-##        self.fenetre.connect(self.fenetre.ui.decorNouveau, SIGNAL("clicked()"), self.decorNouveau, Qt.UniqueConnection)
+        self.fenetre.connect(self.fenetre.ui.cp_editerDecor, SIGNAL("clicked()"), self.decorEdit, Qt.UniqueConnection)
+        self.fenetre.connect(self.fenetre.ui.cp_nouveauDecor, SIGNAL("clicked()"), self.decorNouveau, Qt.UniqueConnection)
 ##        self.fenetre.connect(self.fenetre.ui.editerAttaques, SIGNAL("clicked()"), self.afficheEcranEditionAttaques, Qt.UniqueConnection)
 
         #creation
@@ -292,7 +292,7 @@ class Plateau(QGraphicsScene):
         self.modeActif_old = ""
         self.pinceau = Pinceau(self)
         self.proj = ProjectionDep(self)
-        self.modeParam = {"numPionSelectionne": 0, "pionNouveau": None, "creature": None, "decor": None, \
+        self.modeParam = {"numPionSelectionne": 0, "creature": None, "decor": None, \
                           "formeCoordEnCours": (0,0), \
                           "zoneAttaqueCaC": [], "cibleAttaqueCaC": None, "cibleAttaqueDist": None, "pionCibleAttaqueDist": None, "ligneAttaqueDist": None, \
                           "typeAttaqueZone": "", "formeAttaqueZone": None, "origineAttaqueZone": None, "point2AttaqueZone": None, \
@@ -563,14 +563,14 @@ class Plateau(QGraphicsScene):
         """enclenche le mode de creation de decors depuis la liste des decors"""
         index = self.fenetre.ui.cp_listeDecors.item(ligne, 0)
         decor = charger("lib\\biblio\\decor", str(index.text().toUtf8()))
-        self.majMode("pionDecorCreation", decor)
+        self.activerMode(Modes.CreationPion, decor)
         self.fenetre.ui.cbt_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.majMode("pionCreation", creature)
+        self.activerMode(Modes.CreationPion, creature)
         self.fenetre.ui.cbt_vue.setFocus()
 
     def modeMajTerrainCase(self, ligne, col):
@@ -648,36 +648,17 @@ class Plateau(QGraphicsScene):
             self.pionDecorSelectionne().afficheOmbreSelection(False)
             self.modeParam["numPionSelectionne"] = 0
 
-        if self.modeActif_old == "pionSelectionne" or self.modeActif_old == "pionCreation" or \
-           self.modeActif_old == "pionDecorSelectionne" or self.modeActif_old == "pionDecorCreation":  
+        if self.modeActif_old == "pionSelectionne" or self.modeActif_old == "pionDecorSelectionne":  
             self.proj.desactiver()
                 
-        if self.modeActif_old[0:7] == "caseMaj" or self.modeActif_old == "cachePlacer" or self.modeActif_old == "majZonePlacement":
+        if self.modeActif_old == "cachePlacer":
             self.pinceau.reinit()
-
-        if self.modeActif_old == "placementEntreeSortie":            
-            if self.modeParam["entreeSortie"] != None:
-                self.modeParam["entreeSortie"].prepareGeometryChange()
-                self.removeItem(self.modeParam["entreeSortie"])
-                self.modeParam["entreeSortie"] = None
    
         ### definition du nouveau mode
         if mode != "standard":
             self.modeActif_old = mode
             reinit = False
-            if mode == "caseMajTerrain":
-                #curseur pinceau, on ajoute des terrains au cases
-                if param != None:
-                    self.curseurPinceau()
-                    self.fenetre.ui.cbt_vue.setDragMode(0)
-                    self.modeParam["terrain"] = param
-                    
-            elif mode == "caseCopie":
-                #curseur seringue, on 'preleve' le terrain sur la case cliquee, avant de passer en mode majTerrain
-                self.curseurSeringue()
-                self.fenetre.ui.cbt_vue.setDragMode(0)
-
-            elif mode == "caseMajEffet":
+            if mode == "caseMajEffet":
                 #on met a jour l'effet actif sur les cases
                 if param != None:
                     self.curseurPinceau()
@@ -692,16 +673,7 @@ class Plateau(QGraphicsScene):
                 self.curseurPinceau()
                 self.fenetre.ui.cbt_vue.setDragMode(0)
                 self.pinceau.majForme("rectP")
-                self.pinceau.verrouillerForme(True)
-
-            elif mode == "majZonePlacement":
-                self.curseurPinceau()
-                self.fenetre.ui.cbt_vue.setDragMode(0)
-                self.pinceau.majForme("rectP")
-                self.pinceau.verrouillerForme(True)
-
-            elif mode == "placementEntreeSortie":
-                self.fenetre.ui.cbt_vue.setDragMode(0)               
+                self.pinceau.verrouillerForme(True)      
                 
             elif mode == "pionDecorCreation":
                 #curseur 'plus', on cree de nouveaux decors
@@ -720,15 +692,6 @@ class Plateau(QGraphicsScene):
                     self.pionDecorSelectionne().afficheOmbreSelection(True)
                     self.fenetre.ui.cbt_vue.setCursor(QCursor(Qt.ArrowCursor))
                     self.proj.creer(self.pionDecorSelectionne())
-
-            elif mode == "pionCreation":
-                #curseur 'plus', on cree de nouveaux pions
-                self.modeParam["creature"] = None
-                self.fenetre.ui.cbt_vue.setDragMode(0)
-                if param != None:
-                    if param.__class__.__name__ == "Combattant":
-                         self.modeParam["creature"] = param
-                         self.proj.creer(param)
                 
             elif mode == "pionSupprimer":
                 #mode suppression de pions/pions decors
@@ -1697,13 +1660,6 @@ class Plateau(QGraphicsScene):
                     self.validerAttaqueZone()
                     accepte = True
                     
-            elif self.modeActif_old == "pionCreation":
-                self.pionCreer(coord)
-                accepte = True
-                
-            elif self.modeActif_old == "pionDecorCreation":
-                self.pionDecorCreer(coord)
-                accepte = True    
         return accepte       
 
     def caseSurvolClicEnfonce(self, coord):
@@ -1787,26 +1743,30 @@ class Plateau(QGraphicsScene):
             accepte = True
         return accepte          
 
-    def pionCreer(self, coordCase):
-        """creer un jeton aux coordonnees indiquees"""
-        valide = True
-        self.proj.majCoord(coordCase)
-
+    def creerPion(self, pion):
+        """creer un pion (combattant ou decor) aux coordonnees indiquees"""
+        cree = False
         if self.proj.projectionValide():
-            numero = 1
-            if len(self.combattants) > 0:
-                numero = max(self.combattants) + 1
-                
-            combattant = self.modeParam["creature"]
-            numComplementaire = self.numeroterNom(combattant.nom)
-            combattant.numero = numero
-            combattant.position = self.proj.coord()
-            combattant.numComplementaire = numComplementaire
-            combattant.nbRotations = self.proj.nbRotations()
-            combattant.ajouterAuPlateau(self)
+            pion.position = self.proj.coord()
+            pion.nbRotations = self.proj.nbRotations()
+            pion.ajouterAuPlateau(self)
+
+            if pion.__class__.__name__ == "Combattant":
+                numero = 1
+                if len(self.combattants) > 0:
+                    numero = max(self.combattants) + 1
+                pion.numero = numero    
+                pion.numComplementaire = self.numeroterNom(pion.nom)    
+                self.combattants[numero] = pion
+                self.pionDeplacerDansOrdreJeu(numero, len(self.ordreJeu) + 2)
+            elif pion.__class__.__name__ == "Decor":
+                numero = 10001
+                if len(self.decors) > 0:
+                    numero = max(self.decors) + 10001
+                self.decors[numero] = pion
             
-            self.combattants[numero] = combattant
-            self.pionDeplacerDansOrdreJeu(numero, len(self.ordreJeu) + 2)
+            cree = True
+        return cree            
 
     def numeroterNom(self, nom):
         """renvoie le nom du pion avec un numero complementaire si necessaire """
@@ -1922,20 +1882,6 @@ class Plateau(QGraphicsScene):
         """affiche ou non les cases a portee du pion selectionne pour une attaque au corps-a-corps"""
         for coord in self.modeParam["zoneAttaqueCaC"]:
             self.cases[coord].majEstDansChampDeplacement(actif)
-
-    def pionDecorCreer(self, coordCase):
-        """creer un jeton aux coordonnees indiquees"""
-        if self.proj.deplacementValide:  
-            numero = 10001
-            if len(self.decors) > 0:
-                numero = max(self.decors) + 10001 
-            decor = self.modeParam["decor"]
-            decor.numero = numero
-            decor.position = self.proj.coord()
-            decor.nbRotations = self.proj.nbRotations()
-            decor.ajouterAuPlateau(self)
-            self.decors[numero] = decor
-
             
     def pionSupprimer(self, num):
         """supprime le pion entre en parametre"""

BIN
lib/biblio/decor


+ 10 - 2
lib/ui/ecran_principal.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'mainwindow.ui'
 #
-# Created: Wed May 20 11:09:16 2015
+# Created: Wed May 27 17:12:49 2015
 #      by: PyQt4 UI code generator 4.10.4
 #
 # WARNING! All changes made in this file will be lost!
@@ -632,6 +632,12 @@ class Ui_principal(object):
         self.cp_listeDecors.horizontalHeader().setVisible(False)
         self.cp_listeDecors.verticalHeader().setVisible(False)
         self.verticalLayout_7.addWidget(self.cp_listeDecors)
+        self.cp_nouveauDecor = QtGui.QPushButton(self.cp_afficherDecors)
+        self.cp_nouveauDecor.setObjectName(_fromUtf8("cp_nouveauDecor"))
+        self.verticalLayout_7.addWidget(self.cp_nouveauDecor)
+        self.cp_editerDecor = QtGui.QPushButton(self.cp_afficherDecors)
+        self.cp_editerDecor.setObjectName(_fromUtf8("cp_editerDecor"))
+        self.verticalLayout_7.addWidget(self.cp_editerDecor)
         icon20 = QtGui.QIcon()
         icon20.addPixmap(QtGui.QPixmap(_fromUtf8("img/decor.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
         self.cp_ongletsListes.addTab(self.cp_afficherDecors, icon20, _fromUtf8(""))
@@ -1339,7 +1345,7 @@ class Ui_principal(object):
 
         self.retranslateUi(principal)
         self.dm_panneauCentre.setCurrentIndex(0)
-        self.cp_ongletsListes.setCurrentIndex(2)
+        self.cp_ongletsListes.setCurrentIndex(1)
         self.pi_ongletsListes.setCurrentIndex(0)
         self.tabStatutAppli.setCurrentIndex(2)
         QtCore.QMetaObject.connectSlotsByName(principal)
@@ -1437,6 +1443,8 @@ class Ui_principal(object):
         item.setText(_translate("principal", "code", None))
         item = self.cp_listeDecors.horizontalHeaderItem(1)
         item.setText(_translate("principal", "Decor", None))
+        self.cp_nouveauDecor.setText(_translate("principal", "Nouveau", None))
+        self.cp_editerDecor.setText(_translate("principal", "Editer", None))
         self.cp_ongletsListes.setTabToolTip(self.cp_ongletsListes.indexOf(self.cp_afficherDecors), _translate("principal", "Afficher la liste des décors", None))
         item = self.cp_listeCreatures.horizontalHeaderItem(0)
         item.setText(_translate("principal", "code", None))

+ 14 - 0
lib/ui/mainwindow.ui

@@ -1986,6 +1986,20 @@
                      </column>
                     </widget>
                    </item>
+                   <item>
+                    <widget class="QPushButton" name="cp_nouveauDecor">
+                     <property name="text">
+                      <string>Nouveau</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QPushButton" name="cp_editerDecor">
+                     <property name="text">
+                      <string>Editer</string>
+                     </property>
+                    </widget>
+                   </item>
                   </layout>
                  </widget>
                  <widget class="QWidget" name="cp_afficherCreatures">