using MessagePack;

namespace GameMessage
{
    [MessagePackObject()]
    public class ClubDeskRule
    {
        /// <summary>
        /// 密码
        /// </summary>
        [Key(0)]
        public string Pwd;

        /// <summary>
        /// 最大玩家数量
        /// </summary>
        [Key(1)]
        public int MaxCnt;

        /// <summary>
        /// 最小玩家数量
        /// </summary>
        [Key(2)]
        public int MinCnt;

        /// <summary>
        /// 倍率
        /// </summary>
        [Key(3)]
        public float BeiLv;

        /// <summary>
        /// 游戏的房间规则
        /// </summary>
        [Key(4)]
        public string RoomRule;

        /// <summary>
        /// 总封顶
        /// </summary>
        [Key(5)]
        public int Capping;

        /// <summary>
        /// 玩法备注
        /// </summary>
        [Key(6)]
        public string Remarks;

        /// <summary>
        /// 规则扩展
        /// </summary>
        [Key(7)]
        public DeskRuleEx RuleEx;

        /// <summary>
        /// 游戏服务Id
        /// </summary>
        [Key(8)]
        public int GameSerId;

        /// <summary>
        /// 地理位置拦截
        /// </summary>
        [Key(9)]
        public int InterceptPos;

        /// <summary>
        /// 是否拦截不是微信的账号
        /// </summary>
        [Key(10)]
        public int InterceptWeChat;

        /// <summary>
        /// 战局数
        /// </summary>
        [Key(11)]
        public int WarCnt;
    }
    
    [MessagePackObject()]
    public class DeskRuleEx
    {
        /// <summary>
        /// 县级游戏id
        /// </summary>
        [Key(0)]
        public int ZyxIdx;

        /// <summary>
        /// 是否自动托管 0 表示不托管  大于0表示多少秒进入自动托管
        /// </summary>
        [Key(1)]
        public int AutoDeposit;

        /// <summary>
        /// 托管自动解散
        /// </summary>
        [Key(2)]
        public bool DepositAutoDissolve;

        /// <summary>
        /// 可以请求解散的次数 -1 表示不可申请  0 表示无限次  大于0 表示具体次数
        /// </summary>
        [Key(3)]
        public int CanRequestDissolveCnt;

        /// <summary>
        /// 创建房间消耗的房卡数量
        /// </summary>
        [Key(4)]
        public int CreateRoomCardNum;

        /// <summary>
        /// 开战后自动准备的时间 小于0表示不自动准备 等于0表示使用默认值5 大于0表示具体时间
        /// </summary>
        [Key(5)]
        public int AutoReadTime;

        /// <summary>
        /// 是否禁止发送道具
        /// </summary>
        [Key(6)]
        public bool RefuseProp;

        /// <summary>
        /// 进入随机位置
        /// </summary>
        [Key(7)]
        public bool JoinRandomSeat;

        /// <summary>
        /// 离线罚分
        /// </summary>
        [Key(8)]
        public int OutLinePenaltyPoint;
        
        /// <summary>
        /// 未准备超时踢出
        /// </summary>
        [Key(9)]
        public int ReadyTimeout;
    }
}