IACtrl.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "IACtrl.h"
  2. IACtrl::IACtrl(Persos_Gest* persosGest, bool allie)
  3. : m_moi(0x0), m_persosGest(persosGest), m_allie(allie)
  4. {
  5. //ctor
  6. }
  7. IACtrl::~IACtrl()
  8. {
  9. //Ne rien détruire
  10. }
  11. void IACtrl::setPersoMoi(Perso* moi)
  12. {
  13. m_moi = moi;
  14. }
  15. Uint16 IACtrl::focusProche(bool allie)
  16. {
  17. /// Initialisation
  18. unsigned int i;
  19. Uint16 focusID( NO_FOCUS );
  20. Vec diff;
  21. float lg, lgMin; // Prend le premier vivant comme référence
  22. /// Balayage
  23. // Sélectionne le premier vivant
  24. for ( i = 0; i < m_persosGest->getNb( allie ); i++ )
  25. {
  26. if ( m_persosGest->getVivant(i, allie) ) {
  27. diff = m_persosGest->getPos(i, allie) - m_moi->getPos();
  28. lgMin = diff.norme();
  29. focusID = i;
  30. break;
  31. }
  32. }
  33. if ( focusID == NO_FOCUS ) return NO_FOCUS;
  34. // Sélectionne le plus près
  35. for ( i = i + 1; i < m_persosGest->getNb( allie ); i++ )
  36. {
  37. diff = m_persosGest->getPos(i, allie) - m_moi->getPos();
  38. lg = diff.norme();
  39. if ( m_persosGest->getVivant(i, allie) && lg != 0.0f && lg < lgMin ) {
  40. lgMin = lg;
  41. focusID = i;
  42. }
  43. }
  44. return focusID;
  45. }
  46. /// END FICHIER