local MJPlayerSelfCardInfoView = require("main.majiang.MJPlayerSelfCardInfoView_jiangxi") local MJPlayerCardInfoView = require("main.majiang.MJPlayerCardInfoView_jiangxi") local CardCheck = import(".CardCheck") local M = {} -- function M.new(view, mainView) setmetatable(MJPlayerSelfCardInfoView, { __index = MJPlayerCardInfoView }) setmetatable(M, { __index = MJPlayerSelfCardInfoView }) local self = setmetatable({}, { __index = M }) self.class = "PlayerSelfCardInfoView" self._view = view self._mainView = mainView self:init() return self end function M:ShowHuTip(card_list) printlog("ShowHuTip") local tingList = CardCheck.MuiltiplteCaculateTingPai(card_list, true, DataManager.CurrenRoom.room_config.Qidui, DataManager.CurrenRoom.room_config.Laizi) if #tingList > 0 then if DataManager.CurrenRoom.laiziInfo and #DataManager.CurrenRoom.laiziInfo > 0 then for i = 1, #DataManager.CurrenRoom.laiziInfo do if IsHasDictionary(DataManager.CurrenRoom.laiziInfo[i], tingList) == false then table.insert(tingList, DataManager.CurrenRoom.laiziInfo[i]) end end end end self._mainView._hu_tip:FillData(tingList) end function M:UpdateHandCard(getcard, mp) MJPlayerSelfCardInfoView.UpdateHandCard(self, getcard, mp) -- local _carViewList = self._carViewList -- if DataManager.CurrenRoom.laiziInfo and #self._carViewList > 0 then -- for i = 1, #self._carViewList do -- local obj = self._carViewList[i] -- if obj and obj.card then -- if IsHasDictionary(obj.card_item, DataManager.CurrenRoom.laiziInfo) then -- if obj.card.GetController then -- if obj.card:GetController("laizi") then -- obj.card:GetController("laizi").selectedIndex = 1 -- end -- end -- else -- if obj.card.GetController then -- if obj.card:GetController("laizi") then -- obj.card:GetController("laizi").selectedIndex = 0 -- end -- end -- end -- end -- end -- end -- local card_list = DataManager.CurrenRoom.self_player.card_list -- -- self:ShowHuTip(card_list) -- if getcard then -- self._out_card = true -- local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) -- -- 记录需要标记听牌提示的牌 -- local lst_mark = {} -- local total_num = 0 -- for i = 1, #_carViewList do -- local btn = _carViewList[i].card -- local card = self:GetCard(btn) -- list_remove(card_list, card) -- local tingList = CardCheck.MuiltiplteCaculateTingPai(card_list, true, -- DataManager.CurrenRoom.room_config.Qidui, DataManager.CurrenRoom.room_config.Laizi) -- if #tingList > 0 then -- local count = 0 -- for j = 1, #tingList do -- count = count + self._mainView:CountCardLeftNum(tingList[j]) -- end -- local tem = {} -- tem.item = btn -- tem.count = count -- total_num = total_num + count -- table.insert(lst_mark, tem) -- end -- table.insert(card_list, card) -- end -- table.sort(lst_mark, function(a, b) -- return a.count > b.count -- end) -- -- 如果几张牌的可胡牌数一致,也只显示'三角',可胡牌数不一致才显示'多' -- local all_same = #lst_mark ~= 0 and lst_mark[1].count == total_num / #lst_mark or false -- for i = 1, #lst_mark do -- local tem = lst_mark[i] -- if all_same or tem.count < lst_mark[1].count then -- tem.item:GetController("mark_ting").selectedIndex = 1 -- else -- tem.item:GetController("mark_ting").selectedIndex = 2 -- end -- end -- else -- for i = 1, #_carViewList do -- local btn = _carViewList[i].card -- if btn:GetController("mark_ting").selectedIndex ~= 0 then -- btn:GetController("mark_ting").selectedIndex = 0 -- end -- end -- self._out_card = false -- end end function M:__OnClickHandCard(context) local button = context.sender local _carViewList = self._carViewList local refresh = true local card_list = {} for i = 1, #_carViewList do local btn = _carViewList[i].card local card = self:GetCard(btn) if btn ~= button and btn.selected == true then if button.data.card_item == card then refresh = false else self._mainView:markOutCards(false, card) end btn.selected = false end if not btn.selected then table.insert(card_list, card) end end if self._out_card then -- self:ShowHuTip(card_list) end -- 标记出牌 if refresh then if button.selected then self._mainView:markOutCards(true, button.data.card_item) else self._mainView:markOutCards(false, button.data.card_item) end end local _room = DataManager.CurrenRoom if not button.selected and _room.curren_outcard_seat == _room.self_player.seat then local card = button.data self._mainView:OutCard(card.card_item) end end function M:__OnDragStart(card) local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) list_remove(card_list, card) -- self:ShowHuTip(card_list) end function M:__OnDragEnd(context) if self.outcard_button then self.outcard_button:Dispose() self.outcard_button = nil end local button = context.sender --button:RemoveFromParent() local card = button.data local _room = DataManager.CurrenRoom -- -- print("button.y"..button.y .. "_room.curren_outcard_seat".._room.curren_outcard_seat) if (button.y - card.old_postion.y < -50 and _room.curren_outcard_seat == _room.self_player.seat and card.card_item ~= 0) then self._mainView:OutCard(card.card_item) button.touchable = false self.outcard_button = button else self._area_handcard_list:AddChildAt(button, card.index) button:TweenMove(card.old_postion, 0.2) end end function M:CheckPlayerOnlineState() local room = DataManager.CurrenRoom for i = 1, #room.player_list do if room.player_list[i].line_state == 0 then return false end end return true end function M:Clear(bskip) --self._ctr_state.selectedIndex = 0 self._area_fz_list.x = self._src_fz_list.x self._area_fz_list.y = self._src_fz_list.y self._area_fz_list.width = self._src_fz_list.z self._area_fz_list.height = self._src_fz_list.w self._area_fz_list:RemoveChildren(0, -1, true) self._area_handcard_list:RemoveChildren(0, -1, true) self._area_outcard_list:RemoveChildren(0, -1, true) if bskip == nil or bskip == false then self._mask_liangpai:RemoveChildren(0, -1, true) end for i = 1, #self._carViewList do self._carViewList[i].card:Dispose() end self._carViewList = {} end return M