local MJDefine = MJFramework.MJImport("mj.luaScript.MJDefine") local MJMessage = MJFramework.MJImport("mj.luaScript.Protocol.MJMessage") local MJSound = MJFramework.MJImport("mj.luaScript.MJSound") local Mahjong3DHandCard = MJFramework.MJFrameworkClassImprot("mj.luaScript.Common.3d.Mahjong3DHandCard") local HandCard3D = class("HandCard3D", Mahjong3DHandCard) function HandCard3D:ctor(...) HandCard3D.super.ctor(self, ...) end --- HandCard3D:onAfterCreateHandcards 创建手牌之后的处理 function HandCard3D:onAfterCreateHandcards() HandCard3D.super.onAfterCreateHandcards(self) end function HandCard3D:onAfterCreateOpenHandcards() HandCard3D.super.onAfterCreateOpenHandcards(self) end -- 重写排序,让听用牌放在最左边 function HandCard3D:sortHandCards() if self._viewId ~= MJDefine.MyViewId and (not self._isReplay) then--如果不是主视角且不是回放,不需要排序 return end --[[table.sort( self._handCardNodes, function(c1, c2) if c1:getValue() == c2:getValue() and c1.tang and (not c2.tang) then return true else return c1:getValue() < c2:getValue() end end )--]] -- 拆分 local temp = {} local tCard = {} local nCard = {} local qCard = {} for i, v in ipairs(self._handCardNodes) do if v:getIsTingYongCard() then table.insert(tCard, v) elseif v:getIsDingQueCard() or (v:getMJColorType() == self.queType) then table.insert(qCard, v) else table.insert(nCard, v) end end -- 按牌值顺序排序 local function sortFun(c1, c2) return c1:getValue() < c2:getValue() end table.sort(tCard, sortFun) table.sort(nCard, sortFun) table.sort(qCard, sortFun) -- 添加到大表temp里面 for i, v in ipairs(tCard) do table.insert(temp, v) end for i, v in ipairs(nCard) do table.insert(temp, v) end for i, v in ipairs(qCard) do table.insert(temp, v) end self._handCardNodes = temp end --发送出牌消息 function HandCard3D:sendOutCard() logD("HandCard3D:sendOutCard") if not (self.isOutCard and self.touchMJ) then logD("HandCard3D:sendOutCard", "不是本家出牌") return end if self.touchMJ:getIsPaoPai() and (not self:getHandCardsIsAllPaoCard()) then self.touchMJ:restorePostion() self.touchMJ:setStatus(MJDefine.MJStatus.Normal) showTooltip("不能打出别人要胡的牌!"); return end logD("HandCard3D:sendOutCard", "touchMJ", self.touchMJ:getValue()) local request = MJMessage.Card:new() request.card = self.touchMJ:getValue() -- logE("LHQRecordView:setOutCardVisible"..table.tostring(request)) self:sendMsg( app.room, MJDefine.MJEvent.OutCard, request, function(status, response) logE("HandCard3D:sendOutCard", "response = ", table.tostring(response)) end ) --音效 local userInfo = app.room:getUserInfoByViewId(self._viewId) local sex = 1 if userInfo then sex = userInfo.sex else logD("HandCard3D:sendOutCard", "userInfo为空,使用默认性别") end MJSound.PlayMJSound(sex, request.card) self:runOutCardAction(self.touchMJ:getValue()) app.room:dispatchEvent({name = MJDefine.MJEvent.LOCAL_OUT_CARD, card = self.touchMJ:getValue()}) app.room:dispatchEvent({name = MJDefine.MJEvent.OutCardFalg, value = self.touchMJ:getValue(), viewId = self._viewId}) self:setOutCardEnable(false) --插牌 if self.touchMJ == self._handCardNodes[#self._handCardNodes] then table.removeItem(self._handCardNodes, self.touchMJ) else table.removeItem(self._handCardNodes, self.touchMJ) self:resetHandCards() end self.touchMJ:removeFromParent() self.touchMJ = nil app.room:dispatchEvent({name = MJDefine.MJEvent.SelectCard}) app.room:dispatchEvent({name = MJDefine.MJEvent.ShowTing}) self:setTing(false) app.room:resetTings() app.room.roomInfo.lastOutViewId = MJDefine.MyViewId self:checkQueAndDisableOtherCard() self:checkBaoAndDisableCard() end return HandCard3D