game_sync/gamerule/thirteen/constants.go

98 lines
2.4 KiB
Go

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 // 预选牌
)
const (
ThirteenWaterSceneWaitTimeout = time.Second * 2 //等待倒计时
ThirteenWaterStartTimeout = time.Second * 3 //开始倒计时
ThirteenWaterSendCardsTimeout = time.Second * 3 //开始发牌
ThirteenWaterOptCardTimeout = time.Second * 30 //30选牌换牌
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
}