using MessagePack;
namespace GameFix.Mahjong
{
///
/// 杠类型
///
public enum GangStyle : byte
{
GangOther = 0,
GangPeng = 1,
GangSelf = 2,
}
///
/// 吃类型
///
public enum ChiStyle : byte
{
Left = 0,
Middle = 1,
Right = 2
}
///
/// 杠信息
///
[MessagePackObject]
public class GangInfo
{
///
/// 杠的牌
///
[Key(0)]
public sbyte Pai;
///
/// 0杠别人 1杠碰的牌(明杠), 2杠手里的牌(暗杠) 3单牌补杠
///
[Key(1)]
public byte Style;
}
///
/// 补牌信息
///
public class BuPaiInfo
{
///
/// 补的牌
///
public sbyte Pai;
///
/// 补牌方式
///
public byte Style;
}
///
/// 吃信息
///
[MessagePackObject]
public class ChiInfo
{
///
/// 吃信息的数量
///
[Key(0)]
public int Cnt;
///
/// 吃类型
///
[Key(1)]
public int[] Style = new int[3];
///
/// 用什么牌可以去吃
///
[Key(2)]
public sbyte[,] Pai = new sbyte[3, 2];
}
public enum QueType : byte
{
///
/// 吃
///
Chi = 0,
///
/// 碰
///
Peng = 1,
///
/// 杠
///
Gang = 2,
///
/// 补牌
///
BuPai = 4,
///
/// 花杠
///
HuaGang = 5,
///
/// 宝牌
///
BaoPai = 6,
}
[MessagePackObject]
public class QueInfo
{
///
/// 谁提供的牌 -1 表示自己
///
[Key(0)]
public int Supply;
///
/// 吃碰杠的牌
///
[Key(1)]
public sbyte[] Pai = new sbyte[3];
///
/// 吃的牌
///
[Key(2)]
public sbyte Cp;
///
/// 阙的类型
///
[Key(3)]
public byte QueStyle;
}
///
/// 麻将游戏状态
///
public enum MahjongGameState : int
{
///
/// 抓牌
///
ZhuaPai = 0,
///
/// 翻宝 -- 客户端自己处理
///
FanBao = 1,
///
/// 打牌状态
///
DaPai = 2,
///
/// 流局
///
LiuJu = 3,
///
/// 正常结束
///
GameOver = 4,
///
/// 加买分
///
MaiScore = 5,
///
/// 掷骰子阶段
///
ZhiTouZi = 6,
///
/// 亮精阶段
///
LiangJing = 7,
///
/// 前翻精阶段
///
QianFanJing = 8,
///
/// 后翻精阶段
///
HouFanJing = 9,
///
/// 翻宝前阶段
///
FanBaoQian = 10,
///
/// 翻宝后阶段
///
FanBaoHou = 11,
///
/// 随精阶段
///
SuiJing = 12,
}
}