本来两个文章想叠加写在一起的,发现内容有点多, 拆分一下
前面讲了客户端发送协议的, 现在就要讲服务器如何接收到协议
// 大部分还是抄袭23协议的内容
case 26:
// 26 是打掉具体手牌的
req := pack.GetOutCardReq()
log.Println("玩家要求打牌", req)
nTableIndex := req.GetTableIndex()
// 找一下有没有这个桌子
pTable := GetTableByIndex(int(nTableIndex))
if pTable == nil {
log.Println("找不到桌子 ID = [", nTableIndex, "]")
return
}
if !pTable.checkPlayerValid(pData) {
log.Println("发现一个非法的用户发包")
return
}
// 拿到手牌的所有内容, 并且通过 chan传入
outCards := req.GetOutCards()
pTable.ddz.chPlayDZ <- outCards.GetCardValue() // 把打牌的具体内容通过chan
}
通过协议和 chan 送进来的手牌列表, 会在ddz的逻辑里面处理
// 回合开始
func (self *TDDZ) roundStart() {
log.Println("回合开始, 准备打牌")
//1. 新人打牌, 打第一张
ch := make(chan []int32, 1)
self.chPlayDZ = ch
var pOutCards c.TCards