#from __future__ import unicode_literals # -*- coding: utf-8 -*- from __future__ import division from Pion import Pion import regles import dmF import uid class Combattant(Pion): """combattant sur un plateau de combat""" def __init__(self, parent=None): super(Combattant, self).__init__() #caracs self.id = uid.uid("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 self.caches = [] #liste des id des caches qui couvrent le combattant 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 cacher(self, idCache): """on a place le combattant sous un cache""" self.caches.append(idCache) def reveler(self, idCache): """on a retire le cache qui couvrait ce combattant""" self.caches.remove(idCache) def estCache(self): """met a jour le combattant selon qu'il est cache ou non""" return (len(self.caches) > 0) 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()