4 #include "../form/tile_count.h" 5 #include "../util/rand.h" 22 static const int BASE_MK = 10;
28 explicit Cy(
const T37 &t,
int e) : t(t), e(e) {}
39 Exist &operator=(
const Exist &assign) =
default;
41 void incMk(
const T37 &t,
int delta);
42 void incMk(
T34 t,
int delta);
48 std::array<int, 34> mBlack;
49 std::array<int, 3> mRed;
57 enum Exit { PII, RINSHAN, DORAHYOU, URAHYOU, NUM_EXITS };
59 explicit Mount(TileCount::AkadoraCount fillMode);
62 Mount &operator=(
const Mount &assign) =
default;
65 const T37 &initPopExact(
const T37 &t);
68 int remainPii()
const;
69 int remainRinshan()
const;
70 int remainA(
T34 t)
const;
71 int remainA(
const T37 &t)
const;
78 void lightA(
T34 t,
int delta,
bool rinshan =
false);
79 void lightA(
const T37 &t,
int delta,
bool rinshan =
false);
80 void lightB(
T34 t,
int delta,
bool rinshan =
false);
81 void lightB(
const T37 &t,
int delta,
bool rinshan =
false);
82 void incMk(Exit exit,
size_t pos,
T34 t,
int delta,
bool bSpace);
83 void incMk(Exit exit,
size_t pos,
const T37 &t,
int delta,
bool bSpace);
84 void collapse(Exit exit, std::size_t pos,
const T37 &t);
85 void loadB(
const T37 &t,
int count);
97 Erwin() : earlyCollapse(
false) {}
98 Erwin(
const T37 &t) : tile(t), earlyCollapse(
true) {}
101 using ErwinQueue = std::list<std::optional<Erwin>>;
103 Erwin &prepareSuperpos(Exit exit, std::size_t pos);
114 int mRemain = 136 - 14;
119 std::array<ErwinQueue, NUM_EXITS> mErwinQueues;
130 #endif // SAKI_MOUNT_H
Definition: tile_count.h:17
Stactor = statically allocated vector.
Definition: stactor.h:247