package game import ( "server/call" "server/common" "server/pb" "github.com/liangdas/mqant/gate" "github.com/liangdas/mqant/log" ) func DisConnect(data *pb.ClientDisConnectNotify) { p := GetPlayer(int(data.UserID)) if p == nil { return } p.T.PutQueue("nf", func() { p.Disconnect() }) } func OptPlayer(data *pb.InnerOptPlayer) { p := GetPlayer(int(data.UID)) if p == nil { return } switch data.Opt { case common.OptPlayerTypeKick: p.T.PutQueue("nf", func() { p.Disconnect() }) } } func OnTableInfo(session gate.Session, req *pb.GameCommonReq) (string, error) { p := FindPlayer(session) if p == nil { log.Error("player %v not found", session.GetUserID()) return "", nil } p.T.PutQueue("nf", func() { p.SubPlayer.TableInfo() }) return "", nil } func Enter(session gate.Session, req *pb.GameMsgEnterGameReq) (string, error) { p := FindPlayer(session) if p == nil { uid := session.GetUserIDInt64() if uid <= 0 { return "", nil } rid := findRoom(int(req.SubID)) gameRoom := GetRoom(rid) if gameRoom == nil { return "", nil } gameRoom.Enter(int(uid), session, common.CurrencyType(req.CurrencyType)) return "", nil } p.T.PutQueue("nf", func() { p.Send(int(pb.GameProtocol_EnterGameResp), &pb.GameCommonResp{}) p.SubPlayer.TableInfo() }) return "", nil } func findRoom(room int) (roomID int) { list := call.GetConfigGameRoom(ThisGameID) practice := []*common.ConfigGameRoom{} for i := len(list) - 1; i >= 0; i-- { one := list[i] rid := one.RoomID if room > 0 && rid != room { continue } if !one.Open { continue } if one.RoomType == RoomTypePractice { practice = append(practice, one) continue } return rid } // 以上找不到合适的,进入练习场 for _, v := range practice { return v.RoomID } return } func OnLeave(session gate.Session, req *pb.GameCommonReq) (string, error) { p := FindPlayer(session) if p == nil { return "", nil } p.T.PutQueue("nf", func() { p.Leave() }) return "", nil }