Combattant.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #from __future__ import unicode_literals
  2. # -*- coding: utf-8 -*-
  3. from __future__ import division
  4. from Pion import Pion
  5. import regles
  6. import dmF
  7. class Combattant(Pion):
  8. """combattant sur un plateau de combat"""
  9. def __init__(self, parent=None):
  10. super(Combattant, self).__init__()
  11. #caracs
  12. self.id = None
  13. self.taille = 2
  14. self.depMarche = regles.valeurDefaut("depMarche")
  15. self.depNage = regles.valeurDefaut("depNage")
  16. self.depEscalade = regles.valeurDefaut("depEscalade")
  17. self.depVol = regles.valeurDefaut("depVol")
  18. self.saut = regles.valeurDefaut("saut")
  19. self.attaques = [] #liste des attaques pre-parametrees du pion
  20. self.listeAttributs = regles.listeAttributs()
  21. self.inventaire = []
  22. self.details = {}
  23. self.notes = ""
  24. #caracs liees au combat:
  25. self.etat = ""
  26. self.deplacementRestant = 0
  27. def pM(self):
  28. """les points de mouvement"""
  29. return max([self.depMarche, self.depNage, self.depEscalade, self.depVol])
  30. def coutDep(self, typeDep, dist = 1):
  31. """renvoie le cout en PM pour effectuer ce deplacement"""
  32. retour = 1
  33. if typeDep in self.__dict__:
  34. dep = self.__dict__[typeDep]
  35. if dep > 0:
  36. cout = self.pM() / dep
  37. retour = dist * cout
  38. else:
  39. retour = -1
  40. return retour
  41. def listeAttaques(self):
  42. return self.attaques
  43. def ajouterAuPlateau(self, plateau):
  44. self.plateau = plateau
  45. super(Combattant, self).ajouterAuPlateau(self.plateau)
  46. self.majEtiquette()
  47. def hoverEnterEvent(self, event):
  48. """evenement lors du survol de la souris (en entree)"""
  49. self.plateau.combattantSurvol(self.numero)
  50. event.ignore()
  51. def hoverLeaveEvent(self, event):
  52. """evenement lors du survol de la souris (en entree)"""
  53. self.plateau.combattantFinSurvol(self.numero)
  54. def mousePressEvent(self, event):
  55. """evenement lors du clic souris"""
  56. super(Pion, self).mousePressEvent(event)
  57. if event.button() == 1: #sur clic gauche
  58. accepte = self.plateau.pionClique(self.numero)
  59. if accepte: event.accept()
  60. else:
  61. event.ignore()
  62. def mouseDoubleClickEvent(self, event):
  63. """evenement lors du clic souris"""
  64. super(Pion, self).mouseDoubleClickEvent(event)
  65. if event.button() == 1: #sur clic gauche
  66. accepte = self.plateau.pionDoubleClic(self.numero)
  67. if accepte: event.accept()
  68. else:
  69. event.ignore()