|
- local RoomCmd=ZPFramework.ZPImport("zp_base.luaScript.Protocol.ZPCmd")
- local ZPMessage=ZPFramework.ZPImport("zp_base.luaScript.Protocol.ZPMessage")
- local ZPDef=ZPFramework.ZPImport("zp_base.luaScript.ZPDef")
- local ZPFuc=ZPFramework.ZPImport("zp_base.luaScript.ZPFunctions")
- local ZPProtocol=ZPFramework.ZPFrameworkClassImprot("zp_base.luaScript.Protocol.ZPProtocol")
- local Room = class("xuyongRoom" , ZPProtocol)
-
-
- function Room:ctor(net)
- Room.super.ctor(self , net);
-
-
- end
-
-
- -- 获取房间最大玩家人数
- function Room:getMaxPlayerCount()
- return self.roomInfo.nMaxPlayCount
- end
-
- -- 获取房间人数
- function Room:getPlayerCount()
- local count = 0
- for k,v in pairs(self.roomInfo.memberList) do
- count = count + 1
- end
- return count
- end
-
- -- 重置上局信息
- function Room:resetRound()
- self.roomInfo.quickStartInfo = nil
- end
-
- function Room:resetFastInfo()
- self.roomInfo.quickStartInfo = nil
- end
-
- function Room:addReconnectionData(response)
- self.roomInfo.nQuanCard = response.nQuanCard
- end
-
-
- function Room:onGameReconnection(status,response)
- Room.super.onGameReconnection(self,status,response)
- self:resetRound()
- local extInfo = json.decode(response.extJson or "")
- if extInfo and type(extInfo)=='table' and extInfo[tostring(self:getMyUserId())] then
- local myinfo = extInfo[tostring(self:getMyUserId())]
- self.roomInfo.hosting = myinfo.hosted or 0--托管状态
- self.roomInfo.quickStartInfo = extInfo.faststart--提前开局
- else
- self.roomInfo.hosting = 0
- end
- end
-
- function Room:isMyself(uid)
- return uid==self:getMyUserId()
- end
-
- -- 更新玩家的相对椅子号
- function Room:updateUserSeateShowId(xiaoSeatId)
- local myUserId = self:getMyRecordUserId()
-
- local mySeatId = self.roomInfo.memberList[myUserId].nSeatId
-
- self.roomInfo.nUserId = self:getMyRecordUserId()
- self.roomInfo.nSeatId = mySeatId
- --除了自己的第一次seatid辅助
- local anotherSeatID = -1
-
- --[视图椅子号] = userID
- --[座位号] = userID
- --[userID] = 视图椅子号
- self.seatShowList = {}
- self.userList = {}
- self.seatList = {}
- for k,v in pairs(self.roomInfo.memberList) do
- if v.nUserId and v.nSeatId then
- local maxNum = 3--ZPFuc.getCreateRoomPlayerNum()
- local isChange = false
- if app.room:getActualPlayerNum() >= 3 then
- maxNum = 4
- end
- local nSeatShowId --= (v.nSeatId - mySeatId + 4) % 4
- if mySeatId <= v.nSeatId then
- nSeatShowId = v.nSeatId - mySeatId
- elseif mySeatId > v.nSeatId then
- nSeatShowId = maxNum - mySeatId + v.nSeatId
- end
- if app.room:getActualPlayerNum() == 2 then--self.roomInfo.playerNum == 2 then
- if (v.nSeatId == mySeatId) then
- nSeatShowId = 4
- else
- nSeatShowId = 1--两人玩时,对家坐哪里
- end
- elseif app.room:getActualPlayerNum() == 3 and v.nUserId ~= 0 then
- if (v.nSeatId == mySeatId) then
- nSeatShowId = 4
- else
- --local nSeatShowId = (v.nSeatId - mySeatId + 4) % 4
- if nSeatShowId == 2 then
- if mySeatId > v.nSeatId then
- nSeatShowId = nSeatShowId + 1
- isChange = true
- else
- isChange = true
- nSeatShowId = nSeatShowId - 1
- end
- end
- if nSeatShowId == 0 then
- if mySeatId > v.nSeatId then
- nSeatShowId = nSeatShowId + 1
- else
- nSeatShowId = 3
- end
- elseif (nSeatShowId == 1 or nSeatShowId == 3) and anotherSeatID >= 0 then
- isChange = true
- end
- if anotherSeatID < 0 and not isChange then
- anotherSeatID = v.nSeatId
- end
- end
- elseif app.room:getActualPlayerNum() == 4 and v.nUserId ~= 0 then
- if (v.nSeatId == mySeatId) and (v.nSeatId ~= self.roomInfo.xiaoSeatId) then
- nSeatShowId = 4
- else
- if xiaoSeatId and xiaoSeatId >=0 and nSeatShowId == 2 then
- if mySeatId == xiaoSeatId then
- if math.abs(mySeatId - v.nSeatId) == 2 then
- nSeatShowId = 4
- end
- elseif mySeatId > v.nSeatId then
- isChange = true
- nSeatShowId = nSeatShowId + 1
- else
- isChange = true
- nSeatShowId = nSeatShowId - 1
- end
- else
-
- end
- if xiaoSeatId and v.nSeatId == self.roomInfo.xiaoSeatId then
- nSeatShowId = 2
- end
- end
- --强制转换小家视角与庄家一致
- if mySeatId == xiaoSeatId then
- if nSeatShowId == 1 then
- nSeatShowId = 3
- elseif nSeatShowId == 3 then
- nSeatShowId = 1
- end
- end
- end
- if nSeatShowId == 0 then
- nSeatShowId = 4
- end
- if v.nUserId == 0 then
- nSeatShowId = 2
- else
- if self.seatShowList[nSeatShowId] and isChange == true then
- if nSeatShowId == 1 then
- nSeatShowId = 3
- elseif nSeatShowId == 3 then
- nSeatShowId = 1
- end
- elseif self.seatShowList[nSeatShowId] and isChange == false then
- local olduid = self.seatShowList[nSeatShowId]
- local oldshowid = self.userList[olduid]
- local newshowid = 0
- if nSeatShowId == 1 then
- newshowid = 3
- elseif nSeatShowId == 3 then
- newshowid = 1
- end
- self.seatShowList[newshowid] = olduid
- self.userList[olduid] = newshowid
- end
- end
-
- self.seatShowList[nSeatShowId] = v.nUserId
- self.seatList[v.nSeatId] = v.nUserId
- self.userList[v.nUserId] = nSeatShowId
- end
- end
-
- logD("User:updateUserSeateShowId(), seatShowList", table.tostring(self.seatShowList))
- logD("User:updateUserSeateShowId(),seatList ", table.tostring(self.seatList))
- logD("User:updateUserSeateShowId(),userList ", table.tostring(self.userList))
- end
-
-
- -- 游戏发牌结果
- function Room:onGameSendCardResponse(status, response)
- logD("-------------------- 游戏发牌 ------------------------")
- if not self.roomInfo then
- logD("self.roomInfo no exist,容错处理!")
- return
- end
-
- logD("Room:onGameSendCardResponse(), ", table.tostring(response))
-
- self.roomInfo.nbankFirstGrabCard = response.nbankFirstGrabCard
-
- --目前server只发自己过来,后续战绩回放考虑到会发所有玩家来,故以userid为key于扩展
- local cardData = self:serverCardToMyCard(response.cardList)
- logD("Room:onGameSendCardResponse : "..table.tostring(cardData))
- self.roomInfo.memberList[response.nUserId].cardList = cardData
- self.cards[response.nUserId] = cardData
- if self:isLittleFamily() then
- self.roomInfo.nBankUid = response.nUserId
- self.cards[app.user.loginInfo.uid] = cardData
- end
-
- self.roomInfo.nQuanCard = response.nQuanCard
-
- -- 发送广播通知,发牌开始了
- self:dispatchEvent({name = "onGameSendCardResponse"});
- end
-
- return Room;
|