#from __future__ import unicode_literals # -*- coding: utf-8 -*- from Pion import Pion import regles from mat import Materiel class Combattant(Pion, Materiel): """combattant sur un plateau de combat""" def __init__(self, parent=None): super(Combattant, self).__init__() self._type = "cb" self.taille = 2 self.depMarche = regles.valeurDefaut("depMarche") self.depNage = regles.valeurDefaut("depNage") self.depEscalade = regles.valeurDefaut("depEscalade") self.depVol = regles.valeurDefaut("depVol") self.saut = regles.valeurDefaut("saut") self.attaques = [] #liste des attaques pre-parametrees du pion self.listeAttributs = regles.listeAttributs() self.inventaire = [] self.details = {} self.notes = "" #caracs liees au combat: self.etat = "" self.deplacementRestant = 0 def pM(self): """les points de mouvement""" return max([self.depMarche, self.depNage, self.depEscalade, self.depVol]) def coutDep(self, typeDep, dist = 1): """renvoie le cout en PM pour effectuer ce deplacement""" retour = 1 if typeDep in self.__dict__: dep = self.__dict__[typeDep] if dep > 0: cout = self.pM() / dep retour = dist * cout else: retour = -1 return retour def listeAttaques(self): return self.attaques def ajouterAuPlateau(self, plateau): self.plateau = plateau super(Combattant, self).ajouterAuPlateau(self.plateau) self.majEtiquette() def estCache(self): """met a jour le combattant selon qu'il est cache ou non""" for x, y, z in self.casesOccupees(): coord = (x, y) if not self.plateau.cases[coord].estCachee(): return False return True def hoverEnterEvent(self, event): """evenement lors du survol de la souris (en entree)""" self.plateau.combattantSurvol(self.numero) event.ignore() def hoverLeaveEvent(self, event): """evenement lors du survol de la souris (en entree)""" self.plateau.combattantFinSurvol(self.numero) def mousePressEvent(self, event): """evenement lors du clic souris""" super(Pion, self).mousePressEvent(event) if event.button() == 1: #sur clic gauche accepte = self.plateau.pionClique(self.numero) if accepte: event.accept() else: event.ignore() def mouseDoubleClickEvent(self, event): """evenement lors du clic souris""" super(Pion, self).mouseDoubleClickEvent(event) if event.button() == 1: #sur clic gauche accepte = self.plateau.pionDoubleClic(self.numero) if accepte: event.accept() else: event.ignore() class PJ(Combattant): def __init__(self): super(PJ, self).__init__() self._type = "pj" self.creePar = ""