Libsaki
Core library of Pancake Mahjong
table
kan_ctx.h
1
#ifndef SAKI_KAN_CTX_H
2
#define SAKI_KAN_CTX_H
3
4
#include "../unit/who.h"
5
6
7
8
namespace
saki
9
{
10
11
12
13
class
KanCtx
14
{
15
public
:
16
KanCtx
() =
default
;
17
explicit
KanCtx
(
const
KanCtx
©) =
default
;
18
KanCtx
&operator=(
const
KanCtx
©) =
default
;
19
~
KanCtx
() =
default
;
20
21
bool
during()
const
22
{
23
return
mDuring;
24
}
25
26
bool
duringMinkan()
const
27
{
28
return
mDuring && mMinkan;
29
}
30
31
bool
duringAnkan()
const
32
{
33
return
mDuring && !mMinkan;
34
}
35
36
Who
pao()
const
37
{
38
return
mPao;
39
}
40
41
void
enterDaiminkan(
Who
pao)
42
{
43
assert(!mDuring);
// daiminkan must be a start
44
45
mDuring =
true
;
46
mMinkan =
true
;
47
mPao = pao;
48
}
49
50
void
enterAnkan()
51
{
52
if
(!mDuring) {
// start with ankan
53
mPao =
Who
();
54
mDuring =
true
;
55
}
56
57
mMinkan =
false
;
58
}
59
60
void
enterKakan()
61
{
62
if
(!mDuring) {
// start with kakan
63
mPao =
Who
();
64
mDuring =
true
;
65
}
66
67
mMinkan =
true
;
68
}
69
71
void
leave
()
72
{
73
mDuring =
false
;
74
}
75
76
private
:
77
bool
mDuring =
false
;
78
bool
mMinkan;
79
Who
mPao;
80
};
81
82
83
84
}
// namespace saki
85
86
87
88
#endif // SAKI_KAN_CTX_H
saki::KanCtx
Definition:
kan_ctx.h:13
saki::KanCtx::leave
void leave()
Called when a discard or another kan happens.
Definition:
kan_ctx.h:71
saki
Definition:
ai.cpp:18
saki::Who
Definition:
who.h:14
Generated by
1.8.13