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, } }