-
Notifications
You must be signed in to change notification settings - Fork 0
/
DetecteurCible.cpp
65 lines (58 loc) · 1.96 KB
/
DetecteurCible.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "DetecteurCible.hpp"
#include "Case.hpp"
#include "Cible.hpp"
#include "Monstre.h"
#include "Constructible.hpp"
// ################################################### MERE ###################################################################
std::vector<Cible *> DetecteurCible::operator() ()
{
// la version de base se contente de retourne la liste des monstres sur les cases s'ils sont visible et non volant
std::vector<Cible *> monstreAPorte;
std::set<Case *>::iterator it = caseCible.begin();
// pour toutes les cases a porte
for ( it ; it != caseCible.end(); ++it )
{
// on recupere les monstre dans les cases
std::set<Cible* > listCible = cibleDansCase((*it));
// on ajoute les monstre que l'on peut cibler
std::set<Cible* >::iterator itMoob = listCible.begin() ;
for ( itMoob ; itMoob != listCible.end() ; ++itMoob)
{
if ( cibleCiblable(*itMoob) )
{
monstreAPorte.push_back((*itMoob));
}
}
}
return monstreAPorte;
}
bool DetecteurCible::cibleCiblable (Cible* p_cible)
{
return p_cible->isVisible() && !p_cible->isVolant();
}
std::set<Cible *> DetecteurCible::cibleDansCase(Case* p_case)
{
std::set<Cible *> setC;
std::set<Monstre *> setM = p_case->getListMonstre();
for ( std::set<Monstre *>::iterator it = setM.begin();
it != setM.end();
++it)
{
setC.insert(*it);
}
return setC ;
}
// ################################################### DetecteurConstructible ###########################################################
std::set<Cible *> DetecteurConstructible::cibleDansCase(Case* p_case)
{
std::set<Cible *> setC;
std::set<Constructible *> setM = p_case->getListConstructible();
for ( std::set<Constructible *>::iterator it = setM.begin();
it != setM.end();
++it)
{
// BUG !!!
setC.insert((*it));
}
return setC ;
}