|
|
@@ -22,6 +22,7 @@ from Pinceau import Pinceau
|
|
|
from ProjectionDep import ProjectionDep
|
|
|
from Cache import Cache
|
|
|
from EntreeSortie import EntreeSortie
|
|
|
+from Terrain import Terrain
|
|
|
|
|
|
from EcranEditionCombattant import EcranEditionCombattant
|
|
|
from EcranEditionDecors import EcranEditionDecors
|
|
|
@@ -611,7 +612,9 @@ class Plateau(QGraphicsScene):
|
|
|
"""enclenche le mode peinture de case a partir de la couleur selectionnee"""
|
|
|
couleur = self.chercherCouleur()
|
|
|
if couleur.isValid():
|
|
|
- self.activerMode(Modes.MajCases, couleur)
|
|
|
+ terrain = Terrain()
|
|
|
+ terrain.couleur = couleur
|
|
|
+ self.activerMode(Modes.MajCases, terrain)
|
|
|
else:
|
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
@@ -622,7 +625,9 @@ class Plateau(QGraphicsScene):
|
|
|
r, g, b = m_couleursRapides[index]
|
|
|
couleur.setRgb(r, g, b)
|
|
|
if couleur.isValid():
|
|
|
- self.activerMode(Modes.MajCases, couleur)
|
|
|
+ terrain = Terrain()
|
|
|
+ terrain.couleur = couleur
|
|
|
+ self.activerMode(Modes.MajCases, terrain)
|
|
|
else:
|
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
@@ -1463,159 +1468,6 @@ class Plateau(QGraphicsScene):
|
|
|
break
|
|
|
return valide
|
|
|
|
|
|
-## def validerAttaqueDist(self):
|
|
|
-## """on essaie de valider une attaque a distance vers un pion ou une case"""
|
|
|
-## if self.modeParam["pionCibleAttaqueDist"] != None:
|
|
|
-## msg = "{} attaque a distance le pion {}".format(self.pionSelectionne().txtId(),
|
|
|
-## self.modeParam["pionCibleAttaqueDist"].txtId())
|
|
|
-## valide = self.estCibleAttaqueDistValide(self.pionSelectionne().position, self.modeParam["cibleAttaqueDist"], self.modeParam["pionCibleAttaqueDist"].z)
|
|
|
-## else:
|
|
|
-## msg = "{} attaque a distance la case {}".format(self.pionSelectionne().txtId(),
|
|
|
-## self.modeParam["cibleAttaqueDist"])
|
|
|
-## valide = self.estCibleAttaqueDistValide(self.pionSelectionne().position, self.modeParam["cibleAttaqueDist"])
|
|
|
-## if not valide:
|
|
|
-## msg += " [INVALIDE]"
|
|
|
-## print(msg)
|
|
|
-## self.majModeCombat("aucun")
|
|
|
-
|
|
|
-## def rectEllipseCirculaire(self, centre, rayon):
|
|
|
-## """renvoie le QRectF definissant une ellipse ayant le QPointF pour centre et le rayon en cases entres en param
|
|
|
-## attention: l'ellipse n'est pas tout a fait circulaire, elle couvre horizontalement et
|
|
|
-## verticalement le nombre de cases demandees"""
|
|
|
-## rect = QRectF()
|
|
|
-## if rayon > 0:
|
|
|
-## p1 = QPointF((centre.x() - (rayon*self.hCase)), (centre.y() - (rayon*self.hCase)))
|
|
|
-## p2 = QPointF((centre.x() + (rayon*self.hCase)), (centre.y() + (rayon*self.hCase)))
|
|
|
-## rect.setTopLeft(p1)
|
|
|
-## rect.setBottomRight(p2)
|
|
|
-## else:
|
|
|
-## rect = None
|
|
|
-## return rect
|
|
|
-
|
|
|
-## def polygoneCone(self, point1, point2):
|
|
|
-## """renvoie le polygone du cone defini par les deux points (origine, distance)"""
|
|
|
-## ligne1 = QLineF(point1, point2)
|
|
|
-## longueur = ligne1.length()
|
|
|
-## ligne1.setAngle(ligne1.angle() + 22.5)
|
|
|
-## ligne1.setLength(1.1547*longueur)
|
|
|
-## ligne2 = QLineF(point1, point2)
|
|
|
-## ligne2.setAngle(ligne2.angle() - 22.5)
|
|
|
-## ligne2.setLength(1.1547*longueur)
|
|
|
-## polygone = QPolygonF()
|
|
|
-## polygone.append(point1)
|
|
|
-## polygone.append(ligne1.p2())
|
|
|
-## polygone.append(ligne2.p2())
|
|
|
-## return polygone
|
|
|
-
|
|
|
-## def majFormeAttaqueZone(self):
|
|
|
-## """cree la forme de l'attaque de zone"""
|
|
|
-## for coord in self.modeParam["listeCasesAttaqueZone"]:
|
|
|
-## self.cases[coord].majEstCibleAttaque(False)
|
|
|
-## for numCombattant in self.pionsSurListeCase(self.modeParam["listeCasesAttaqueZone"]):
|
|
|
-## self.combattants[numCombattant].estCibleAttaque(False)
|
|
|
-##
|
|
|
-## if self.modeCombat == "combatAttaqueZone" and self.pionSelectionne() != None:
|
|
|
-## if self.modeParam["typeAttaqueZone"] == "ligne":
|
|
|
-## if self.modeParam["formeAttaqueZone"] == None:
|
|
|
-## self.modeParam["origineAttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["point2AttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["formeAttaqueZone"] = QGraphicsLineItem()
|
|
|
-## self.modeParam["formeAttaqueZone"].setPen(QPen(QColor("black")))
|
|
|
-## self.modeParam["formeAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.addItem(self.modeParam["formeAttaqueZone"])
|
|
|
-## if self.modeParam["origineAttaqueZone"] != self.modeParam["point2AttaqueZone"]:
|
|
|
-## ligne = QLineF(self.modeParam["origineAttaqueZone"], self.modeParam["point2AttaqueZone"])
|
|
|
-## self.modeParam["formeAttaqueZone"].setLine(ligne)
|
|
|
-## self.modeParam["listeCasesAttaqueZone"] = []
|
|
|
-## lst = self.casesSousForme(self.modeParam["formeAttaqueZone"],False)
|
|
|
-## for coord in lst:
|
|
|
-## self.modeParam["listeCasesAttaqueZone"].append(coord)
|
|
|
-## #on retire la case du pion selectionne si besoin:
|
|
|
-## if self.pionSelectionne().position in self.modeParam["listeCasesAttaqueZone"]:
|
|
|
-## self.modeParam["listeCasesAttaqueZone"].remove(self.pionSelectionne().position)
|
|
|
-##
|
|
|
-## elif self.modeParam["typeAttaqueZone"] == "disque":
|
|
|
-## if self.modeParam["ligneMireAttaqueZone"] == None:
|
|
|
-## self.modeParam["origineAttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["point2AttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["ligneMireAttaqueZone"] = QGraphicsLineItem()
|
|
|
-## self.modeParam["ligneMireAttaqueZone"].setPen(QPen(QColor("black")))
|
|
|
-## self.modeParam["ligneMireAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.addItem(self.modeParam["ligneMireAttaqueZone"])
|
|
|
-##
|
|
|
-## if self.modeParam["origineAttaqueZone"] != self.modeParam["point2AttaqueZone"]:
|
|
|
-## ligne = QLineF(self.modeParam["origineAttaqueZone"], self.modeParam["point2AttaqueZone"])
|
|
|
-## self.modeParam["ligneMireAttaqueZone"].setLine(ligne)
|
|
|
-## coordCible = self.coordonneesAuPoint(self.modeParam["point2AttaqueZone"])
|
|
|
-## cibleValide = self.estCibleAttaqueDistValide(self.pionSelectionne().position, coordCible)
|
|
|
-##
|
|
|
-## if cibleValide:
|
|
|
-## rayon = self.fenetre.ui.pi_rayonAttaqueZone.value()
|
|
|
-## if self.modeParam["formeAttaqueZone"] == None:
|
|
|
-## self.modeParam["formeAttaqueZone"] = QGraphicsEllipseItem()
|
|
|
-## self.modeParam["formeAttaqueZone"].setPen(QPen(QColor("black")))
|
|
|
-## self.modeParam["formeAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.addItem(self.modeParam["formeAttaqueZone"])
|
|
|
-## rect = self.rectEllipseCirculaire(self.modeParam["point2AttaqueZone"], rayon)
|
|
|
-## self.modeParam["listeCasesAttaqueZone"] = []
|
|
|
-## if rect != None and rect.bottomRight() != rect.topLeft():
|
|
|
-## self.modeParam["formeAttaqueZone"].setRect(rect)
|
|
|
-## lst = self.zone(coordCible, rayon, 0) #zone bcp plus rapide que casesSousforme
|
|
|
-## self.modeParam["listeCasesAttaqueZone"] = lst
|
|
|
-## else:
|
|
|
-## self.cases[coordCible].majEstCibleCurseur(True, False)
|
|
|
-## self.modeParam["listeCasesAttaqueZone"] = []
|
|
|
-##
|
|
|
-## if self.modeParam["formeAttaqueZone"] != None:
|
|
|
-## self.modeParam["formeAttaqueZone"].setVisible(cibleValide == True and rect != None)
|
|
|
-##
|
|
|
-## elif self.modeParam["typeAttaqueZone"] == "cone":
|
|
|
-## if self.modeParam["formeAttaqueZone"] == None:
|
|
|
-## self.modeParam["origineAttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["point2AttaqueZone"] = self.cases[self.pionSelectionne().position].centreGraphique
|
|
|
-## self.modeParam["formeAttaqueZone"] = QGraphicsPolygonItem()
|
|
|
-## self.modeParam["formeAttaqueZone"].setPen(QPen(QColor("black")))
|
|
|
-## self.modeParam["formeAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.addItem(self.modeParam["formeAttaqueZone"])
|
|
|
-##
|
|
|
-## if self.modeParam["origineAttaqueZone"] != self.modeParam["point2AttaqueZone"]:
|
|
|
-## cone = self.polygoneCone(self.modeParam["origineAttaqueZone"], self.modeParam["point2AttaqueZone"])
|
|
|
-## self.modeParam["formeAttaqueZone"].setPolygon(cone)
|
|
|
-## lst = self.casesSousForme(self.modeParam["formeAttaqueZone"], True, True)
|
|
|
-## self.modeParam["listeCasesAttaqueZone"] = []
|
|
|
-## for coord in lst:
|
|
|
-## if coord != self.pionSelectionne().position:
|
|
|
-## self.modeParam["listeCasesAttaqueZone"].append(coord)
|
|
|
-##
|
|
|
-## for coord in self.modeParam["listeCasesAttaqueZone"]:
|
|
|
-## self.cases[coord].majEstCibleAttaque(True)
|
|
|
-## for numCombattant in self.pionsSurListeCase(self.modeParam["listeCasesAttaqueZone"]):
|
|
|
-## self.combattants[numCombattant].estCibleAttaque(True)
|
|
|
-
|
|
|
-
|
|
|
-## def validerAttaqueZone(self):
|
|
|
-## """l'attaque de zone est validee"""
|
|
|
-## if self.modeActif_old == "pionSelectionne" and self.modeCombat == "combatAttaqueZone":
|
|
|
-## for numCombattant in self.pionsSurListeCase(self.modeParam["listeCasesAttaqueZone"]):
|
|
|
-## print("{} a lance une attaque de zone sur {}".format(self.pionSelectionne().nom, self.pionSelectionne().numero , \
|
|
|
-## self.combattants[numCombattant].nom, self.combattants[numCombattant].numero))
|
|
|
-## self.majModeCombat("aucun")
|
|
|
-##
|
|
|
-## def reinitAttaqueZone(self):
|
|
|
-## if self.modeParam["formeAttaqueZone"] != None:
|
|
|
-## self.modeParam["formeAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.removeItem(self.modeParam["formeAttaqueZone"])
|
|
|
-## self.modeParam["formeAttaqueZone"] = None
|
|
|
-## if self.modeParam["ligneMireAttaqueZone"] != None:
|
|
|
-## self.modeParam["ligneMireAttaqueZone"].prepareGeometryChange()
|
|
|
-## self.removeItem(self.modeParam["ligneMireAttaqueZone"])
|
|
|
-## self.modeParam["ligneMireAttaqueZone"] = None
|
|
|
-## if self.modeParam["point2AttaqueZone"] != None:
|
|
|
-## self.cases[self.coordonneesAuPoint(self.modeParam["point2AttaqueZone"])].majEstCibleCurseur(False)
|
|
|
-## for coord in self.modeParam["listeCasesAttaqueZone"]:
|
|
|
-## self.cases[coord].majEstCibleAttaque(False)
|
|
|
-## for numCombattant in self.pionsSurListeCase(self.modeParam["listeCasesAttaqueZone"]):
|
|
|
-## self.combattants[numCombattant].estCibleAttaque(False)
|
|
|
|
|
|
def pionSurCase(self, coord):
|
|
|
"""renvoie le pion present sur la case, none sinon"""
|