local PlayerSelfCardInfoView = import(".main.ZPPlayerSelfCardInfoView") local CardCheck = import(".main.CardCheck") local SanPaiInfoView=import(".SanPaiInfoView") local M = {} -- function M.new(view,mainView) setmetatable(M, {__index = PlayerSelfCardInfoView}) local self = setmetatable({},{__index = M}) self.class = "PlayerSelfCardInfoView" self._view = view self._mainView = mainView self._full = true self:init() self.onclickNum=0 return self end function M:onTouchBegin(context) if DataManager.CurrenRoom ==nil or DataManager.CurrenRoom.self_player ==nil then return end --printlog("点击卡牌=============================>>>") self.onclickNum=self.onclickNum+1 local button = context.sender local card = button.data if DataManager.CurrenRoom.curren_outcard_seat == DataManager.CurrenRoom.self_player.seat then self:ShowHuTip(card.card_item) end card.startPos=Vector2.New(card.btn_card.x,card.btn_card.y) local tempOrder=card.btn_card.sortingOrder or 1 card.order=tonumber(tempOrder) card.btn_card:GetController('cardnum').selectedIndex=0 card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/203_",card.card_item) card.btn_card.sortingOrder = 100 local xy = self._area_handcard_list:GlobalToLocal(Vector2.New(context.inputEvent.x,context.inputEvent.y)) card.btn_card.xy = Vector2.New(card.btn_card.x+20 ,card.btn_card.y-50) card.touch_pos = xy - button.xy end function M:__OnDragEnd(context) if DataManager.CurrenRoom ==nil or DataManager.CurrenRoom.self_player ==nil then return end if self.outcard_button then self.outcard_button = nil end --printlog("点击结束卡牌============================>>>") local button = context.sender local card = button.data local _room = DataManager.CurrenRoom if (button.y < -480 and _room.curren_outcard_seat == _room.self_player.seat) then local OutCardCallBackFunc=function () button.touchable = false self.outcard_button = card self:UpdateIsOnClick(false) self._mainView:OutCard(card.card_item) end local tingpaiList=DataManager.CurrenRoom.self_player.tingPaiList local isHasTing=CheckDictionaryFromContent(card.card_item,DataManager.CurrenRoom.self_player.tingPaiList) --printlog("是否包含有====》》》》",isHasTing) --pt(tingpaiList) if isHasTing==nil then isHasTing=false end if isHasTing==false and tingpaiList and #tingpaiList>0 then local spCallBackFunc=function (isOP) if isOP then OutCardCallBackFunc() else local isChangeCard = false self.outcard_button = nil card.btn_card:GetController('cardnum').selectedIndex=card.sameNum-1 card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_",card.card_item) self._area_handcard_list:AddChild(button) if card.btn_card.sortingOrder then card.btn_card.sortingOrder = card.order or 1 end if #self.card_list == 1 then isChangeCard = false self:UpdateHandCardsPos() return end card.btn_card.xy=card.startPos end end local SPView=SanPaiInfoView.new(spCallBackFunc) else OutCardCallBackFunc() end else local isChangeCard = false self.outcard_button = nil card.btn_card:GetController('cardnum').selectedIndex=card.sameNum-1 card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_",card.card_item) self._area_handcard_list:AddChild(button) if card.btn_card.sortingOrder then card.btn_card.sortingOrder = card.order or 1 end if #self.card_list == 1 then isChangeCard = false self:UpdateHandCardsPos() return end card.btn_card.xy=card.startPos end end function M:__OnClickHandCard(context) if DataManager.CurrenRoom ==nil or DataManager.CurrenRoom.self_player ==nil then return end if self.outcard_button then self.outcard_button = nil end local button = context.sender local card = button.data local _room = DataManager.CurrenRoom if (Utils.IsDoubleClick(context) and _room.curren_outcard_seat == _room.self_player.seat) then local OutCardCallBackFunc=function () button.touchable = false self.outcard_button = card self:UpdateIsOnClick(false) self._mainView:OutCard(card.card_item) end local tingpaiList=DataManager.CurrenRoom.self_player.tingPaiList local isHasTing=CheckDictionaryFromContent(card.card_item,DataManager.CurrenRoom.self_player.tingPaiList) --printlog("是否包含有====》》》》",isHasTing) --pt(tingpaiList) if isHasTing==nil then isHasTing=false end if isHasTing==false and tingpaiList and #tingpaiList>0 then local spCallBackFunc=function (isOP) if isOP then OutCardCallBackFunc() else local isChangeCard = false self.outcard_button = nil card.btn_card:GetController('cardnum').selectedIndex=card.sameNum-1 card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_",card.card_item) self._area_handcard_list:AddChild(button) if card.btn_card.sortingOrder then card.btn_card.sortingOrder = card.order or 1 end if #self.card_list == 1 then isChangeCard = false self:UpdateHandCardsPos() return end card.btn_card.xy=card.startPos end end local SPView=SanPaiInfoView.new(spCallBackFunc) else OutCardCallBackFunc() end end end function M:UpdateOutCardList(outcard,isShow,isMopai,seat) self:HidePiao() if(isShow == nil) then isShow = false end if(isMopai == nil) then isMopai = false end self._area_outcard_list:RemoveChildren(0,-1,true) local outcards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Gcm_OutCard") if outcard==0 then outcards:GetChild("icon").icon ="ui://Main_RunBeardMaJiang/202_1_300" else outcards:GetChild("icon").icon =self:getCardItem("ui://Main_RunBeardMaJiang/203_",outcard) end outcards.x,outcards.y = 0,0 local show_di_bg = outcards:GetChild("show_di_bg") -- show_di_bg.visible = true if(isShow)then if outcard == 0 then show_di_bg.visible = false end if(seat ~= nil and outcards~=nil)then if(isMopai)then if outcard ~= 0 then outcards:GetTransition("mopai"..seat):Play(function( ) -- show_di_bg.visible = true end) end else show_di_bg.visible = false outcards:GetTransition("cpai"..seat):Play() end else --show_di_bg.visible = true end else show_di_bg.visible = false end self._area_outcard_list:AddChild(outcards) end --弃牌 function M:UpdateQiPai( qi_list,isplay) self._area_qipai_list:RemoveChildren(0,-1,true) for i=1,#qi_list do local qicards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Qipai") qicards:GetChild("icon").icon =self:getCardItem("ui://Main_RunBeardMaJiang/202_",qi_list[i]) if(isplay)then if(i == #qi_list) then qicards:GetTransition("t1"):Play() end end self._area_qipai_list:AddChild(qicards) end end --摸牌动画 function M:PlayingOutCardAnima( card) coroutine.start(function() coroutine.wait(0.1) self:ClearOutCard() end) end function M:UpdateFzList( fz_list ,ispaly) self._area_fz_list:RemoveChildren(0,-1,true) for i = 1,#fz_list do local fzitem=nil if fz_list[i].type ~= RB_FZTypeFLS.Kan then fzitem =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/ComponentNew") if(ispaly == false)then fzitem:RemoveChildren(0,-1,true) end end if fz_list[i].type == RB_FZTypeFLS.Chi then local fzcards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_3") --fzcards:GetChild("card_"..1).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].active_card) fzcards:GetController("c2").selectedIndex = 1 -- fzcards:GetChild("card_"..2).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].opcard[1]) --fzcards:GetChild("card_"..3).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].opcard[2]) for j=1,#fz_list[i].active_card do fzcards:GetChild("card_"..j).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].active_card[j]) end fzcards.x,fzcards.y = 0,0 self:playAnim(fzitem,fzcards,#fz_list,i,ispaly) elseif fz_list[i].type == RB_FZTypeFLS.Peng then local fzcards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_3") for j=1,3 do fzcards:GetChild("card_"..j).icon =self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].active_card[j]) end fzcards.x,fzcards.y = 0,0 self:playAnim(fzitem,fzcards,#fz_list,i,ispaly) elseif fz_list[i].type == RB_FZTypeFLS.Gang or fz_list[i].type == RB_FZTypeFLS.Zhao then local fzcards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_4") for j=1,4 do fzcards:GetChild("card_"..j).icon =self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].active_card[j]) end fzcards.x,fzcards.y = 0,0 self:playAnim(fzitem,fzcards,#fz_list,i,ispaly) elseif fz_list[i].type == RB_FZTypeFLS.SGang or fz_list[i].type == RB_FZTypeFLS.SZhao then local fzcards =UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_4") for j=1,4 do if j == 4 then fzcards:GetChild('card_' .. j).icon = self:getCardItem('ui://Main_RunBeardMaJiang/202_', fz_list[i].active_card[j]) else fzcards:GetChild('card_' .. j).icon = 'ui://Main_RunBeardMaJiang/202_1_300' end end fzcards.x,fzcards.y = 0,0 self:playAnim(fzitem,fzcards,#fz_list,i,ispaly) end end end function M:playAnim( fzitem,fzcards, size,i,ispaly ) if(ispaly == nil)then ispaly =false end if(ispaly and i == size)then local faArray= fzitem:GetChild("chiwei") if(faArray~=nil)then faArray:AddChild(fzcards) else fzitem:AddChild(fzcards) end else fzitem:AddChild(fzcards) end self._area_fz_list:AddChild(fzitem) end --出牌提示动画 function M:ChuPaiTiShi() if DataManager.CurrenRoom ==nil or DataManager.CurrenRoom.self_player ==nil then return end --[[local chu_player = DataManager.CurrenRoom.self_player local selfplayeTable = {} selfplayeTable.handcard_list = chu_player.handcard_list selfplayeTable.fz_list = chu_player.fz_list selfplayeTable.tiCount = chu_player.tiCount selfplayeTable.paoCount = chu_player.paoCount selfplayeTable.hu_xi = chu_player.hu_xi local player = membe_deep_clone(selfplayeTable) local mark_ting= {} for i=1,#DataManager.CurrenRoom.self_player.handcard_list do local card = DataManager.CurrenRoom.self_player.handcard_list[i] list_remove(player.handcard_list, card) local _player = membe_deep_clone(player) local tingList = CardCheck.tingPai(_player,DataManager.CurrenRoom) local isKan = false for j=1,#player.fz_list do if card == player.fz_list[j].card and player.fz_list[j].type == RB_FZTypeFLS.Kan then isKan =true end end if #tingList > 0 and isKan == false then mark_ting[#mark_ting+1] = card end table.insert(player.handcard_list, card) table.sort( player.handcard_list, ViewUtil.HandCardSort) end--]] -- print("ChuPaiTiShi",#mark_ting,vardump(player)) ---------------- if DataManager.CurrenRoom.curren_outcard_seat == DataManager.CurrenRoom.self_player.seat then self._view :GetController("chupai").selectedIndex =1 --[[if #mark_ting>0 then for i=1,#mark_ting do for k=1,#self.card_list do local card_view= self.card_list[k] if card_view.card_item == mark_ting[i] then card_view.btn_card:GetController("mark_ting").selectedIndex = 1 end end end end--]] ---------------------- if DataManager.CurrenRoom.self_player.tingPaiList and #DataManager.CurrenRoom.self_player.tingPaiList>0 then for k=1,#self.card_list do local card_view= self.card_list[k] local isTing,curIndex=CheckDictionaryFromContent(card_view.card_item,DataManager.CurrenRoom.self_player.tingPaiList) if isTing then --printlog("听牌提示===》》》",curIndex) --pt(DataManager.CurrenRoom.self_player.tingPaiList[curIndex]) local value=#DataManager.CurrenRoom.self_player.tingPaiList[curIndex].value if tonumber(value)>0 then card_view.btn_card:GetController("mark_ting").selectedIndex = 1 end end end end else self._view :GetController("chupai").selectedIndex =0 for k=1,#self.card_list do local card_view= self.card_list[k] card_view.btn_card:GetController("mark_ting").selectedIndex = 0 end end end return M