package room import ( "game/common/proto/pb" "github.com/fox/fox/ipb" ) func (rm *ColorRoom) checkEnterRoom(user *ColorPlayer, iMsg *ipb.InternalMsg, req *pb.ReqMatchRoom) { return } func (rm *ColorRoom) onEnterRoom(user *ColorPlayer, iMsg *ipb.InternalMsg, req *pb.ReqMatchRoom) { return } func (rm *ColorRoom) checkBet(user *ColorPlayer, _ *ipb.InternalMsg, req *pb.ReqColorBetting) pb.ErrCode { if req.Area < pb.ColorBetArea_CBA_Yellow || req.Area > pb.ColorBetArea_CBA_Green3 { return pb.ErrCode_ParamErr } // 金币不足,无法下注 if rm.GetGold(user) < user.totalBet+req.Bet { return pb.ErrCode_GoldNotEnough } if rm.roomCfg.TotalBetLimit < user.totalBet+req.Bet { return pb.ErrCode_TotalBetExceedsLimit } if rm.roomCfg.AreaBetLimit < user.totalBets[req.Area]+req.Bet { return pb.ErrCode_AreaBetExceedsLimit } return pb.ErrCode_OK } func (rm *ColorRoom) onBet(user *ColorPlayer, iMsg *ipb.InternalMsg, req *pb.ReqColorBetting) { code := rm.checkBet(user, iMsg, req) if code != pb.ErrCode_OK { rm.SendMsg(user, pb.MsgId_RspColorBettingId, &pb.RspColorBetting{Code: code}) } curBetAreaInfo := rm.betAreaInfo[req.Area] _, _ = rm.AddGold(user, -req.Bet) curBetAreaInfo.TotalBet += req.Bet if user.totalBets[req.Area] == 0 { curBetAreaInfo.PlayerNum++ } user.totalBets[req.Area] += req.Bet curBetAreaInfo.MyBet = user.totalBets[req.Area] rm.SendMsg(user, pb.MsgId_RspColorBettingId, &pb.RspColorBetting{ Code: code, AreaInfo: curBetAreaInfo, }) return } //--------------------------------------------------------------------------------------------------------------------- // //func (rm *ColorRoom) ApplyLeave(buffer []byte, user inter.UserInetr) { // _ = buffer // resp := new(pb.ColorPinoyLiveLeaveResp) // u := rm.GetPlayer(user.GetId()) // if u == nil { // rm.Table.KickOut(user) // return // } // // 有下注时不让玩家离开 // if u.totalBet != 0 { // resp.Code = 1 // _ = user.SendMsg(int32(pb.ColorPinoyLiveReceiveFromClientMessageType_ColorPinoyLiveApplyLeave), resp) // return // } // rm.KickOutUser(u) // _ = user.SendMsg(int32(pb.ColorPinoyLiveReceiveFromClientMessageType_ColorPinoyLiveApplyLeave), resp) // return //} // //func (rm *ColorRoom) checkNoBet() bool { // return rm.GetGameStatus() != pb.ColorPinoyLiveGameStatus_ColorPinoyLiveBetStatus || // rm.LiveMgr.MaintenanceStatus == 1 || // rm.LiveMgr.DiscardRestting //} // //func (rm *ColorRoom) Bet(buffer []byte, user inter.UserInetr) { // u := rm.getUser(user) // u.MutexBet.Lock() // defer u.MutexBet.Unlock() // if rm.checkNoBet() { // log.Error(rm.Log("game bet status err:%v", rm.GetGameStatus())) // model.SendBetFailMessageInetr(model.StatusError, user) // return // } // // 用户下注 // BetPb := &pb.ColorPinoyLiveBetReqs{} // err := proto.Unmarshal(buffer, BetPb) // if err != nil { // log.Error(rm.Log("proto.Unmarshal err:%v", err)) // model.SendBetFailMessageInetr(model.DataErr, user) // return // } // log.Debug(rm.Log("Bet pb = ", BetPb)) // var bets []*pb.ColorPinoyLiveBetReq // // for _, bet := range BetPb.Info { // req := &pb.ColorPinoyLiveBetReq{ // BetType: bet.BetType, // BetLevel: bet.BetLevel, // BetIndex: bet.BetIndex, // BetAmount: bet.BetAmount, // } // bets = append(bets, req) // } // // // log.Debug("Bet bets =", bets) // rm.CheckAndBet(u, bets) //} // //func (rm *ColorRoom) UserSitDown(buffer []byte, user inter.UserInetr) { // us := &pb.ColorPinoyLiveUserSitDown{} // _ = proto.Unmarshal(buffer, us) // // u, ok := rm.AllUserList[user.GetId()] // u := rm.GetPlayer(user.GetId()) // if u != nil { // if rm.SceneInfo.SitScene(u, int(us.ChairNo)) { // u.SceneChairId = int(us.ChairNo) // rm.Traverse(func(v *model.User) bool { // // rm.SendSceneMsg(v) // return true // }) // } // } //} // //func (rm *ColorRoom) SendUserListInfo(user inter.UserInetr) { // msg := new(pb.ColorPinoyLiveUserList) // for _, u := range rm.OnlineUserList { // userinfo := new(pb.ColorPinoyLiveUserInfo) // userinfo.NikeName = u.UserInetr.GetNike() // userinfo.UserGlod = u.Balance // userinfo.Head = u.UserInetr.GetHead() // userinfo.UserID = u.UserID // msg.UserList = append(msg.UserList, userinfo) // } // // log.Debug("SendUserListInfo", msg) // _ = user.SendMsg(int32(pb.ColorPinoyLiveReceiveFromClientMessageType_ColorPinoyLiveApplyGetUserListInfo), msg) //} // //func (rm *ColorRoom) SendTrend(u inter.UserInetr) { // // log.Debug("发送走势图") // msg := new(pb.ColorPinoyLiveTrend) // msg.ListTrendGroup = rm.GameTrend.ListTrendGroup // msg.LuckStarRate = rm.GetGameTrend() // _ = u.SendMsg(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticeGameTrendInfo), msg) //} // //func (rm *ColorRoom) OnUserStanUp(user *model.User) { // rm.SceneInfo.UserStandUp(user.UserInetr) // user.Mn.Lock() // user.SceneChairId = 0 // user.Mn.Unlock() // if rm.GetGameStatus() < pb.ColorPinoyLiveGameStatus_ColorPinoyLiveOpenThreeDice { // rm.SelectUserListBalanceTopSitDownChair() // } else { // // rm.Traverse(func(v *model.User) bool { // // rm.SendSceneMsg(v) // // return true // // }) // } //} // //func (rm *ColorRoom) AgainBet(user inter.UserInetr) { // u := rm.getUser(user) // u.MutexBet.Lock() // defer u.MutexBet.Unlock() // if rm.checkNoBet() { // log.Error(rm.Log("game bet status err ", rm.GetGameStatus())) // model.SendBetFailMessageInetr(model.StatusError, user) // return // } // // u := rm.getUser(user) // var bets []*pb.ColorPinoyLiveBetReq // if u.TempLastTimeBet != nil { // for _, bet := range u.TempLastTimeBet { // bets = append(bets, bet...) // } // } // rm.CheckAndBet(u, bets) //} // //func (rm *ColorRoom) BetDouble(user inter.UserInetr) { // u := rm.getUser(user) // u.MutexBet.Lock() // defer u.MutexBet.Unlock() // if rm.checkNoBet() { // log.Error(rm.Log("game bet status err ", rm.GetGameStatus())) // model.SendBetFailMessageInetr(model.StatusError, user) // return // } // // u := rm.getUser(user) // var bets []*pb.ColorPinoyLiveBetReq // if u.LastTimeBet != nil { // for _, bet := range u.LastTimeBet { // bets = append(bets, bet...) // } // // log.Debug("BetDouble 上次下注:", u.LastTimeBet, "bets:", bets) // } // if len(bets) > 1000 { // log.Error(rm.Log("game bet status err ", rm.GetGameStatus())) // model.SendBetFailMessageInetr(12, user) // return // } // // rm.CheckAndBet(u, bets) //} // //func (rm *ColorRoom) OnUndoBet(buffer []byte, user inter.UserInetr) { // u := rm.getUser(user) // u.MutexBet.Lock() // defer u.MutexBet.Unlock() // if rm.checkNoBet() { // log.Error(rm.Log("game bet status err:%v", rm.GetGameStatus())) // model.SendBetFailMessageInetr(model.StatusError, user) // return // } // reqInfo := &pb.ColorPinoyLiveC2SUndoBet{} // err := proto.Unmarshal(buffer, reqInfo) // if err != nil { // log.Error(rm.Log("proto.Unmarshal err:%v", err)) // model.SendBetFailMessageInetr(model.DataErr, user) // return // } // rm.UndoBet(u, reqInfo.UndoType) //} // //// ApplyUseProps todo //func (rm *ColorRoom) ApplyUseProps(buffer []byte, userInter inter.UserInetr) { // applyInfo := new(pb.ColorPinoyLiveApplyPropsReq) // err := proto.Unmarshal(buffer, applyInfo) // user := rm.getUser(userInter) // if err != nil { // log.Error(rm.Log("proto.Unmarshal err:%v", err)) // model.SendBetFailMessage(model.DataErr, user) // return // } // AcceptUser := rm.GetPlayer(applyInfo.AcceptUserId) // if AcceptUser == nil { // log.Error(rm.Log("AcceptUser is null")) // model.SendBetFailMessage(model.UserNull, user) // return // } // _, err = user.GetPropsReal(rm.RoomCfg.Prop, rm.Table, rm.RoomCfg) // if err != nil { // log.Error(rm.Log("GetPropsReal err", err)) // model.SendBetFailMessage(model.ScoreLess, user) // return // } // leftCoins := user.Balance // propsResp := &pb.ColorPinoyLivePlayerPropsResp{ // ApplyUserId: user.UserID, // AcceptUserId: AcceptUser.UserID, // PropsId: applyInfo.PropsId, // Chips: leftCoins, // } // rm.Table.Broadcast(int32(pb.ColorPinoyLiveSendToClientMessageType_ColorPinoyLiveNoticePlayerUseProps), propsResp) //}