|
- 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
-
|