16 RC, IPT, MZCTMH, TYC, PF,
18 JKZ1F, JKZ2F, JKZ3F, JKZ4F,
19 BKZ1F, BKZ2F, BKZ3F, BKZ4F,
20 IPK, RSKH, HTRY_T, HTRY_R, CK,
21 SSKDJ_K, IKTK_K, HCTYC_K,
23 DBRRC, SSKDJ, IKTK, HCTYC,
24 TTH, CTT, S3AK, S3KT, SSKDK, HRT, SSG, HIS_K, JCTYC_K,
26 HIS, JCTYC, RPK, CIS_K, CIS,
28 KKSMS, DSG, S4AK, TIS, SSS, DSS,
29 CRT, RIS, TH, CH, S4KT, CRPT,
30 KKSMS_A, S4AK_A, CRPT_A,
35 enum ManganType { HR, MG, HNM, BM, SBM, KZEYKM };
37 extern std::array<const char *, NUM_YAKUS> YAKU_STRS;
42 enum class Type { F4, F7, F13 };
44 using Yakus = std::bitset<Yaku::NUM_YAKUS>;
55 bool isPrototypalYakuman()
const;
62 const Yakus &yakus()
const;
63 std::vector<const char *> keys()
const;
64 ManganType manganType()
const;
67 int netLoss(
bool isDealer)
const;
69 int loss(
bool isDealer)
const;
71 std::string spell()
const;
72 std::string charge()
const;
80 void init7TanyaoOrHonroutou(
const TileCount &ready);
84 const Hand &ready,
const T37 &last);
86 void checkPick(Yakus &ys,
const FormCtx &ctx)
const;
87 void checkRiichi(Yakus &ys,
const FormCtx &ctx,
const Rule &rule)
const;
88 void checkTsumo(Yakus &ys,
bool menzen)
const;
89 void checkAge4(Yakus &ys,
const Explain4 &exp,
bool menzen)
const;
90 void checkPinfu4(Yakus &ys,
const FormCtx &ctx,
const Explain4 &exp,
bool menzen)
const;
91 void checkDye4(Yakus &ys,
const Explain4 &exp,
bool menzen)
const;
92 void checkCup4(Yakus &ys,
const Explain4 &exp,
bool menzen)
const;
93 void checkYakuhai4(Yakus &ys,
const FormCtx &ctx,
const Explain4 &exp)
const;
94 void checkIttsuu4(Yakus &ys,
const Explain4 &exp,
bool menzen)
const;
95 void checkSanshoku4(Yakus &ys,
const Explain4 &exp,
bool menzen)
const;
96 void checkX34s4(Yakus &ys,
const Explain4 &exp)
const;
97 void checkSanshokudoukou4(Yakus &ys,
const Explain4 &exp)
const;
98 void checkShousangen(Yakus &ys,
const Explain4 &exp)
const;
102 Yakus calcYaku4(
const FormCtx &ctx,
const Rule &rule,
103 bool menzen,
const Explain4 &exp)
const;
104 int calcFu(
const FormCtx &ctx,
const Explain4 &exp,
bool menzen)
const;
105 int calcHan(
const Yakus &ys)
const;
106 int calcBase(
int fu,
int han)
const;
111 bool mYakuman =
false;
129 #endif // SAKI_FORM_H
Definition: tile_count.h:17
Parsed 4-meld complete hand.
Definition: explain.h:27
Stactor = statically allocated vector.
Definition: stactor.h:247