|
|
@@ -239,13 +239,6 @@ class Plateau(QGraphicsScene):
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_formeEllipsePlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_formeRectVide, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_formeRectPlein, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_effets, SIGNAL("activated (int)"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
-
|
|
|
-## self.fenetre.connect(self.fenetre.ui.effFeu, SIGNAL("clicked()"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.effEau, SIGNAL("clicked()"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.effGlace, SIGNAL("clicked()"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.effPoison, SIGNAL("clicked()"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.effEffacer, SIGNAL("clicked()"), self.modeCaseEffet, Qt.UniqueConnection)
|
|
|
|
|
|
self.fenetre.connect(self.fenetre.ui.pi_deplacement, SIGNAL("clicked()"), self.majModeCombatDeplacement, Qt.UniqueConnection)
|
|
|
self.fenetre.connect(self.fenetre.ui.pi_attaqueCac, SIGNAL("clicked()"), self.majModeCombatAttaqueCaC, Qt.UniqueConnection)
|
|
|
@@ -954,12 +947,6 @@ class Plateau(QGraphicsScene):
|
|
|
self.pionSelectionne().notes = str(self.fenetre.ui.pi_notes.toPlainText().toUtf8())
|
|
|
else:
|
|
|
pass
|
|
|
-
|
|
|
-## def afficherNotesCombattant(self):
|
|
|
-## """affiche les notes du pion selectionne dans le QTextEdit dedie"""
|
|
|
-## self.fenetre.ui.pi_notes.setVisible((self.pionSelectionne() != None))
|
|
|
-## if self.pionSelectionne() != None:
|
|
|
-## self.fenetre.ui.pi_notes.setText(QString.fromUtf8(self.pionSelectionne().notes))
|
|
|
|
|
|
###############
|
|
|
|
|
|
@@ -972,60 +959,24 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
def majInfosCase(self, case=None):
|
|
|
self.fenetre.ui.inf_boiteCase.maj(case)
|
|
|
-
|
|
|
-## def majInfosPion(self, pionSurvole=None):
|
|
|
-## """met a jour les informations d'un pion dans la zone prevue"""
|
|
|
-## if pionSurvole != None:
|
|
|
-## pion = pionSurvole
|
|
|
-## else:
|
|
|
-## if self.pionSelectionne() != None:
|
|
|
-## pion = self.pionSelectionne()
|
|
|
-## else:
|
|
|
-## pion = None
|
|
|
-##
|
|
|
-## if pion != None:
|
|
|
-## self.fenetre.ui.inf_pionNom.majTexte(pion.nom)
|
|
|
-## if len(pion.img.nomFichier) > 0:
|
|
|
-## pix = QPixmap(QString.fromUtf8("img\\"+pion.img.nomFichier))
|
|
|
-## pix = pix.scaled(61, 51, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
|
-## self.fenetre.ui.inf_pionImage.setPixmap(pix)
|
|
|
-## self.fenetre.ui.inf_boitePion.setVisible(True)
|
|
|
-## self.fenetre.ui.inf_pionEffet.setVisible(False)
|
|
|
-## else:
|
|
|
-## self.fenetre.ui.inf_boitePion.setVisible(False)
|
|
|
-##
|
|
|
-## def majInfosCase(self, case=None):
|
|
|
-## """met a jour les informations d'un pion dans la zone prevue"""
|
|
|
-## if case != None:
|
|
|
-## if len(case.terrain.nom) > 0:
|
|
|
-## self.fenetre.ui.inf_caseTerrain.majTexte(case.terrain.nom)
|
|
|
-## else:
|
|
|
-## self.fenetre.ui.inf_caseTerrain.majTexte("Case")
|
|
|
-## self.fenetre.ui.inf_caseCoord.majTexte("X: {} Y: {}".format(case.x, case.y))
|
|
|
-## self.fenetre.ui.inf_caseAltitude.majTexte("Alt.: {}".format(case.altitude))
|
|
|
-## if case.effetActif != "":
|
|
|
-## pix = QPixmap(QString.fromUtf8("img\\"+case.imgEffet[case.effetActif]))
|
|
|
-## pix = pix.scaled(21, 21, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
|
-## self.fenetre.ui.inf_caseEffet.setPixmap(pix)
|
|
|
-## else:
|
|
|
-## self.fenetre.ui.inf_caseEffet.clear()
|
|
|
-## self.fenetre.ui.inf_boiteCase.setVisible(True)
|
|
|
-## else:
|
|
|
-## self.fenetre.ui.inf_boiteCase.setVisible(False)
|
|
|
-##
|
|
|
-## def majInfosDecor(self, pionDecor=None):
|
|
|
-## """met a jour les informations d'un pion dans la zone prevue"""
|
|
|
-## if pionDecor != None:
|
|
|
-## self.fenetre.ui.inf_decorNom.majTexte(pionDecor.nom)
|
|
|
-## if len(pionDecor.img.nom) > 0:
|
|
|
-## pix = QPixmap(QString.fromUtf8("img\\"+pionDecor.img.nom))
|
|
|
-## pix = pix.scaled(61, 51, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
|
-## self.fenetre.ui.infoDecorEnCours_image.setPixmap(pix)
|
|
|
-## self.fenetre.ui.inf_boiteDecor.setVisible(True)
|
|
|
-## else:
|
|
|
-## self.fenetre.ui.inf_boiteDecor.setVisible(False)
|
|
|
|
|
|
############### fonctions de calcul ################
|
|
|
+ def coordonneesValides(self, coord):
|
|
|
+ """les coordonnees entrees en parametre sont elles celles d'une case du plateau"""
|
|
|
+ return (coord[0] >= 0 and coord[1] >= 0 and coord[0] < self.nbCasesX and coord[1] < self.nbCasesY)
|
|
|
+
|
|
|
+ def lstCoordAdjacentes(self, x, y):
|
|
|
+ """renvoie la liste des coordonnees adjacentes, !!!! sans condition d'existence sur le plateau !!!!
|
|
|
+ attention: l'ordre est important"""
|
|
|
+ if self.formeCases == "H":
|
|
|
+ if 1 == (x % 2):
|
|
|
+ voisins = [(x, y-1), (x+1, y), (x+1, y+1), (x, y+1), (x-1, y+1), (x-1, y)]
|
|
|
+ else:
|
|
|
+ voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x, y+1), (x-1, y), (x-1, y-1)]
|
|
|
+ else:
|
|
|
+ voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x+1, y+1), (x, y+1), (x-1, y+1), (x-1, y), (x-1, y-1)]
|
|
|
+ return voisins
|
|
|
+
|
|
|
def zone(self, origine, distance, z=0, conditionFranchissable = False, conditionVisible = False):
|
|
|
"""renvoie un dictionnaire representant la liste des coordonnees des cases comprises dans la zone
|
|
|
la zone en question est la liste des cases situees a une distance d des coordonnees d'origine
|
|
|
@@ -1064,10 +1015,6 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
return resultat
|
|
|
|
|
|
- def coordonneesValides(self, coord):
|
|
|
- """les coordonnees entrees en parametre sont elles celles d'une case du plateau"""
|
|
|
- return (coord[0] >= 0 and coord[1] >= 0 and coord[0] < self.nbCasesX and coord[1] < self.nbCasesY)
|
|
|
-
|
|
|
def polygoneAgglo(self, listeCases):
|
|
|
"""renvoie un polygone contruit par agglomeration des polygones des cases de la liste
|
|
|
les cases doivent etre adjacentes (cases hexagonales ou carrees)"""
|
|
|
@@ -1123,18 +1070,6 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
return polygone
|
|
|
|
|
|
- def lstCoordAdjacentes(self, x, y):
|
|
|
- """renvoie la liste des coordonnees adjacentes, !!!! sans condition d'existence sur le plateau !!!!
|
|
|
- attention: l'ordre est important"""
|
|
|
- if self.formeCases == "H":
|
|
|
- if 1 == (x % 2):
|
|
|
- voisins = [(x, y-1), (x+1, y), (x+1, y+1), (x, y+1), (x-1, y+1), (x-1, y)]
|
|
|
- else:
|
|
|
- voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x, y+1), (x-1, y), (x-1, y-1)]
|
|
|
- else:
|
|
|
- voisins = [(x, y-1), (x+1, y-1), (x+1, y), (x+1, y+1), (x, y+1), (x-1, y+1), (x-1, y), (x-1, y-1)]
|
|
|
- return voisins
|
|
|
-
|
|
|
def coordCentreListeCases(self, listeCases):
|
|
|
"""renvoie les coordonnees centrales d'une liste de cases"""
|
|
|
retour = None
|
|
|
@@ -1226,9 +1161,8 @@ class Plateau(QGraphicsScene):
|
|
|
preSelection.append(coord)
|
|
|
else:
|
|
|
preSelection = self.cases
|
|
|
- return preSelection
|
|
|
-
|
|
|
-
|
|
|
+ return preSelection
|
|
|
+
|
|
|
|
|
|
def estCibleAttaqueDistValide(self, coordOrigine, coordCible, zPion = 0):
|
|
|
"""la case cible est elle valide pour une attaque a distance depuis la position et hauteur
|
|
|
@@ -1278,7 +1212,6 @@ class Plateau(QGraphicsScene):
|
|
|
valide = False
|
|
|
break
|
|
|
return valide
|
|
|
-
|
|
|
|
|
|
def pionSurCase(self, coord):
|
|
|
"""renvoie le pion present sur la case, none sinon"""
|
|
|
@@ -1339,14 +1272,6 @@ class Plateau(QGraphicsScene):
|
|
|
retour = self.modeActif.pion()
|
|
|
return retour
|
|
|
|
|
|
- def pionDecorSelectionne(self):
|
|
|
- """renvoie le pion actuellement selectionne"""
|
|
|
- if self.modeParam["numPionSelectionne"] in self.decors:
|
|
|
- retour = self.decors[self.modeParam["numPionSelectionne"]]
|
|
|
- else:
|
|
|
- retour = None
|
|
|
- return retour
|
|
|
-
|
|
|
def caseCliquee(self, x, y):
|
|
|
"""on a clique sur la case (clic gauche)"""
|
|
|
coord = (x, y)
|
|
|
@@ -1374,20 +1299,28 @@ class Plateau(QGraphicsScene):
|
|
|
else:
|
|
|
self.modeActif.clic_decor(num)
|
|
|
|
|
|
- def pionSurvol(self, numCombattant):
|
|
|
+ def combattantSurvol(self, num):
|
|
|
"""le pion est survole par le curseur, on affiche ses informations dans la zone prevue"""
|
|
|
- self.modeActif.survol_combattant(numCombattant)
|
|
|
+ if num in self.combattants:
|
|
|
+ self.modeActif.survol_combattant(num)
|
|
|
+ pion = self.combattants[num]
|
|
|
+ self.majInfosCombattant(pion)
|
|
|
+ self.caseSurvol(pion.position[0], pion.position[1])
|
|
|
+ else:
|
|
|
+ self.modeActif.finSurvol_combattant(num)
|
|
|
+ self.majInfosCombattant(None)
|
|
|
|
|
|
- if numCombattant in self.combattants:
|
|
|
- pion = self.combattants[numCombattant]
|
|
|
+ def decorSurvol(self, num):
|
|
|
+ """le pion est survole par le curseur, on affiche ses informations dans la zone prevue"""
|
|
|
+ if num in self.decors:
|
|
|
+ self.modeActif.survol_decor(num)
|
|
|
+ pion = self.decors[num]
|
|
|
+ self.majInfosDecor(pion)
|
|
|
+ self.caseSurvol(pion.position[0], pion.position[1])
|
|
|
else:
|
|
|
- pion = None
|
|
|
+ self.modeActif.finSurvol_decor(num)
|
|
|
+ self.majInfosDecor(None)
|
|
|
|
|
|
- self.majInfosCombattant(pion)
|
|
|
-
|
|
|
- if numCombattant in self.combattants:
|
|
|
- self.caseSurvol(self.combattants[numCombattant].position[0], self.combattants[numCombattant].position[1])
|
|
|
-
|
|
|
def pionDoubleClic(self, numCombattant):
|
|
|
"""on a double-clique sur le pion"""
|
|
|
self.modeActif.doubleClic_combattant(numCombattant)
|
|
|
@@ -1443,8 +1376,6 @@ class Plateau(QGraphicsScene):
|
|
|
"""on depose le pion sur la case voulue"""
|
|
|
if self.pionSelectionne() != None:
|
|
|
pion = self.pionSelectionne()
|
|
|
- else:
|
|
|
- pion = self.pionDecorSelectionne()
|
|
|
|
|
|
if pion != None:
|
|
|
if self.proj.projectionValide():
|
|
|
@@ -1455,36 +1386,6 @@ class Plateau(QGraphicsScene):
|
|
|
if self.pionSelectionne() != None:
|
|
|
self.pionSelectionne().majZ(valeur)
|
|
|
|
|
|
- def pionDecorSurvol(self, numPionDecor):
|
|
|
- """le pion-decor est survole par le curseur, on affiche ses informations dans la zone prevue"""
|
|
|
- if numPionDecor in self.decors:
|
|
|
- self.majInfosDecor(self.decors[numPionDecor])
|
|
|
- else:
|
|
|
- self.majInfosDecor(None)
|
|
|
-
|
|
|
- def pionDecorSaisir(self, numPionDecor):
|
|
|
- """on saisit un pion decor (mode creation seulement)"""
|
|
|
- if numPionDecor != self.modeParam["numPionSelectionne"]:
|
|
|
- self.majMode("pionDecorSelectionne", numPionDecor)
|
|
|
-
|
|
|
-
|
|
|
- def majProjectionAttaqueCaC(self, pionCible):
|
|
|
- """affiche ou non la cible de l'attaque au corps a corps, selon sa validite ou non"""
|
|
|
- if self.modeActif_old == "pionSelectionne" and self.modeCombat == "combatAttaqueCaC":
|
|
|
- if pionCible != self.pionSelectionne():
|
|
|
- if pionCible != None:
|
|
|
- conditionPossible = (pionCible.position in self.modeParam["zoneAttaqueCaC"])
|
|
|
- pionCible.estCibleAttaque(True, conditionPossible)
|
|
|
- else:
|
|
|
- if self.modeParam["cibleAttaqueCaC"] != None:
|
|
|
- self.modeParam["cibleAttaqueCaC"].estCibleAttaque(False)
|
|
|
- self.modeParam["cibleAttaqueCaC"] = pionCible
|
|
|
-
|
|
|
-
|
|
|
- def majZoneAttaqueCaC(self, actif = True):
|
|
|
- """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 pionSupprimer(self, num):
|
|
|
"""supprime le pion entre en parametre"""
|
|
|
@@ -1492,23 +1393,18 @@ class Plateau(QGraphicsScene):
|
|
|
if num in self.combattants:
|
|
|
for coord in self.combattants[num].forme.listeCases(self.combattants[num].position, self.combattants[num].nbRotations):
|
|
|
self.cases[coord].majOccupation(self.combattants[num])
|
|
|
- self.pionSurvol(None)
|
|
|
self.pionDeplacerDansOrdreJeu(num, 0)
|
|
|
pionSuppr = self.combattants.pop(num)
|
|
|
pionSuppr.retirerDuPlateau()
|
|
|
- else:
|
|
|
- print("erreur: ce pion n'est pas dans la liste des pions")
|
|
|
|
|
|
- def pionDecorSupprimer(self, num):
|
|
|
- """supprime le pion entre en parametre"""
|
|
|
- if num in self.decors:
|
|
|
+ elif num in self.decors:
|
|
|
for coord in self.decors[num].forme.listeCases(self.decors[num].position, self.decors[num].nbRotations):
|
|
|
self.cases[coord].majOccupation(self.decors[num])
|
|
|
- self.pionDecorSurvol(None)
|
|
|
- pionDecorASuppr = self.decors.pop(num)
|
|
|
- pionDecorASuppr.supprimer()
|
|
|
+ pionSuppr = self.decors.pop(num)
|
|
|
+ pionSuppr.retirerDuPlateau()
|
|
|
+
|
|
|
else:
|
|
|
- print("ce pion n'est pas dans la liste des decors")
|
|
|
+ print("erreur: ce pion n'est pas dans la liste des pions")
|
|
|
|
|
|
###############
|
|
|
|