1 #ifndef HEADER_MARKMASK_H
2 #define HEADER_MARKMASK_H
3 
4 class V2;
5 class Field;
6 
7 #include "NoCopy.h"
8 #include "Dir.h"
9 #include "Cube.h"
10 
11 /**
12  * Marks and unmasks object from game field.
13  */
14 class MarkMask : public NoCopy {
15     private:
16         Cube *m_model;
17         Field *m_field;
18     private:
19         void writeModel(Cube *model, Cube *toOverride);
20         bool canGo(Dir::eDir dir) const;
21         bool isInRoom() const;
22     public:
23         MarkMask(Cube *model, Field *field);
24 
25         Cube::t_models getResist(Dir::eDir dir) const;
26         Cube::t_models getPlacedResist(const V2 &loc) const;
27         void mask();
28         void unmask();
29 
30         Dir::eDir getBorderDir() const;
31         bool isFullyOut() const;
32 
33         static void unique(Cube::t_models *models);
34 };
35 
36 #endif
37