Combattant.py 3.2 KB

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