|
|
@@ -34,11 +34,9 @@ from lancer import jet, estJetValide
|
|
|
from operator import itemgetter, attrgetter
|
|
|
from math import *
|
|
|
|
|
|
-
|
|
|
m_couleursRapides = [(255,255,255), (200,200,200), (130,130,130), (90,90,90), (15,15,15), \
|
|
|
(0,85,0), (170,255,0), (170,255,127), (85,85,0), (85,0,0), (170,85,0), (100,50,0), \
|
|
|
(255,255,127), (240,80,0), (85,170,255), (85,85,255), (85,0,255), (0,255,255)]
|
|
|
-
|
|
|
|
|
|
class Plateau(QGraphicsScene):
|
|
|
"""plateau de jeu contenant les cases, decors et pions"""
|
|
|
@@ -206,13 +204,13 @@ class Plateau(QGraphicsScene):
|
|
|
self.fenetre.connect(self.fenetre.ui.inf_listeOrdreJeu, SIGNAL("cellClicked(int,int)"), self.clicListOrdreJeu, Qt.UniqueConnection)
|
|
|
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_listeTerrains, SIGNAL("cellClicked(int,int)"), self.modeMajTerrainCase, Qt.UniqueConnection)
|
|
|
- self.fenetre.connect(self.fenetre.ui.cp_listeCombattants, SIGNAL("cellClicked(int,int)"), self.modeCreationCombattant, Qt.UniqueConnection)
|
|
|
+ self.fenetre.connect(self.fenetre.ui.cp_listeCreatures, SIGNAL("cellClicked(int,int)"), self.modeCreationCombattant, Qt.UniqueConnection)
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_listeDecors, SIGNAL("cellClicked(int,int)"), self.modeCreationDecor, Qt.UniqueConnection)
|
|
|
|
|
|
## self.fenetre.connect(self.fenetre.ui.terrainEdit, SIGNAL("clicked()"), self.terrainEdit, Qt.UniqueConnection)
|
|
|
## self.fenetre.connect(self.fenetre.ui.terrainNouveau, SIGNAL("clicked()"), self.terrainNouveau, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.creatureEdit, SIGNAL("clicked()"), self.creatureEdit, Qt.UniqueConnection)
|
|
|
-## self.fenetre.connect(self.fenetre.ui.creatureNouveau, SIGNAL("clicked()"), self.creatureNouveau, 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.editerAttaques, SIGNAL("clicked()"), self.afficheEcranEditionAttaques, Qt.UniqueConnection)
|
|
|
@@ -232,7 +230,7 @@ class Plateau(QGraphicsScene):
|
|
|
## self.fenetre.connect(self.fenetre.ui.cachePlacer, SIGNAL("clicked()"), self.placerCacheEnCours, Qt.UniqueConnection)
|
|
|
|
|
|
## self.fenetre.connect(self.fenetre.ui.notesMjPlateau, SIGNAL("textChanged()"), self.majNotesPlateau, Qt.UniqueConnection)
|
|
|
- self.fenetre.connect(self.fenetre.ui.pi_notesCombattant, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
|
|
|
+ self.fenetre.connect(self.fenetre.ui.pi_notes, SIGNAL("textChanged()"), self.majNotesCombattant, Qt.UniqueConnection)
|
|
|
|
|
|
#formes (dessin)
|
|
|
self.fenetre.connect(self.fenetre.ui.cp_formeSimple, SIGNAL("clicked()"), self.majModeForme, Qt.UniqueConnection)
|
|
|
@@ -374,11 +372,11 @@ class Plateau(QGraphicsScene):
|
|
|
##### affichage de la liste des terrains enregistres, et fonctions d'acces aux donnees""""
|
|
|
def afficheEcranEditionTerrains(self, terrain = None):
|
|
|
"""affiche l'ecran d'edition/creation de terrains"""
|
|
|
- self.editionTerrain = EcranEditionTerrain(terrain)
|
|
|
- self.connect(self.fenetre, SIGNAL("majListTerrains()"), self.majListTerrains)
|
|
|
- self.connect(self.editionTerrain, SIGNAL("majListTerrains()"), self.majListTerrains)
|
|
|
+ self.editionTerrain = EcranEditionTerrain(terrain)
|
|
|
self.editionTerrain.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
r = self.editionTerrain.exec_()
|
|
|
+ if r == 1:
|
|
|
+ self.majListeTerrains()
|
|
|
|
|
|
def majListTerrains(self):
|
|
|
"""mise a jour de la liste des terrains depuis la sauvegarde"""
|
|
|
@@ -414,17 +412,17 @@ class Plateau(QGraphicsScene):
|
|
|
###############
|
|
|
|
|
|
##### affichage de la liste des creatures enregistrees, et fonctions d'acces aux donnees""""
|
|
|
- def afficheEcranEditionCreatures(self, creature = None):
|
|
|
+ def afficheEcranEditionCombattants(self, creature = None):
|
|
|
"""affiche l'ecran d'edition/creation de creatures"""
|
|
|
- self.editionCreature = EcranEditionCreature(creature, self.formeCases)
|
|
|
+ self.editionCreature = EcranEditionCombattant(creature, self.formeCases)
|
|
|
self.editionCreature.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
- self.connect(self.fenetre, SIGNAL("majListCreatures()"), self.majListCreatures)
|
|
|
- self.connect(self.editionCreature, SIGNAL("majListCreatures()"), self.majListCreatures)
|
|
|
- r = self.editionCreature.exec_()
|
|
|
+ r = self.editionCreature.exec_()
|
|
|
+ if r == 1:
|
|
|
+ self.majListCreatures()
|
|
|
|
|
|
def majListCreatures(self):
|
|
|
"""mise a jour de la liste des creatures depuis la sauvegarde"""
|
|
|
- dico = afficheSvg("lib\\biblio\\creature")
|
|
|
+ dico = afficheSvg("lib\\biblio\\Combattant")
|
|
|
while self.fenetre.ui.cp_listeCreatures.rowCount() > 0:
|
|
|
self.fenetre.ui.cp_listeCreatures.removeRow(0)
|
|
|
index = 0
|
|
|
@@ -447,11 +445,11 @@ class Plateau(QGraphicsScene):
|
|
|
index = self.fenetre.ui.cp_listeCreatures.item(self.fenetre.ui.cp_listeCreatures.currentRow(), 0)
|
|
|
if index > 0:
|
|
|
creature = charger("lib\\biblio\\creature", str(index.text().toUtf8()))
|
|
|
- self.afficheEcranEditionCreatures(creature)
|
|
|
+ self.afficheEcranEditionCombattants(creature)
|
|
|
|
|
|
def creatureNouveau(self):
|
|
|
"""ouvre la fenetre 'creatures' en mode edition"""
|
|
|
- self.afficheEcranEditionCreatures()
|
|
|
+ self.afficheEcranEditionCombattants()
|
|
|
|
|
|
###############
|
|
|
|
|
|
@@ -460,10 +458,10 @@ class Plateau(QGraphicsScene):
|
|
|
"""affiche l'ecran d'edition/creation de decors"""
|
|
|
self.editionDecor = EcranEditionDecors(decor, self.formeCases)
|
|
|
self.editionDecor.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
- self.connect(self.fenetre, SIGNAL("majListDecors()"), self.majListDecors)
|
|
|
- self.connect(self.editionDecor, SIGNAL("majListDecors()"), self.majListDecors)
|
|
|
r = self.editionDecor.exec_()
|
|
|
-
|
|
|
+ if r == 1:
|
|
|
+ self.majListDecors()
|
|
|
+
|
|
|
def majListDecors(self):
|
|
|
"""mise a jour de la liste des decors depuis la sauvegarde"""
|
|
|
dico = afficheSvg("lib\\biblio\\decor")
|
|
|
@@ -629,7 +627,7 @@ class Plateau(QGraphicsScene):
|
|
|
self.majMode("pionDecorCreation", decor)
|
|
|
self.fenetre.ui.cbt_vue.setFocus()
|
|
|
|
|
|
- def modeCreationCreaturePion(self, ligne, col):
|
|
|
+ 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\\creature", str(index.text().toUtf8()))
|
|
|
@@ -805,7 +803,7 @@ class Plateau(QGraphicsScene):
|
|
|
self.modeParam["formeProjectionPosition"] = Forme(self.formeCases)
|
|
|
self.modeParam["nbRotations"] = 0
|
|
|
if param != None:
|
|
|
- if param.__class__.__name__ == "Creature":
|
|
|
+ if param.__class__.__name__ == "Combattant":
|
|
|
self.modeParam["creature"] = param
|
|
|
self.modeParam["formeProjectionPosition"].definirForme(self.modeParam["creature"].formeDef[self.formeCases])
|
|
|
|
|
|
@@ -826,7 +824,7 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
self.majAffichagePionSelectionne()
|
|
|
self.majListeAttributs()
|
|
|
- self.afficherNotesPion()
|
|
|
+ self.afficherNotesCombattant()
|
|
|
self.majListeAttaques()
|
|
|
self.majModeCombat("aucun")
|
|
|
|
|
|
@@ -842,7 +840,7 @@ class Plateau(QGraphicsScene):
|
|
|
self.majInfosDecor()
|
|
|
self.majListeAttributs()
|
|
|
self.majListeAttaques()
|
|
|
- self.afficherNotesPion()
|
|
|
+ self.afficherNotesCombattant()
|
|
|
## self.fenetre.majVisibiliteBarreCombat("menu")
|
|
|
QApplication.processEvents()
|
|
|
self.fenetre.ui.cbt_vue.setCursor(QCursor(Qt.ArrowCursor))
|
|
|
@@ -906,7 +904,7 @@ class Plateau(QGraphicsScene):
|
|
|
elif mode == "combatAttaqueCaC":
|
|
|
self.curseurEpee()
|
|
|
self.materialiserPions(False)
|
|
|
- self.modeParam["zoneAttaqueCaC"] = self.zone(self.pionSelectionne().position, self.pionSelectionne().creature.allonge, True, True)
|
|
|
+ self.modeParam["zoneAttaqueCaC"] = self.zone(self.pionSelectionne().position, self.pionSelectionne().allonge, True, True)
|
|
|
self.majZoneAttaqueCaC(True)
|
|
|
|
|
|
elif mode == "combatAttaqueDist":
|
|
|
@@ -929,8 +927,8 @@ class Plateau(QGraphicsScene):
|
|
|
"""affiche le nom et le logo du pion actuellement selectionne"""
|
|
|
if self.pionSelectionne() != None:
|
|
|
self.fenetre.ui.pi_nom.setText(QString.fromUtf8(self.pionSelectionne().txtId()))
|
|
|
- if len(self.pionSelectionne().creature.img["nom"]) > 0:
|
|
|
- pix = QPixmap(QString.fromUtf8("img\\"+self.pionSelectionne().creature.img["nom"]))
|
|
|
+ if len(self.pionSelectionne().img.nomFichier) > 0:
|
|
|
+ pix = QPixmap(QString.fromUtf8("img\\"+self.pionSelectionne().img.nomFichier))
|
|
|
pix = pix.scaled(44, 44, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
|
|
self.fenetre.ui.pi_img.setPixmap(pix)
|
|
|
else:
|
|
|
@@ -955,7 +953,7 @@ class Plateau(QGraphicsScene):
|
|
|
for num in self.ordreJeu:
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.insertRow(int(index))
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 0, QTableWidgetItem(QString.fromUtf8(str(num))))
|
|
|
- icon = QIcon("img\\"+self.combattants[num].creature.logo)
|
|
|
+ icon = QIcon("img\\"+self.combattants[num].logo)
|
|
|
item = QTableWidgetItem(icon,QString.fromUtf8(self.combattants[num].txtId()))
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 1, item)
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 2, QTableWidgetItem(QString.fromUtf8(str(self.ordreJeu[num]))))
|
|
|
@@ -1011,7 +1009,7 @@ class Plateau(QGraphicsScene):
|
|
|
if attribut != None:
|
|
|
dico = {}
|
|
|
for numCombattant in self.combattants:
|
|
|
- dico[numCombattant] = int(self.combattants[numCombattant].lstCarac[attribut])
|
|
|
+ dico[numCombattant] = int(self.combattants[numCombattant].listeAttributs[attribut])
|
|
|
ordre = sorted(dico, key = dico.get, reverse=(regles.sensTriOrdreJeu() == 1))
|
|
|
self.ordreJeu = {}
|
|
|
for numCombattant in self.combattants:
|
|
|
@@ -1076,7 +1074,7 @@ class Plateau(QGraphicsScene):
|
|
|
item = QTableWidgetItem(QString.fromUtf8(elt))
|
|
|
item.setFlags(Qt.NoItemFlags)
|
|
|
self.fenetre.ui.pi_listeAttributs.setItem(ligne, 0, item)
|
|
|
- self.fenetre.ui.pi_listeAttributs.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().lstCarac[elt]))))
|
|
|
+ self.fenetre.ui.pi_listeAttributs.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().listeAttributs[elt]))))
|
|
|
|
|
|
self.connect(self.fenetre.ui.pi_listeAttributs, SIGNAL("cellChanged(int,int)"), self.listeAttributCelluleModifiee)
|
|
|
|
|
|
@@ -1094,11 +1092,11 @@ class Plateau(QGraphicsScene):
|
|
|
nouvelleVal = str(self.fenetre.ui.pi_listeAttributs.item(ligne, 1).text().toUtf8())
|
|
|
valVerifiee = regles.listeControle()[attribut].controler(nouvelleVal)
|
|
|
if valVerifiee != None:
|
|
|
- self.pionSelectionne().lstCarac[attribut] = valVerifiee
|
|
|
+ self.pionSelectionne().listeAttributs[attribut] = valVerifiee
|
|
|
if attribut == regles.attributOrdreJeu():
|
|
|
print("maj ordre (a implementer)")
|
|
|
else:
|
|
|
- self.fenetre.ui.pi_listeAttributs.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().lstCarac[attribut]))))
|
|
|
+ self.fenetre.ui.pi_listeAttributs.setItem(ligne, 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().listeAttributs[attribut]))))
|
|
|
|
|
|
def initListeAttaques(self):
|
|
|
"""met en forme et connecte la liste des attaques du pion"""
|
|
|
@@ -1217,18 +1215,18 @@ class Plateau(QGraphicsScene):
|
|
|
del self.editionAttaques
|
|
|
self.majListeAttaques()
|
|
|
|
|
|
- def majNotesPion(self):
|
|
|
+ def majNotesCombattant(self):
|
|
|
"""les notes du pion ont ete mises a jour"""
|
|
|
if self.pionSelectionne() != None:
|
|
|
- self.pionSelectionne().notes = str(self.fenetre.ui.pi_notesPion.toPlainText().toUtf8())
|
|
|
+ self.pionSelectionne().notes = str(self.fenetre.ui.pi_notes.toPlainText().toUtf8())
|
|
|
else:
|
|
|
pass
|
|
|
|
|
|
- def afficherNotesPion(self):
|
|
|
+ def afficherNotesCombattant(self):
|
|
|
"""affiche les notes du pion selectionne dans le QTextEdit dedie"""
|
|
|
- self.fenetre.ui.pi_notesPion.setVisible((self.pionSelectionne() != None))
|
|
|
+ self.fenetre.ui.pi_notes.setVisible((self.pionSelectionne() != None))
|
|
|
if self.pionSelectionne() != None:
|
|
|
- self.fenetre.ui.pi_notesPion.setText(QString.fromUtf8(self.pionSelectionne().notes))
|
|
|
+ self.fenetre.ui.pi_notes.setText(QString.fromUtf8(self.pionSelectionne().notes))
|
|
|
|
|
|
###############
|
|
|
|
|
|
@@ -1627,7 +1625,7 @@ class Plateau(QGraphicsScene):
|
|
|
casesLigneMireDistance[coord] = distance
|
|
|
|
|
|
#on compare enfin les altitudes de chaque case en fonction de la distance
|
|
|
- zOrigine = self.cases[coordOrigine].altitude + self.pionSelectionne().z + self.pionSelectionne().creature.hauteur
|
|
|
+ zOrigine = self.cases[coordOrigine].altitude + self.pionSelectionne().z + self.pionSelectionne().hauteur
|
|
|
zCible = self.cases[coordCible].altitude + zPion
|
|
|
distanceTot = sqrt((coordCible[0] - coordOrigine[0])**2 + (coordCible[1] - coordOrigine[1])**2)
|
|
|
valide = True
|
|
|
@@ -2018,6 +2016,7 @@ class Plateau(QGraphicsScene):
|
|
|
accepte = True
|
|
|
|
|
|
elif self.modeActif == "standard" and self.pionSelectionne() == None:
|
|
|
+ print numCombattant
|
|
|
self.pionSaisir(numCombattant)
|
|
|
accepte = True
|
|
|
return accepte
|
|
|
@@ -2058,12 +2057,15 @@ class Plateau(QGraphicsScene):
|
|
|
numero = 1
|
|
|
if len(self.combattants) > 0:
|
|
|
numero = max(self.combattants) + 1
|
|
|
- pion = Pion(self, numero)
|
|
|
- if self.modeParam["creature"] != None:
|
|
|
- nom = self.modeParam["creature"].nom
|
|
|
- numTxt = self.numeroterNom(nom)
|
|
|
- self.combattants[numero] = pion
|
|
|
- pion.creer(coordCase[0], coordCase[1], nom, numTxt, self.modeParam["creature"], self.modeParam["couleurPion"], self.modeParam["nbRotations"])
|
|
|
+ combattant = Combattant(numero)
|
|
|
+ numComplementaire = self.numeroterNom(combattant.nom)
|
|
|
+
|
|
|
+ combattant.position = coordCase
|
|
|
+ combattant.numComplementaire = numComplementaire
|
|
|
+ combattant.nbRotations = self.modeParam["nbRotations"]
|
|
|
+ combattant.ajouterAuPlateau(self)
|
|
|
+
|
|
|
+ self.combattants[numero] = combattant
|
|
|
self.pionDeplacerDansOrdreJeu(numero, len(self.ordreJeu) + 2)
|
|
|
|
|
|
def numeroterNom(self, nom):
|
|
|
@@ -2138,8 +2140,8 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
if pion != None:
|
|
|
self.fenetre.ui.inf_pionNom.setText(QString.fromUtf8(pion.nom))
|
|
|
- if len(pion.creature.img["nom"]) > 0:
|
|
|
- pix = QPixmap(QString.fromUtf8("img\\"+pion.creature.img["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)
|