package thirteen import "time" var ( SpecialScore = []int64{0, 108, 36, 0, 20, 0, 0, 0, 10, 0, 0, 4, 4, 3} ) // 房间的参数 const ( ParamMaxPlayerNum = 0 // 最大人数 ParamAuto = 1 // 自动摆牌 ParamBaiPai = 2 // 摆牌时间 ParamBaseScore = 3 // 游戏底分 ParamLaiZi = 4 // 是否有癞子 ) // 场景状态 const ( ThirteenWaterSceneStateWait int = iota //等待状态 ThirteenWaterSceneStateStart //开始倒计时 ThirteenWaterSceneStateSendCards //开始发牌 ThirteenWaterSceneStateOptCard //选牌理牌 ThirteenWaterSceneStateShowCards //轮流看牌 ThirteenWaterSceneStateHit //打枪 ThirteenWaterSceneStateBilled //结算 ThirteenWaterSceneStateMax ) // 玩家操作 const ( ThirteenWaterPlayerOpMS = 1 //确定牌 ThirteenWaterPlayerOpStandup = 2 //站起标记 ThirteenWaterPlayerOpTest = 3 // test ThirteenWaterPlayerOpReset = 4 // 重新选牌 ThirteenWaterPlayerJoin = 5 // 加入游戏 ThirteenWaterPlayerOpSelect = 6 // 预选牌 ThirteenWaterPlayerOpAuto = 7 // 自动摆牌 1自动 2手动 ) const ( ThirteenWaterSceneWaitTimeout = time.Second * 2 //等待倒计时 ThirteenWaterStartTimeout = time.Second * 3 //开始倒计时 ThirteenWaterSendCardsTimeout = time.Second * 3 //开始发牌 ThirteenWaterOptCardTimeout = time.Second * 45 //45选牌换牌 ThirteenWaterShowCardsTimeout = time.Second * 1 //轮流看牌时间 ThirteenWaterHitTimeout = time.Second * 2 //打枪 ThirteenWaterBilledTimeout = time.Second * 5 //结算 ) const ( TimeoutStart = iota TimeoutSendCards TimeoutOp TimeoutBill ) func GetTimeout(param []int64, index int) time.Duration { if index >= 0 && index < len(param) { return time.Duration(param[index]) * time.Second } switch index { case TimeoutStart: return ThirteenWaterStartTimeout case TimeoutSendCards: return ThirteenWaterSendCardsTimeout case TimeoutOp: return ThirteenWaterOptCardTimeout case TimeoutBill: return ThirteenWaterBilledTimeout } return time.Duration(-1) } func GetMaxCard(allGroup map[int]*Group) *Group { var ret *Group max := -1000 for k, v := range allGroup { sum := 0 if k >= 1000000 { ret = v break } a := k / 10000 b := (k - a*10000) / 100 c := k - a*10000 - b*100 s := []int{a, b, c} for _, m := range s { if m >= 1 && m <= 20 { sum += 20 - m } } if max <= sum { max = sum ret = v } } return ret }