|
@@ -2,37 +2,36 @@
|
|
|
# -*- coding: utf-8 -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
from __future__ import division
|
|
from __future__ import division
|
|
|
|
|
|
|
|
-from PyQt4.QtCore import *
|
|
|
|
|
-from PyQt4.QtGui import *
|
|
|
|
|
|
|
+from math import sqrt
|
|
|
|
|
+from time import time
|
|
|
|
|
|
|
|
-##from ui.ecran_editionAttaques import Ui_editionAttaques
|
|
|
|
|
|
|
+from PyQt4.QtCore import Qt, SIGNAL, QPointF, QString, QSize, QLineF
|
|
|
|
|
+from PyQt4.QtGui import QGraphicsScene, QColor, QPixmap, QPainter, QIcon, \
|
|
|
|
|
+ QTableWidgetItem, QFont, QToolButton, QColorDialog, QMessageBox, \
|
|
|
|
|
+ QApplication, QPolygonF, QGraphicsPolygonItem, QPen, QGraphicsView
|
|
|
|
|
|
|
|
-import Modes
|
|
|
|
|
import Actions
|
|
import Actions
|
|
|
|
|
+from Cache import Cache
|
|
|
from Case import Case
|
|
from Case import Case
|
|
|
from Combattant import Combattant
|
|
from Combattant import Combattant
|
|
|
from Decor import Decor
|
|
from Decor import Decor
|
|
|
-from Pinceau import Pinceau
|
|
|
|
|
-from ProjectionDep import ProjectionDep
|
|
|
|
|
-from Cache import Cache
|
|
|
|
|
-from Terrain import Terrain
|
|
|
|
|
-
|
|
|
|
|
|
|
+from EcranAffichageTexte import EcranAffichageTexte
|
|
|
from EcranCreerPlateau import EcranCreerPlateau
|
|
from EcranCreerPlateau import EcranCreerPlateau
|
|
|
from EcranEditionCombattant import EcranEditionCombattant
|
|
from EcranEditionCombattant import EcranEditionCombattant
|
|
|
from EcranEditionDecor import EcranEditionDecor
|
|
from EcranEditionDecor import EcranEditionDecor
|
|
|
from EcranEditionTerrain import EcranEditionTerrain
|
|
from EcranEditionTerrain import EcranEditionTerrain
|
|
|
-from EcranAffichageTexte import EcranAffichageTexte
|
|
|
|
|
from EcranGestionCombat import EcranGestionCombat
|
|
from EcranGestionCombat import EcranGestionCombat
|
|
|
-from EcranSelectionPj import EcranSelectionPj
|
|
|
|
|
from EcranVol import EcranVol
|
|
from EcranVol import EcranVol
|
|
|
-
|
|
|
|
|
-import regles as regles
|
|
|
|
|
-from outilsSvg import enregistrer, charger, chargerUnique
|
|
|
|
|
-from time import time
|
|
|
|
|
|
|
+import Modes
|
|
|
|
|
+from Pinceau import Pinceau
|
|
|
|
|
+from ProjectionDep import ProjectionDep
|
|
|
|
|
+from Terrain import Terrain
|
|
|
import br
|
|
import br
|
|
|
|
|
+from outilsSvg import enregistrer, charger, chargerUnique
|
|
|
|
|
+import regles as regles
|
|
|
|
|
|
|
|
-from math import sqrt
|
|
|
|
|
|
|
|
|
|
|
|
+##from ui.ecran_editionAttaques import Ui_editionAttaques
|
|
|
m_couleursRapides = [(255,255,255), (200,200,200), (130,130,130), (90,90,90), (15,15,15), \
|
|
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), \
|
|
(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)]
|
|
(255,255,127), (240,80,0), (85,170,255), (85,85,255), (85,0,255), (0,255,255)]
|
|
@@ -79,10 +78,7 @@ class Plateau(QGraphicsScene):
|
|
|
self.numCombattantEnCours = 0
|
|
self.numCombattantEnCours = 0
|
|
|
self.ordreJeu = {} #numero du pion: ordre de jeu
|
|
self.ordreJeu = {} #numero du pion: ordre de jeu
|
|
|
|
|
|
|
|
- #note: la hauteur Z (qui gere l'empilement des objets graphiques est distribuee de cette maniere:
|
|
|
|
|
- #cases : 0 a 9
|
|
|
|
|
- #pions : 10 et +
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
def __getstate__(self):
|
|
def __getstate__(self):
|
|
|
self.dateSvg = time()
|
|
self.dateSvg = time()
|
|
|
state = {key:value for key, value in self.__dict__.items() if not key in ["fenetre", "modeActif", \
|
|
state = {key:value for key, value in self.__dict__.items() if not key in ["fenetre", "modeActif", \
|
|
@@ -262,12 +258,6 @@ class Plateau(QGraphicsScene):
|
|
|
self.fenetre.afficherPanneauxPlateau(True)
|
|
self.fenetre.afficherPanneauxPlateau(True)
|
|
|
self.majNomPlateau()
|
|
self.majNomPlateau()
|
|
|
self.majBoutonsCouleursPerso()
|
|
self.majBoutonsCouleursPerso()
|
|
|
- self.fenetre.ui.cp_listeTerrains.defFichier("lib\\biblio\\terrain")
|
|
|
|
|
- self.fenetre.ui.cp_listeTerrains.initAffichage()
|
|
|
|
|
- self.fenetre.ui.cp_listeCreatures.defFichier("lib\\biblio\\combattant")
|
|
|
|
|
- self.fenetre.ui.cp_listeCreatures.initAffichage()
|
|
|
|
|
- self.fenetre.ui.cp_listeDecors.defFichier("lib\\biblio\\decor")
|
|
|
|
|
- self.fenetre.ui.cp_listeDecors.initAffichage()
|
|
|
|
|
self.majListeTerrains()
|
|
self.majListeTerrains()
|
|
|
self.majListeCreatures()
|
|
self.majListeCreatures()
|
|
|
self.majListeDecors()
|
|
self.majListeDecors()
|
|
@@ -422,84 +412,65 @@ class Plateau(QGraphicsScene):
|
|
|
self.notes = affichageTexte.recupererTexte()
|
|
self.notes = affichageTexte.recupererTexte()
|
|
|
|
|
|
|
|
##### affichage de la liste des terrains enregistres, et fonctions d'acces aux donnees""""
|
|
##### affichage de la liste des terrains enregistres, et fonctions d'acces aux donnees""""
|
|
|
|
|
+ def terrainEdit(self):
|
|
|
|
|
+ """ouvre la fenetre 'terrains' en mode edition"""
|
|
|
|
|
+ self.afficheEcranEditionTerrains(self.fenetre.ui.cp_listeTerrains.selection())
|
|
|
|
|
+ self.activerMode(Modes.StandardCp)
|
|
|
|
|
+
|
|
|
|
|
+ def terrainNouveau(self):
|
|
|
|
|
+ """ouvre la fenetre 'terrains' en mode edition"""
|
|
|
|
|
+ self.afficheEcranEditionTerrains()
|
|
|
|
|
+ self.activerMode(Modes.StandardCp)
|
|
|
|
|
+
|
|
|
def afficheEcranEditionTerrains(self, terrain = None):
|
|
def afficheEcranEditionTerrains(self, terrain = None):
|
|
|
"""affiche l'ecran d'edition/creation de terrains"""
|
|
"""affiche l'ecran d'edition/creation de terrains"""
|
|
|
- self.editionTerrain = EcranEditionTerrain(terrain)
|
|
|
|
|
- self.editionTerrain.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
|
|
- r = self.editionTerrain.exec_()
|
|
|
|
|
|
|
+ fen = EcranEditionTerrain(terrain)
|
|
|
|
|
+ r = fen.exec_()
|
|
|
if r == 1:
|
|
if r == 1:
|
|
|
|
|
+ terrain = fen.terrain
|
|
|
|
|
+ if terrain: terrain.enregistrer()
|
|
|
self.majListeTerrains()
|
|
self.majListeTerrains()
|
|
|
self.activerMode(Modes.StandardCp)
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
|
def majListeTerrains(self):
|
|
def majListeTerrains(self):
|
|
|
"""mise a jour de la liste des terrains depuis la sauvegarde"""
|
|
"""mise a jour de la liste des terrains depuis la sauvegarde"""
|
|
|
- self.fenetre.ui.cp_listeTerrains.maj()
|
|
|
|
|
-
|
|
|
|
|
- def terrainEdit(self):
|
|
|
|
|
- """ouvre la fenetre 'terrains' en mode edition"""
|
|
|
|
|
- index = self.fenetre.ui.cp_listeTerrains.item(self.fenetre.ui.cp_listeTerrains.currentRow(), 0)
|
|
|
|
|
- if index > 0:
|
|
|
|
|
- terrain = charger("lib\\biblio\\terrain", str(index.text().toUtf8()))
|
|
|
|
|
- self.afficheEcranEditionTerrains(terrain)
|
|
|
|
|
- self.activerMode(Modes.StandardCp)
|
|
|
|
|
-
|
|
|
|
|
- def terrainNouveau(self):
|
|
|
|
|
- """ouvre la fenetre 'terrains' en mode edition"""
|
|
|
|
|
- self.afficheEcranEditionTerrains()
|
|
|
|
|
- self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
+ self.fenetre.ui.cp_listeTerrains.vider()
|
|
|
|
|
+ self.fenetre.ui.cp_listeTerrains.charger("tr")
|
|
|
###############
|
|
###############
|
|
|
|
|
|
|
|
##### affichage de la liste des creatures enregistrees, et fonctions d'acces aux donnees""""
|
|
##### affichage de la liste des creatures enregistrees, et fonctions d'acces aux donnees""""
|
|
|
- def afficheEcranEditionCombattants(self, creature = None):
|
|
|
|
|
- """affiche l'ecran d'edition/creation de creatures"""
|
|
|
|
|
- self.editionCreature = EcranEditionCombattant(creature, 0, self.formeCases)
|
|
|
|
|
- self.editionCreature.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
|
|
- r = self.editionCreature.exec_()
|
|
|
|
|
- if r == 1:
|
|
|
|
|
- combattant = self.editionCreature.combattant
|
|
|
|
|
- enregistrer(combattant.id, combattant, "lib\\biblio\\combattant")
|
|
|
|
|
- self.majListeCreatures()
|
|
|
|
|
- self.activerMode(Modes.StandardCp)
|
|
|
|
|
- self.editionCreature = None
|
|
|
|
|
-
|
|
|
|
|
- def majListeCreatures(self):
|
|
|
|
|
- """mise a jour de la liste des creatures depuis la sauvegarde"""
|
|
|
|
|
- self.fenetre.ui.cp_listeCreatures.maj()
|
|
|
|
|
-
|
|
|
|
|
def creatureEdit(self):
|
|
def creatureEdit(self):
|
|
|
"""ouvre la fenetre 'creatures' en mode edition"""
|
|
"""ouvre la fenetre 'creatures' en mode edition"""
|
|
|
- index = self.fenetre.ui.cp_listeCreatures.item(self.fenetre.ui.cp_listeCreatures.currentRow(), 0)
|
|
|
|
|
- if index > 0:
|
|
|
|
|
- creature = charger("lib\\biblio\\combattant", str(index.text().toUtf8()))
|
|
|
|
|
- self.afficheEcranEditionCombattants(creature)
|
|
|
|
|
- self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
+ self.afficheEcranEditionCombattants(self.fenetre.ui.cp_listeCreatures.selection())
|
|
|
|
|
+ self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
|
def creatureNouveau(self):
|
|
def creatureNouveau(self):
|
|
|
"""ouvre la fenetre 'creatures' en mode edition"""
|
|
"""ouvre la fenetre 'creatures' en mode edition"""
|
|
|
self.afficheEcranEditionCombattants()
|
|
self.afficheEcranEditionCombattants()
|
|
|
self.activerMode(Modes.StandardCp)
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
|
- ###############
|
|
|
|
|
-
|
|
|
|
|
- ##### affichage de la liste des decors enregistrees, et fonctions d'acces aux donnees""""
|
|
|
|
|
- def afficheEcranEditionDecors(self, decor = None):
|
|
|
|
|
- """affiche l'ecran d'edition/creation de decors"""
|
|
|
|
|
- self.editionDecor = EcranEditionDecor(decor, 0, self.formeCases)
|
|
|
|
|
- self.editionDecor.setAttribute(Qt.WA_DeleteOnClose)
|
|
|
|
|
- r = self.editionDecor.exec_()
|
|
|
|
|
|
|
+ def afficheEcranEditionCombattants(self, combattant = None):
|
|
|
|
|
+ """affiche l'ecran d'edition/creation de creatures"""
|
|
|
|
|
+ fen = EcranEditionCombattant(combattant, 0, self.formeCases)
|
|
|
|
|
+ r = fen.exec_()
|
|
|
if r == 1:
|
|
if r == 1:
|
|
|
- decor = self.editionDecor.decor
|
|
|
|
|
- enregistrer(decor.id, decor, "lib\\biblio\\decor")
|
|
|
|
|
- self.majListeDecors()
|
|
|
|
|
|
|
+ combattant = fen.combattant()
|
|
|
|
|
+ if combattant: combattant.enregistrer()
|
|
|
|
|
+ self.majListeCreatures()
|
|
|
self.activerMode(Modes.StandardCp)
|
|
self.activerMode(Modes.StandardCp)
|
|
|
-
|
|
|
|
|
- def majListeDecors(self):
|
|
|
|
|
- """mise a jour de la liste des decors depuis la sauvegarde"""
|
|
|
|
|
- self.fenetre.ui.cp_listeDecors.maj()
|
|
|
|
|
|
|
+ del fen
|
|
|
|
|
+
|
|
|
|
|
+ def majListeCreatures(self):
|
|
|
|
|
+ """mise a jour de la liste des creatures depuis la sauvegarde"""
|
|
|
|
|
+ self.fenetre.ui.cp_listeCreatures.vider()
|
|
|
|
|
+ self.fenetre.ui.cp_listeCreatures.charger("cb")
|
|
|
|
|
+
|
|
|
|
|
+ ###############
|
|
|
|
|
|
|
|
|
|
+ ##### affichage de la liste des decors enregistrees, et fonctions d'acces aux donnees""""
|
|
|
def decorEdit(self):
|
|
def decorEdit(self):
|
|
|
"""ouvre la fenetre 'decors' en mode edition"""
|
|
"""ouvre la fenetre 'decors' en mode edition"""
|
|
|
- self.afficheEcranEditionDecors(self.fenetre.ui.cp_listeDecors.actuel())
|
|
|
|
|
|
|
+ self.afficheEcranEditionDecors(self.fenetre.ui.cp_listeDecors.selection())
|
|
|
self.activerMode(Modes.StandardCp)
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
|
def decorNouveau(self):
|
|
def decorNouveau(self):
|
|
@@ -507,6 +478,21 @@ class Plateau(QGraphicsScene):
|
|
|
self.afficheEcranEditionDecors()
|
|
self.afficheEcranEditionDecors()
|
|
|
self.activerMode(Modes.StandardCp)
|
|
self.activerMode(Modes.StandardCp)
|
|
|
|
|
|
|
|
|
|
+ def afficheEcranEditionDecors(self, decor = None):
|
|
|
|
|
+ """affiche l'ecran d'edition/creation de decors"""
|
|
|
|
|
+ fen = EcranEditionDecor(decor, 0, self.formeCases)
|
|
|
|
|
+ r = fen.exec_()
|
|
|
|
|
+ if r == 1:
|
|
|
|
|
+ decor = fen.decor
|
|
|
|
|
+ if decor: decor.enregistrer()
|
|
|
|
|
+ self.majListeDecors()
|
|
|
|
|
+ self.activerMode(Modes.StandardCp)
|
|
|
|
|
+ del fen
|
|
|
|
|
+
|
|
|
|
|
+ def majListeDecors(self):
|
|
|
|
|
+ """mise a jour de la liste des decors depuis la sauvegarde"""
|
|
|
|
|
+ self.fenetre.ui.cp_listeDecors.vider()
|
|
|
|
|
+ self.fenetre.ui.cp_listeDecors.charger("dc")
|
|
|
###############
|
|
###############
|
|
|
|
|
|
|
|
############### affichage des caches enregistres
|
|
############### affichage des caches enregistres
|
|
@@ -531,7 +517,6 @@ class Plateau(QGraphicsScene):
|
|
|
estCombattant = (self.pionSelectionne().numero < 10000)
|
|
estCombattant = (self.pionSelectionne().numero < 10000)
|
|
|
#affichage
|
|
#affichage
|
|
|
self.fenetre.ui.pi_actions.setEnabled(estCombattant)
|
|
self.fenetre.ui.pi_actions.setEnabled(estCombattant)
|
|
|
- self.fenetre.ui.pi_finTour.setEnabled(estCombattant)
|
|
|
|
|
self.fenetre.ui.pi_ongletsListes.setTabEnabled(0, estCombattant)
|
|
self.fenetre.ui.pi_ongletsListes.setTabEnabled(0, estCombattant)
|
|
|
self.fenetre.ui.pi_ongletsListes.setTabEnabled(1, estCombattant)
|
|
self.fenetre.ui.pi_ongletsListes.setTabEnabled(1, estCombattant)
|
|
|
|
|
|
|
@@ -566,7 +551,7 @@ class Plateau(QGraphicsScene):
|
|
|
self.fenetre.ui.pi_listeAttributs.setRowHidden(i, (i >= len(lignesBase)))
|
|
self.fenetre.ui.pi_listeAttributs.setRowHidden(i, (i >= len(lignesBase)))
|
|
|
|
|
|
|
|
#maj des donnees de base
|
|
#maj des donnees de base
|
|
|
- self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Nom"), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().nom))))
|
|
|
|
|
|
|
+ self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Nom"), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().nom()))))
|
|
|
self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Etat"), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().etat))))
|
|
self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Etat"), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().etat))))
|
|
|
self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Alt."), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().z))))
|
|
self.fenetre.ui.pi_listeAttributs.setItem(lignesBase.index("Alt."), 1, QTableWidgetItem(QString.fromUtf8(str(self.pionSelectionne().z))))
|
|
|
|
|
|
|
@@ -700,20 +685,17 @@ class Plateau(QGraphicsScene):
|
|
|
|
|
|
|
|
def modeCreationDecor(self, ligne, col):
|
|
def modeCreationDecor(self, ligne, col):
|
|
|
"""enclenche le mode de creation de decors depuis la liste des decors"""
|
|
"""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()))
|
|
|
|
|
|
|
+ decor = self.fenetre.ui.cp_listeDecors.selection()
|
|
|
self.activerMode(Modes.CreationPion, decor)
|
|
self.activerMode(Modes.CreationPion, decor)
|
|
|
|
|
|
|
|
def modeCreationCombattant(self, ligne, col):
|
|
def modeCreationCombattant(self, ligne, col):
|
|
|
"""enclenche le mode de creation de pions depuis la liste des creatures"""
|
|
"""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()))
|
|
|
|
|
|
|
+ creature = self.fenetre.ui.cp_listeCreatures.selection()
|
|
|
self.activerMode(Modes.CreationPion, creature)
|
|
self.activerMode(Modes.CreationPion, creature)
|
|
|
|
|
|
|
|
def modeMajTerrainCase(self, ligne, col):
|
|
def modeMajTerrainCase(self, ligne, col):
|
|
|
"""enclenche le mode permettant la mise a jour du terrain des cases"""
|
|
"""enclenche le mode permettant la mise a jour du terrain des cases"""
|
|
|
- index = self.fenetre.ui.cp_listeTerrains.item(ligne, 0)
|
|
|
|
|
- terrain = charger("lib\\biblio\\terrain", str(index.text().toUtf8()))
|
|
|
|
|
|
|
+ terrain = self.fenetre.ui.cp_listeTerrains.selection()
|
|
|
if terrain:
|
|
if terrain:
|
|
|
self.activerMode(Modes.MajCases, terrain)
|
|
self.activerMode(Modes.MajCases, terrain)
|
|
|
else:
|
|
else:
|
|
@@ -807,7 +789,7 @@ class Plateau(QGraphicsScene):
|
|
|
for num in self.ordreJeu:
|
|
for num in self.ordreJeu:
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.insertRow(int(index))
|
|
self.fenetre.ui.inf_listeOrdreJeu.insertRow(int(index))
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 0, QTableWidgetItem(QString.fromUtf8(str(num))))
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 0, QTableWidgetItem(QString.fromUtf8(str(num))))
|
|
|
- icon = QIcon(self.combattants[num].logo.chemin())
|
|
|
|
|
|
|
+ icon = QIcon(self.combattants[num].icone().fichier())
|
|
|
item = QTableWidgetItem(icon, QString.fromUtf8(self.combattants[num].txtId()))
|
|
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), 1, item)
|
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 2, QTableWidgetItem(QString.fromUtf8(str(self.ordreJeu[num]))))
|
|
self.fenetre.ui.inf_listeOrdreJeu.setItem(int(index), 2, QTableWidgetItem(QString.fromUtf8(str(self.ordreJeu[num]))))
|