blob: 7f31831c64850d0f0dde96aca060b31ffd54d5dc (
plain) (
blame)
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
|
/*
* Provide a way to iterator over all monsters,
* subject to a few common restrictions.
*
* TODO:
* - Iterate over actors?
*/
#ifndef MON_ITER_H
#define MON_ITER_H
enum restr_type
{
R_NONE,
R_CIRC,
R_LOS,
R_ACT
};
class circle_def;
class los_def;
class actor;
class monster_iterator
{
public:
monster_iterator();
monster_iterator(const circle_def* circle_);
monster_iterator(const los_def* los_);
monster_iterator(const actor* act_);
operator bool() const;
monsters* operator*() const;
monsters* operator->() const;
monster_iterator& operator++();
monster_iterator operator++(int);
protected:
restr_type restr;
int curr_mid;
const circle_def* circle;
const los_def* los;
const actor* act;
bool valid(int mid) const;
void advance(bool may_stay=false);
};
#endif
|