118 lines
3.9 KiB
Go
118 lines
3.9 KiB
Go
package room
|
|
|
|
import (
|
|
"encoding/json"
|
|
"game/common/proto/pb"
|
|
"github.com/fox/fox/ipb"
|
|
"time"
|
|
)
|
|
|
|
func (rm *ColorRoom) Ready() {
|
|
rm.Table.ResetGameRoundId()
|
|
rm.ResetData(true)
|
|
rm.Table.EndGame()
|
|
|
|
if isFunding := rm.jackpotMgr.Load(rm.RoomCfg.ColorPinoyLiveConfig.InitJackpot); isFunding {
|
|
rm.kafkaJackpotFunding(rm.RoomCfg.ColorPinoyLiveConfig.InitJackpot)
|
|
rm.jackpotFunding = rm.RoomCfg.ColorPinoyLiveConfig.InitJackpot
|
|
log.Debugf(rm.Log("发生垫资:%v", rm.jackpotFunding))
|
|
} else {
|
|
rm.jackpotFunding = 0
|
|
log.Debugf(rm.Log("没有垫资"))
|
|
}
|
|
rm.jackpotUser = nil
|
|
rm.costJackpot = 0
|
|
log.Debugf(rm.Log("游戏开始costJackpot重置为0"))
|
|
rm.SetGameStatus(pb.ColorPinoyLiveGameStatus_ColorPinoyLiveStartReady)
|
|
rm.TimerJob, _ = rm.Table.AddTimer(time.Duration(rm.RoomCfg.TimeConf.Readymove), func() {
|
|
rm.Start()
|
|
})
|
|
|
|
// 初始化默认骰子
|
|
// rm.initDefaultDiceGameRoundReady()
|
|
// 开始动画消息
|
|
msg := new(pb.ColorPinoyLiveStatusMessage)
|
|
msg.Status = int32(rm.GetGameStatus())
|
|
msg.StatusTime = int32(rm.RoomCfg.TimeConf.Startmove)
|
|
msg.Jackpot = rm.jackpotMgr.GetJackpot()
|
|
rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameReady), msg)
|
|
}
|
|
|
|
func (rm *ColorRoom) Start() {
|
|
rm.GameRoundStart()
|
|
rm.InitBigOddsBetAreas()
|
|
// 推送房间筹码选择规则
|
|
rm.SendRuleInfo()
|
|
rm.checkUserBet()
|
|
// 选择列表中前6个用户上座
|
|
rm.SelectUserListBalanceTopSitDownChair()
|
|
rm.startAt = time.Now().Unix()
|
|
rm.Table.StartGame()
|
|
// 开始动画消息
|
|
msg := new(pb.ColorPinoyLiveStatusMessage)
|
|
msg.Status = int32(rm.GetGameStatus())
|
|
msg.StatusTime = int32(rm.RoomCfg.TimeConf.Startmove)
|
|
// rm.jackpotMgr.Load(rm.Cfg.InitJackpot)
|
|
msg.Jackpot = rm.jackpotMgr.GetJackpot()
|
|
rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameStart), msg)
|
|
}
|
|
|
|
func (rm *ColorRoom) StartBet() {
|
|
rm.SetGameStatus(pb.ColorPinoyLiveGameStatus_ColorPinoyLiveBetStatus)
|
|
rm.TimerJob, _ = rm.Table.AddTimer(time.Duration(rm.RoomCfg.TimeConf.Startbet), func() {
|
|
rm.EndBet()
|
|
})
|
|
|
|
// 发送开始下注消息
|
|
msg := new(pb.ColorPinoyLiveStatusMessage)
|
|
msg.Status = int32(rm.GetGameStatus())
|
|
msg.StatusTime = int32(rm.RoomCfg.TimeConf.Startbet)
|
|
msg.Jackpot = rm.jackpotMgr.GetJackpot()
|
|
rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameStartBet), msg)
|
|
// log.Debug("pb. 开始下注.....StartBet()")
|
|
}
|
|
|
|
func (rm *ColorRoom) EndBet() {
|
|
rm.SetGameStatus(pb.ColorPinoyLiveGameStatus_ColorPinoyLiveEndBetMovie)
|
|
// 停止下注就扣钱
|
|
rm.StartTransInoutBet()
|
|
|
|
// 发送停止下注消息
|
|
msg := new(pb.ColorPinoyLiveStatusMessage)
|
|
msg.Status = int32(rm.GetGameStatus())
|
|
msg.StatusTime = int32(rm.RoomCfg.TimeConf.Endmove)
|
|
msg.Jackpot = rm.jackpotMgr.GetJackpot()
|
|
rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameEndBet), msg)
|
|
|
|
// log.Debug("pb. 停止下注.....EndBet()")
|
|
}
|
|
|
|
// 开3个 dice
|
|
func (rm *ColorRoom) openThreeDice() {
|
|
// log.Debug("aabb openThreeDice")
|
|
rm.SetGameStatus(pb.ColorPinoyLiveGameStatus_ColorPinoyLiveOpenThreeDice)
|
|
rm.Table.AddTimer(time.Duration(rm.RoomCfg.TimeConf.OpenThreeDice), func() {
|
|
// log.Debug("aabb settle")
|
|
rm.CompareDiceResult()
|
|
rm.Settle()
|
|
})
|
|
// 发送开三个骰子消息
|
|
rm._aniThreeDiceRouteIndex = int32(rand.RandIntM(0, 48))
|
|
msg := new(pb.ColorPinoyLiveGameOpenThreeDice)
|
|
msg.Status = int32(rm.GetGameStatus())
|
|
msg.AniRouteIndex = rm._aniThreeDiceRouteIndex // 掉落路径
|
|
|
|
for _, dice := range rm.NormalDices {
|
|
msg.Color = append(msg.Color, pb.ColorPinoyLiveDiceColorType(model.GetColor(dice)))
|
|
}
|
|
rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameOpenThreeDice), msg)
|
|
}
|
|
|
|
// 结算
|
|
func (rm *ColorRoom) Settle() {
|
|
// log.Debug("aabb 结算")
|
|
rm.SetGameStatus(pb.ColorPinoyLiveGameStatus_ColorPinoyLiveSettleStatus)
|
|
rm.endAt = time.Now().Unix()
|
|
rm.SetUserSettleMsg()
|
|
}
|