1 #ifndef TILE_HH
2 #define TILE_HH
3 
4 class Tile {
5 
6   bool _real;
7   int _mark_val;
8 
9   short _number;
10   short _match;
11   short _row;
12   short _col;
13   short _lev;
14 
15   short _coverage;
16   short _blocked;
17 
18  public:
19 
20   Tile();
21   Tile(short r, short c, short l);
22 
number() const23   short number() const			{ return _number; }
match() const24   short match() const			{ return _match; }
row() const25   short row() const			{ return _row; }
col() const26   short col() const			{ return _col; }
lev() const27   short lev() const			{ return _lev; }
28 
assign(short no,short m)29   void assign(short no, short m)	{ _number = no; _match = m; }
30   void reset(bool is_real);
31   void reset_blockage();
32 
make_real()33   void make_real()			{ _real = true; }
make_unreal()34   void make_unreal()			{ _real = false; }
35 
real() const36   bool real() const			{ return _real; }
open() const37   bool open() const			{ return !_blocked && !_coverage; }
obscured() const38   bool obscured() const			{ return _coverage >= 4; }
39 
set_level_blockage(bool b)40   void set_level_blockage(bool b)	{ _blocked = b; }
block_upper()41   void block_upper()			{ _coverage++; }
unblock_upper()42   void unblock_upper()			{ _coverage--; }
43 
mark()44   void mark()				{ _mark_val = 1; }
unmark()45   void unmark()				{ _mark_val = 0; }
marked() const46   bool marked() const			{ return _mark_val != 0; }
47 
set_mark_val(int m)48   void set_mark_val(int m)		{ _mark_val = m; }
mark_val() const49   int mark_val() const			{ return _mark_val; }
50 
51 };
52 
53 
54 inline void
reset_blockage()55 Tile::reset_blockage()
56 {
57   _mark_val = 0;
58   _coverage = 0;
59   _blocked = 0;
60 }
61 
62 inline void
reset(bool is_real)63 Tile::reset(bool is_real)
64 {
65   _real = is_real;
66   reset_blockage();
67 }
68 
69 #endif
70