diff --git a/lua_probject/base_project/Game/View/FamilyViewZuo.lua b/lua_probject/base_project/Game/View/FamilyViewZuo.lua index 0faa0ac8..10b60eaf 100644 --- a/lua_probject/base_project/Game/View/FamilyViewZuo.lua +++ b/lua_probject/base_project/Game/View/FamilyViewZuo.lua @@ -64,6 +64,11 @@ function M:init(url) FamilyJoinView.new() end) + --邀请按钮 + view:GetChild('btn_service').onClick:Set(function() + ViewUtil:ErrorTip("还没又加载微信") + end) + --管理页面 view:GetChild('btn_manager').onClick:Set(function() FamilyManagerView.new({pageType=1}) diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua index a778763d..485c1364 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua @@ -1,5 +1,7 @@ +--管理or设置 local ManagerChild_GamePlayView = import(".ManagerChild_GamePlayView") local ManagerChild_PlayerView = import(".ManagerChild_PlayerView") +local ManagerChild_SettingView = import(".ManagerChild_SettingView") --成员 local ManagerMenberChild_PlayerView = import(".ManagerMenberChild_PlayerView") local ManagerMenberChild_JoinsView = import(".ManagerMenberChild_JoinsView") @@ -12,18 +14,19 @@ local FamilyManagerTable = {} local M = FamilyManagerTable M.ManagerTable = { - { id = 1, title = "成员管理", view = ManagerChild_PlayerView }, - { id = 2, title = "快速组局", view = ManagerChild_GamePlayView }, + { id = 1, title = "基本设置", view = ManagerChild_SettingView }, + { id = 2, title = "成员管理", view = ManagerChild_PlayerView }, + { id = 3, title = "快速组局", view = ManagerChild_GamePlayView }, --成员管理页面 - { id = 3, title = "成员列表", view = ManagerMenberChild_PlayerView }, - { id = 4, title = "进驻申请", view = ManagerMenberChild_JoinsView }, - { id = 5, title = "离开申请", view = ManagerMenberChild_ExitsView }, - { id = 6, title = "离开申请", view = ManagerMenberChild_DisInviteView }, - { id = 7, title = "离开申请", view = ManagerMenberChild_DisSameDeskView } + { id = 4, title = "成员列表", view = ManagerMenberChild_PlayerView }, + { id = 5, title = "进驻申请", view = ManagerMenberChild_JoinsView }, + { id = 6, title = "离开申请", view = ManagerMenberChild_ExitsView }, + { id = 7, title = "屏蔽邀请", view = ManagerMenberChild_DisInviteView }, + { id = 8, title = "禁止Ta进房", view = ManagerMenberChild_DisSameDeskView } } M.ManagerShow = { - { 1, 2 }, --群主 + { 1,2, 3 }, --群主 {}, --代理 {} --用户 } diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyMenberManagerDisDetailView.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyMenberManagerDisDetailView.lua new file mode 100644 index 00000000..ad8c2c81 --- /dev/null +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyMenberManagerDisDetailView.lua @@ -0,0 +1,84 @@ +local FamilyMenberManagerDisDetailView = {} + +local M = FamilyMenberManagerDisDetailView + +function FamilyMenberManagerDisDetailView.new(data, callback) + setmetatable(M, { __index = BaseWindow }) + local self = setmetatable({}, { __index = M }) + self.class = "FamilyMenberManagerDisDetailView" + self._data = data or {} + self._callback = callback + self._close_destroy = true + self._new_hide = false + self:init("ui://Family/FamilyMenberManagerDisDetail") + return self +end + +function M:init(url) + getmetatable(M).__index.init(self, url) + + self._data.type = self._data.type or 1 + local view = self._view + + self._viewList_player = view:GetChild('list_player') + self._viewList_player.itemRenderer = handler(self, self.PlayerRenderer) + + self._viewText_search = self._view:GetChild('input_search') + view:GetChild('btn_search').onClick:Set(handler(self,self.ClickSearch)) + view:GetChild('btn_return').onClick:Set(handler(self,self.ShowAllMenber)) + self:FillData() +end + +function M:ClickSearch() + local text = self._viewText_search.text + local tmpTable = self._fillData + local searchData = {} + for i,v in ipairs(tmpTable) do + if v.uid == tonumber(text) or string.find(v.nick,text) then + table.insert(searchData,v) + end + end + self._fillData= searchData + self._viewList_player.numItems = #self._fillData + self._view:GetController('search').selectedIndex = 1 +end + +function M:PlayerRenderer(index, obj) + local info = self._fillData[index + 1] + + ImageLoad.Load(info.portrait, obj:GetChild('btn_head')._iconObject) + obj:GetChild('text_name').text = info.nick + obj:GetChild('text_id').text = string.format("标识:%s", info.uid) + obj:GetChild('btn_add').onClick:Set(function() + ViewUtil:ErrorTip("暂时还未开放此功能。") + end) +end + +function M:ShowAllMenber() + self._viewText_search.text = "" + self._fillData = DataManager.CurrenGroup.members + self._viewList_player.numItems = #self._fillData +end + +function M:FillData() + self:ShowAllMenber() + + self:Show() +end + +-- 打开窗口 +function M:Show() + getmetatable(M).__index.Show(self) +end + +-- 关闭窗口 +function M:Close() + getmetatable(M).__index.Close(self) +end + +-- 销毁窗口 +function M:Destroy() + getmetatable(M).__index.Destroy(self) +end + +return M diff --git a/lua_probject/base_project/Game/View/FamilyZuo/ManagerChild_SettingView.lua b/lua_probject/base_project/Game/View/FamilyZuo/ManagerChild_SettingView.lua new file mode 100644 index 00000000..a1518be9 --- /dev/null +++ b/lua_probject/base_project/Game/View/FamilyZuo/ManagerChild_SettingView.lua @@ -0,0 +1,109 @@ +local FamilyRoomCardView = import(".FamilyRoomCardView") + +local ManagerChild_SettingView = {} + +local M = ManagerChild_SettingView + +function ManagerChild_SettingView.new(data, callback) + local self = setmetatable({}, { __index = M }) + self.class = "ManagerChild_SettingView" + self._data = data or {} + self._callback = callback + self:init("ui://Family/ManagerChild_Setting") + return self +end + +function M:init(url) + local root = self._data.root + if not root then + ViewUtil:ErrorTip("点击太快,请重新打开页面") + return + end + local page = root._view:GetChild('page') + ViewUtil.LoadPage(page, url, function(view) + self._view = view + + view:GetChild('btn_dissolveRoom').onClick:Set(function() + + end) + + view:GetChild('btn_add').onClick:Set(function() + FamilyRoomCardView.new({}) + end) + + view:GetChild('btn_record').onClick:Set(function() + + end) + + view:GetChild('btn_dissolveRoomDetail').onClick:Set(handler(self, self.ClickDissolveDetail)) + view:GetChild('btn_witness').onClick:Set(handler(self, self.ClickWitnessDetail)) + + self._viewCheck_hideDesk = view:GetChild('check_hideDesk') + self._viewCheck_hideDesk.onClick:Set(handler(self, self.ClickCheckHideDesk)) + view:GetChild('check_dissolveRoom').onClick:Set(handler(self, self.ClickCheckDissolveRoom)) + self._viewCheck_witness = view:GetChild('check_witness') + self._viewCheck_witness.onClick:Set(handler(self, self.ClickCheckWitness)) + + self:FillData() + end) +end + +function M:ClickDissolveDetail() + +end + +function M:ClickWitnessDetail() + +end + +function M:ClickCheckHideDesk() + local mgr_ctr = ControllerManager.GetController(GroupMgrController) + mgr_ctr:FG_SetShowStartRoom(DataManager.CurrenGroup.id, self._viewCheck_hideDesk.selected and 1 or 0, function(res) + --因为没有回调,这边先把值设置好 + if res.ReturnCode ~= 0 then + ViewUtil.ErrorTip(res.ReturnCode,"设置失败") + self._viewCheck_hideDesk.selected = not self._viewCheck_hideDesk.selected + return + else + ViewUtil:ErrorTip("设置成功") + end + end) +end + +function M:ClickCheckDissolveRoom() + +end + +function M:ClickCheckWitness() + +end + +function M:FillData() + local view = self._view + local group = DataManager.CurrenGroup + + view:GetChild('list_gameName').selectedIndex = 0 + view:GetChild('text_name').text = group.name + view:GetChild('text_id').text = group.id + view:GetChild('text_fangka').text = group.groupDiamo + + self._viewCheck_hideDesk.selected = group.isOpenStartRoom == 1 + self._viewCheck_witness.selected = group.isWatch == 1 +end + +-- 打开窗口 +function M:Show() + getmetatable(M).__index.Show(self) +end + +-- 关闭窗口 +function M:Close() + getmetatable(M).__index.Close(self) +end + +-- 销毁窗口 +function M:Destroy() + getmetatable(M).__index.Destroy(self) +end + +return M diff --git a/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisInviteView.lua b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisInviteView.lua index 0039ac78..503acfcb 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisInviteView.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisInviteView.lua @@ -1,3 +1,5 @@ +local FamilyMenberManagerDisDetailView = import(".FamilyMenberManagerDisDetailView") + local ManagerMenberChild_DisInviteView = {} local M = ManagerMenberChild_DisInviteView @@ -20,9 +22,22 @@ function M:init(url) local page = root._view:GetChild('page') ViewUtil.LoadPage(page, url, function(view) self._view = view + + view:GetChild('check_disAllInvite').onClick:Set(handler(self,self.ClickDisAll)) + view:GetChild('btn_add').onClick:Set(handler(self,self.ClickAdd)) + + self:FillData() end) end +function M:ClickDisAll() + ViewUtil:ErrorTip("当前功能还没开放") +end + +function M:ClickAdd() + FamilyMenberManagerDisDetailView.new() +end + function M:FillData() end diff --git a/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisSameDeskView.lua b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisSameDeskView.lua index 0039ac78..92de0e82 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisSameDeskView.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_DisSameDeskView.lua @@ -1,13 +1,15 @@ -local ManagerMenberChild_DisInviteView = {} +local FamilyMenberManagerDisDetailView = import(".FamilyMenberManagerDisDetailView") -local M = ManagerMenberChild_DisInviteView +local ManagerMenberChild_DisSameDeskView = {} -function ManagerMenberChild_DisInviteView.new(data, callback) +local M = ManagerMenberChild_DisSameDeskView + +function ManagerMenberChild_DisSameDeskView.new(data, callback) local self = setmetatable({}, { __index = M }) - self.class = "ManagerMenberChild_DisInviteView" + self.class = "ManagerMenberChild_DisSameDeskView" self._data = data or {} self._callback = callback - self:init("ui://Family/ManagerMenberChild_DisInvite") + self:init("ui://Family/ManagerMenberChild_DisSameDesk") return self end @@ -20,11 +22,17 @@ function M:init(url) local page = root._view:GetChild('page') ViewUtil.LoadPage(page, url, function(view) self._view = view + + view:GetChild('btn_add').onClick:Set(handler(self, self.ClickAdd)) + self:FillData() end) end -function M:FillData() +function M:ClickAdd() + FamilyMenberManagerDisDetailView.new() +end +function M:FillData() end -- 打开窗口 diff --git a/lua_probject/base_project/table/xieyi.text b/lua_probject/base_project/table/xieyi.text index f7f60751..8db7e52a 100644 --- a/lua_probject/base_project/table/xieyi.text +++ b/lua_probject/base_project/table/xieyi.text @@ -1,4 +1,7 @@ 缺少协议 内容是自己与亲友圈的相关操作,比如说创建解散亲友圈,加入退出亲友圈 未找到协议 玩家发送申请退出亲友圈 未找到协议 群主可以审批玩家是否退出亲友圈 -未找到协议 小黑屋协议 \ No newline at end of file +未找到协议 小黑屋协议 +未找到协议 禁止邀请 +未找到协议 禁止ta加入房间 +未找到协议 解散房间设置 \ No newline at end of file diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView.lua index c288d906..27f00d64 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView.lua @@ -188,7 +188,7 @@ function M:SetOutCardInfo(cardlist, isPass, isAnim) local poker_item = self._view_Out:AddItemFromPool() self:FillPoker2(poker_item, showOneCard) - self._view:GetChild('text_paiNum').text = string.format("X%s", #cardlist) + -- self._view:GetChild('text_paiNum').text = string.format("X%s", #cardlist) else printlog("error 190", "除了鬼牌没有其他牌") end @@ -473,28 +473,28 @@ function M:FillPoker2(poker, code, suffix) suffix = suffix or "" code = code == 1 and "00" or code if not poker.icon then - poker:GetChild('icon').url = string.format("ui://Extend_Poker_DuoDuo/%s%s", code, suffix) + poker:GetChild('icon').url = string.format("ui://Main_Poker/%s%s", code, suffix) else - poker.icon = string.format("ui://Extend_Poker_DuoDuo/%s%s", code, suffix) + poker.icon = string.format("ui://Main_Poker/%s%s", code, suffix) end end function M:CreatPoker1(poker, scale, bank) - local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker" .. scale * 10) + local poker_item = UIPackage.CreateObject("Main_Poker", "poker" .. scale * 10) local code = self:ChangeCodeByTo(poker) local card_code_obj if DataManager.CurrenRoom.pai == 0 then if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then -- body - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_1") else - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code) end else if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then -- body - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") else card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") end @@ -510,20 +510,20 @@ function M:CreatPoker1(poker, scale, bank) end function M:CreatPoker(poker, scale, bank) - local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker" .. 12.5) + local poker_item = UIPackage.CreateObject("Main_Poker", "poker" .. 12.5) local code = self:ChangeCodeByTo(poker) local card_code_obj if DataManager.CurrenRoom.pai == 0 then if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then -- body - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_1") else - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code) end else if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then -- body - card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") else card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") end diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView_tuo.lua b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView_tuo.lua new file mode 100644 index 00000000..c288d906 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerPokerInfoView_tuo.lua @@ -0,0 +1,562 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 16:35 +--- +local EXPlayerPokerInfoView = { + _view = nil, + _mainView = nil, + _mask_liangpai = nil, +} + +local M = EXPlayerPokerInfoView + +function M.new(view, mainView) + local self = {} + setmetatable(self, { __index = M }) + self._view = view + self._mainView = mainView + self:init() + return self +end + +function M:init() + local view = self._view + self._gameCtr = ControllerManager.GetController(GameController) + + self.item_data = json.decode(self._view:GetChild("area_mask").text) + self.out_card_data = self.item_data["outcard_list"] + self._mask_liangpai = view:GetChild("mask_liangpai") + self.ctr_outpoker = view:GetController("output") + self.outpoker_list = view:GetChild(self.out_card_data["parent"]) + + -- self.hand_card_list = view:GetChild("hand_card_list") + self.hand_card_list = view:GetChild("list_backHand") + + self.ctr_one_card = view:GetController("one_card") + self.eff_one_card = view:GetChild("one_card_eff"):GetTransition("t0") + + self.text_bomb_score = view:GetChild("Score") + self.ani_bomb_score = view:GetTransition("score") + self.ani_result_score = view:GetTransition("score_1") + + ------------------------------lingmeng------------------------ + + self._view_Out = self._view:GetChild('List_Out') + self._view_resultOut = self._view:GetChild('list_resultOut') + self._ctr_resultOut = self._view:GetController('resultOut') + self._ctr_time_clock = self._view:GetController('time_clock') + self._view_comp_clock = self._view:GetChild('Comp_Clock') + -------------------------------------------------------------- +end + +-- function M:SetOutCardInfo(cardlist, isPass, isAnim) +-- self.outpoker_list:RemoveChildren(0, -1, true) +-- if cardlist == nil then +-- if isPass == true then +-- self.ctr_outpoker.selectedIndex = 2 +-- else +-- self.ctr_outpoker.selectedIndex = 0 +-- end +-- else +-- if isAnim then +-- if self.move_cor then +-- coroutine.stop(self.move_cor) +-- self.move_cor = nil +-- end +-- local time = 0.1 +-- for i = 1, #cardlist do +-- local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker7") +-- local code = self:ChangeCodeByTo(cardlist[i]) +-- -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code) +-- -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") +-- local card_code_obj +-- -- if DataManager.CurrenRoom.pai==0 then +-- -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code) +-- -- else +-- -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") +-- -- end +-- -- if code==310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- -- body +-- -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code.."_1") +-- -- end +-- if DataManager.CurrenRoom.pai == 0 then +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) +-- end +-- else +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") +-- end +-- end +-- if card_code_obj == nil then +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") +-- end +-- poker_item:AddChild(card_code_obj) +-- --local poker = self:CreatPoker(cardlist[i],0.7) +-- self.outpoker_list:AddChild(poker_item) +-- poker_item.xy = Vector2.New(self.out_card_data["start_x"], self.out_card_data["start_y"]) +-- poker_item:TweenMove( +-- self:GetOutCardEndPokerPos(i, #cardlist, self.outpoker_list, poker_item, self.out_card_data +-- ["maxcount_x"], 1.5), time) +-- --card_code_obj +-- -- self.tween = TweenUtils.TweenFloat(1,0.7,time,function(x) +-- -- card_code_obj:SetScale(x,x) +-- -- end) +-- card_code_obj:SetScale(1.5, 1.5) +-- end +-- self.move_cor = coroutine.start(function() +-- coroutine.wait(0.1) +-- ViewUtil.PlaySound("DuoDuo_PK", "extend/poker/duoduo/sound/chupai.mp3") +-- end) +-- else +-- for i = 1, #cardlist do +-- local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker7") +-- local code = self:ChangeCodeByTo(cardlist[i]) +-- local card_code_obj +-- if DataManager.CurrenRoom.pai == 0 then +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) +-- end +-- else +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") +-- end +-- end +-- if card_code_obj == nil then +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") +-- end +-- card_code_obj:SetScale(1.5, 1.5) +-- poker_item:AddChild(card_code_obj) +-- --local poker = self:CreatPoker(cardlist[i],0.7) +-- self.outpoker_list:AddChild(poker_item) +-- poker_item.xy = self:GetOutCardEndPokerPos(i, #cardlist, self.outpoker_list, poker_item, +-- self.out_card_data["maxcount_x"], 1.5) +-- end +-- end +-- --self.ctr_outpoker.selectedIndex = 1 +-- end +-- end + +function M:SetOutCardInfo(cardlist, isPass, isAnim) + self._view_Out:RemoveChildren(0, -1, true) + if cardlist == nil then + if isPass == true then + self.ctr_outpoker.selectedIndex = 2 + else + self.ctr_outpoker.selectedIndex = 0 + end + else + self.ctr_outpoker.selectedIndex = 1 + -- if isAnim then + -- if self.move_cor then + -- coroutine.stop(self.move_cor) + -- self.move_cor = nil + -- end + -- for i = 1, #cardlist do + -- local poker_item = self._view_Out:AddItemFromPool() + -- local code = self:ChangeCodeByTo(cardlist[i]) + + -- self:FillPoker(poker_item, "", cardlist[i]) + -- end + -- self.move_cor = coroutine.start(function() + -- coroutine.wait(0.1) + -- ViewUtil.PlaySound("DuoDuo_PK", "extend/poker/duoduo/sound/chupai.mp3") + -- end) + -- else + local showOneCard + for i = 1, #cardlist do + if cardlist[i] % 100 < 3 then + local poker_item = self._view_Out:AddItemFromPool() + self:FillPoker2(poker_item, cardlist[i]) + else + showOneCard = cardlist[i] + end + end + if showOneCard then + local poker_item = self._view_Out:AddItemFromPool() + + self:FillPoker2(poker_item, showOneCard) + self._view:GetChild('text_paiNum').text = string.format("X%s", #cardlist) + else + printlog("error 190", "除了鬼牌没有其他牌") + end + self._view_Out:ResizeToFit(self._view_Out.numItems) + -- end + end +end + +function M:SetOutCardBlack() + for i = 0, self.outpoker_list.numChildren - 1 do + self.outpoker_list:GetChildAt(i):GetChildAt(0):GetChildAt(0):GetChildAt(0).color = Color(0.7, 0.7, 0.7) + end +end + +-- 12 -61 --11 58 --10 55 --46 +function M:GetOffSet(cardLength) -- 15 -70 + if cardLength > 8 then + return 52 --40 + else + return -cardLength * -10 + 60 + end +end + +function M:GetOutCardEndFirstPokerPos(count, parent_com, poker_obj, max_count, scale) + local parent_width, parent_height = parent_com.width, parent_com.height + local poker_width, poker_height = poker_obj.width * scale, poker_obj.height * scale + local offset = self:GetOffSet(count) + local x, y = 0, 0 + --local length = (count - 1) * (poker_width + offset) + poker_width + --if length <= parent_width then + -- x = (parent_width - length) / 2 + -- y = (parent_height - poker_height) / 2 + --end + if count <= max_count then + local length = (count - 1) * offset + poker_width + x = (parent_width - length) / 2 + y = ((parent_height - poker_height) / 2) + end + return Vector2.New(x, y) +end + +function M:GetOutCardEndPokerPos(index, count, parent_com, poker_obj, max_count, scale) + local offset_x, offset_y = self:GetOffSet(count), -100 + local start_pos = self:GetOutCardEndFirstPokerPos(count, parent_com, poker_obj, max_count, scale) + local poker_width, poker_height = poker_obj.width * scale, poker_obj.height * scale + local parent_width, parent_height = parent_com.width, parent_com.height + local pos_x, pos_y = start_pos.x + (index - 1) * offset_x, start_pos.y + if index > max_count then + pos_x = (index - max_count - 1) * offset_x + pos_y = pos_y + poker_height + offset_y + end + + return Vector2.New(pos_x, pos_y) +end + +-- function M:PlayCardTypeEff(type1) +-- if type1 < 7 and type1 ~= 4 then return end +-- local eff_code = 0 +-- if type1 == 10 then +-- eff_code = 2 +-- elseif type1 == 11 then +-- eff_code = 3 +-- elseif type1 == 4 then +-- eff_code = 4 +-- else +-- eff_code = 1 +-- end +-- if self.cro_type_eff ~= nil then +-- coroutine.stop(self.cro_type_eff) +-- end +-- self.cro_type_eff = nil +-- self.cro_type_eff = coroutine.start(function() +-- self.type_eff_view = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/eff_"..eff_code) +-- if self.type_eff_view == nil then return end +-- self._view:AddChild(self.type_eff_view) +-- self.type_eff_view:SetXY((self._view.width - self.type_eff_view.width) / 2,self.outpoker_list.y) +-- self.type_eff_view:GetTransition("t0"):Play() +-- coroutine.wait(1.5) +-- if self.type_eff_view ~= nil then +-- self.type_eff_view:Dispose() +-- self.type_eff_view = nil +-- end +-- end) +-- end + +function M:PlayScore(score, isBomb, isWin) + if score == nil then + self.text_bomb_score.alpha = 0 + return + end + if isBomb then + self.text_bomb_score.text = score >= 0 and "+" .. score or tostring(score) + self.text_bomb_score.grayed = score < 0 + self.ani_bomb_score:Play() + else + if score < 0 then + self.text_bomb_score.text = tostring(score) + self.text_bomb_score.grayed = true + elseif score > 0 then + self.text_bomb_score.text = "+" .. score + self.text_bomb_score.grayed = false + else + local str = isWin and "+" or "-" + self.text_bomb_score.text = str .. score + self.text_bomb_score.grayed = not isWin + end + self.ani_result_score:Play() + end +end + +function M:UpdateHandPoker(cardList, isPlayAni, isMing) + if self.cor_init_poker ~= nil then + coroutine.stop(self.cor_init_poker) + end + self.cor_init_poker = nil + self.card_list = {} + self.hand_card_list:RemoveChildren(0, -1, true) + local card_length + local new_card_list + if isMing == true then + new_card_list = self._gameCtr:ChangeCodeByFrom(cardList, true) + card_length = #cardList + else + card_length = cardList + end + if isPlayAni == true then + self.cor_init_poker = coroutine.start(function() + for i = card_length, 1, -1 do + local code = isMing == true and new_card_list[i] or 0 + coroutine.wait(0.01) + local poker = self:CreatPoker1(code, 0.4) + self.hand_card_list:AddChild(poker) + end + end) + else + for i = card_length, 1, -1 do + local code = isMing == true and new_card_list[i] or 0 + local card_number_code = self:ChangeOneCodeByFrom(cardList[i]) + local btn_card = self.hand_card_list:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + end + end +end + +function M:SetRemainCardNumber(isPlay) + if isPlay then + self.ctr_one_card.selectedIndex = 1 + self.eff_one_card:Play(-1, 0, nil) + else + self.ctr_one_card.selectedIndex = 0 + end + --if self.card_number then + -- self.card_number.visible = show + -- self.card_number.text = string.format("剩余:%d",number) + --end +end + +function M:PlayEffect(type, callback) + Timer.New(function() + local fristCard = self._view_Out:GetChildAt(0) + local lastCard = self._view_Out:GetChildAt(self._view_Out.numItems - 1) + local fristXy = self._view_Out:GlobalToLocal(fristCard:LocalToGlobal(Vector2.New( + fristCard.width * 0, + fristCard.height * 0.5))) + local lastXy = self._view_Out:GlobalToLocal(lastCard:LocalToGlobal( + Vector2.New(lastCard.width * 1, + lastCard.height * 0.5))) + local effect = "" + local y = 0 + local x = 0 + local width = 0 + if type == 10 then + effect = "te_liandui" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 4 then + effect = "te_sandaidui" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 11 then + effect = "te_sandaidan" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 2 then + effect = "te_shunzi" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + width = (lastXy.x - fristXy.x) / 1.5 + elseif type == 5 or type == 8 or type == 12 then + effect = "te_feiji" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + width = (lastXy.x - fristXy.x) / 1.5 + elseif type == 6 then + effect = "te_zhadan" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 9 then + effect = "te_sidaisab" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + end + if #effect > 0 then + local obj = UIPackage.CreateObjectFromURL(string.format("ui://Extend_Poker_DuoDuo/%s", effect)) + obj.visible = false + self._view:AddChild(obj) + obj:SetScale(1.3, 1.3) + if y ~= 0 then + obj.y = y + end + if x ~= 0 then + obj.x = x + end + if width ~= 0 then + obj.width = width + end + obj.visible = true + if type == 2 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:GetChild('n11'):TweenMoveX(width * 1.03, 0.3):OnComplete(function() + obj:Dispose() + callback() + end) + obj:GetChild('n12'):TweenMoveX(width * 1.03 - 121, 0.3) + obj:GetChild('n11'):TweenFade(0, 0.3) + obj:GetChild('n12'):TweenFade(0, 0.3) + end) + elseif type == 5 or type == 8 or type == 12 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:GetChild('n13'):TweenMoveX(width * 0.7, 0.4):OnComplete(function() + obj:Dispose() + callback() + end) + obj:GetChild('n14'):TweenMoveX(width * 0.7 - 120, 0.4) + obj:GetChild('n13'):TweenFade(1, 0.2):OnComplete(function() + obj:GetChild('n13'):TweenFade(0, 0.4) + obj:GetChild('n14'):TweenFade(0, 0.4) + end) + end) + elseif type == 6 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:Dispose() + end) + callback() + else + obj:GetTransition('t0'):Play(1, 0, function() + obj:Dispose() + callback() + end) + end + else + callback() + end + end, Time.deltaTime, 1, false):Start() +end + +function M:ChangeOneCodeByFrom(card) + local flower = math.floor(card / 100) + local number = card % 100 + if number == 2 then + number = 15 + end + return number * 10 + flower +end + +function M:FillPoker(poker, prefix, num, code) + if num ~= nil then + code = self:ChangeCodeByTo(num) + end + local suffix = code == 310 and + (DataManager.CurrenRoom.pai == 0 and (DataManager.CurrenRoom.room_config.Heart10 == 2 and "_1" or "") or "_2") or + "" + code = code == 1 and "00" or code + if not poker.icon then + poker:GetChild('icon').url = string.format("ui://Main_Poker/%s%s%s", prefix, code, suffix) + else + poker.icon = string.format("ui://Main_Poker/%s%s%s", prefix, code, suffix) + end +end + +function M:FillPoker2(poker, code, suffix) + suffix = suffix or "" + code = code == 1 and "00" or code + if not poker.icon then + poker:GetChild('icon').url = string.format("ui://Extend_Poker_DuoDuo/%s%s", code, suffix) + else + poker.icon = string.format("ui://Extend_Poker_DuoDuo/%s%s", code, suffix) + end +end + +function M:CreatPoker1(poker, scale, bank) + local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker" .. scale * 10) + local code = self:ChangeCodeByTo(poker) + local card_code_obj + + if DataManager.CurrenRoom.pai == 0 then + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + end + end + if card_code_obj == nil or bank == 1 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") + end + + card_code_obj:SetScale(scale, scale) + poker_item:AddChild(card_code_obj) + + return poker_item +end + +function M:CreatPoker(poker, scale, bank) + local poker_item = UIPackage.CreateObject("Extend_Poker_DuoDuo", "poker" .. 12.5) + local code = self:ChangeCodeByTo(poker) + local card_code_obj + if DataManager.CurrenRoom.pai == 0 then + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_1") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_DuoDuo/" .. code .. "_2") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + end + end + if card_code_obj == nil or bank == 1 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") + end + card_code_obj:SetScale(scale, scale) + poker_item:AddChild(card_code_obj) + + return poker_item +end + +function M:ChangeCodeByTo(card) + local flower = card % 10 + local number = math.floor(card / 10) + if number == 15 then + number = 2 + end + return flower * 100 + number +end + +function M:Clear() + self:PlayScore(nil) + self:SetRemainCardNumber(false) + self:SetOutCardInfo(nil, false) + self.hand_card_list:RemoveChildren(0, -1, true) + self._mask_liangpai:RemoveChildren(0, -1, true) + self._view_Out:RemoveChildren(0, -1, true) + self._view_resultOut:RemoveChildren(0, -1, true) +end + +function M:Destroy() +end + +return M diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView.lua index b1d370e0..3f75e32a 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView.lua @@ -74,7 +74,6 @@ function M:init() self.text_bomb_score = self._view:GetChild('Score') self.ani_bomb_score = self._view:GetTransition('score') self.ani_result_score = self._view:GetTransition('score_1') - self._viewList_move = self._view:GetChild('list_moveCards') self.send_card = {} self.tips_click_count = 0 @@ -99,13 +98,11 @@ function M:InitPoker(pokerList, isPlayAni, open) -- -- print(vardump(self.card_list)) self.cor_init_poker = nil self.card_list = {} - self.newCard_list = {} self._ctr_canSendCard.selectedIndex = 0 self._flag_ruleCard = false self._view_handCard:RemoveChildren(0, -1, true) - self.scaleW = (GRoot.inst.width * 0.85 - self._view_handCard.columnGap * 14) / 15 - self._viewList_move.width = self.scaleW - self.scaleH = self.scaleW * 1.3 + self.scaleW = (GRoot.inst.width * 0.86 - self._view_handCard.columnGap * 26) / 27 + self.scaleH = self.scaleW * 1.4 if isPlayAni == true then self.cor_init_poker = coroutine.start( @@ -175,13 +172,25 @@ function M:InitPoker(pokerList, isPlayAni, open) ) else for i = #pokerList, 1, -1 do - if not self.newCard_list[pokerList[i] % 100] then - self.newCard_list[pokerList[i] % 100] = {} - end - self.newCard_list[pokerList[i] % 100][math.floor(pokerList[i] / 100)] = (self.newCard_list[pokerList[i] % 100][math.floor(pokerList[i] / 100)] or 0) + - 1 + local card_number_code = self:ChangeOneCodeByFrom(pokerList[i]) + local card_flower_code = pokerList[i] + local btn_card = self._view_handCard:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + local card_view = NewCardView(btn_card, card_number_code, card_flower_code) + self.card_list[#self.card_list + 1] = card_view + btn_card.data = card_view + btn_card.width = self.scaleW + btn_card.height = self.scaleH + end + table.sort(self.card_list, tableSortNumber) + self:AddTouchMoveEvent(self._view_handCard) + for i = 1, #self.card_list do + local card = self.card_list[i] + if open ~= 1 then + -- body + self:AddCardTouchEvent(card) + end end - self:UpdateHandCardsPos() end end @@ -196,18 +205,23 @@ end function M:AddTouchMoveEvent(list) local send_card = {} - -- list.onTouchBegin:Set( - -- function(context) - -- self.send_card = {} - -- if list.touchable == false then - -- return - -- end - -- local xy = self._view_handCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - -- self.touchBegin = xy - -- Stage.inst.onTouchMove:Add(self.touchMoveFun) - -- Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) - -- end - -- ) + list.onTouchBegin:Set( + function(context) + self.send_card = {} + if list.touchable == false then + return + end + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth - columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + -- if xy.y > -21 and xy.y < 316 then + self.touchBegin = xy + Stage.inst.onTouchMove:Add(self.touchMoveFun) + Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) + end + ) end function M:AddCardTouchEvent(card) @@ -216,32 +230,7 @@ function M:AddCardTouchEvent(card) if card.btn_card.touchable == false then return end - local cardList = card.fatherList - local touchIndex = cardList:GetChildIndex(card.btn_card) - self._SendCards = {} - self.touchCard = card - self.touchIndex = touchIndex - local copy_list = self._viewList_move:GetChild('list') - for i = 0, touchIndex do - local oncard = cardList:GetChildAt(i) - self:SetBtnCardColor(oncard.data, 1) - --复制一份列表作为移动对象 - local copy_card = copy_list:AddItemFromPool() - self:FillPoker2(copy_card, oncard.data.card_code_flower) - copy_card.height = self.scaleH - if oncard.data.zha then - for j = 1, 4 do - table.insert(self._SendCards, oncard.data.card_code_flower) - end - else - table.insert(self._SendCards, oncard.data.card_code_flower) - end - end - local xy = self.touchCard.fatherList:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - self._viewList_move.xy = self._view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - Vector2.New(self.scaleW/2,self.scaleH + (self.scaleH + self.linegap)*(copy_list.numItems-1) + self.linegap) - self.touchBegin = xy - self._viewList_move.xy - Stage.inst.onTouchMove:Add(self.touchMoveFun) - Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) + self:SetBtnCardColor(card, 1) end ) end @@ -282,61 +271,119 @@ function M:TouchMoving(context) return end local send_card1 = {} - local xy = self.touchCard.fatherList:GlobalToLocal(Vector2.New(context.inputEvent.x, - context.inputEvent.y)) - self._viewList_move.xy = xy - self.touchBegin + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth + columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + self.isTouching = true + local max_x + local min_x + if xy.x - self.touchBegin.x > 0 then -- 往右边滑 + max_x = xy.x + min_x = self.touchBegin.x + -- elseif xy.x - self.touchBegin.x < 0 then -- 左边滑 + else + max_x = self.touchBegin.x + min_x = xy.x + end + + for i = 1, self._view_handCard.numItems do + local card = self._view_handCard:GetChildAt(i - 1).data + if card.btn_card.touchable == false or card.card_isTouchable == 1 then + else + if + (card.btn_card.x + oneCardWidth > min_x or (i == #self.card_list and card.btn_card.x + CardWidth > min_x)) + and card.btn_card.x < max_x + then + self:SetBtnCardColor(card, 1) + if #send_card1 == 0 then + send_card1[1] = card + end + if send_card1[#send_card1] ~= card then + send_card1[#send_card1 + 1] = card + end + else + self:SetBtnCardColor(card, 0) + end + end + end + self.send_card = send_card1 end function M:TouchMoveEnd(context) - local linexy = self._view_handCard:GlobalToLocal(Vector2.New(context.inputEvent.x, - context.inputEvent.y)) + local send_card = {} + local currentCard = {} + local xuan_card = {} - if self.ctr_put_card_option.selectedIndex > 0 then - local allcards = {} - for k, v in pairs(self.newCard_list) do - for k1, v1 in pairs(v) do - if v1 > 0 then - for i = 1, v1 do - local card_flower_code = k1 * 100 + k - table.insert(allcards, card_flower_code) - end - end - end - end - if linexy.y < self._view:GetChild('n82').y then - self.gameCtr:SendCard(self._SendCards, allcards) - else - if self.touchCard.card_code_flower % 100 < 3 then - for i = self._view_handCard.numItems - 1, 0, -1 do - local oneCardList = self._view_handCard:GetChildAt(i):GetChild('list') - local listxy = oneCardList:GlobalToLocal(Vector2.New(context.inputEvent.x, - context.inputEvent.y)) - if listxy.x > 0 and oneCardList:GetChildAt(0).data.card_code_flower % 100 > 2 then - for i = 0, oneCardList.numItems - 1 do - local oncard = oneCardList:GetChildAt(i) - if oncard.data.zha then - for j = 1, 4 do - table.insert(self._SendCards, oncard.data.card_code_flower) - end - else - table.insert(self._SendCards, oncard.data.card_code_flower) - end - end - self.gameCtr:SendCard(self._SendCards, allcards) - break - end - end - end - end - end - self._viewList_move:GetChild('list'):RemoveChildrenToPool() - for i = 0, self.touchIndex do - local oncard = self.touchCard.fatherList:GetChildAt(i) - self:SetBtnCardColor(oncard.data, 0) - oncard.xy = Vector2.New(0, (self.scaleH + self.linegap) * i) - end + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth + columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + local downCards = #self.card_list Stage.inst.onTouchMove:Remove(self.touchMoveFun) Stage.inst.onTouchEnd:Remove(self.touchMoveEndFun) + + local max_x + local min_x + if xy.x - self.touchBegin.x > 0 then + max_x = xy.x + min_x = self.touchBegin.x + else + max_x = self.touchBegin.x + min_x = xy.x + end + + for k = 1, self._view_handCard.numItems do + local card = self._view_handCard:GetChildAt(k - 1).data + table.insert(currentCard, card.card_code_flower) + if not card.btn_card.selected then + downCards = downCards - 1 + end + if card.btn_card.touchable == false or card.card_isTouchable == 1 then + else + self:SetBtnCardColor(card, 0) + if + (card.btn_card.x + oneCardWidth > min_x or (k == #self.card_list and card.btn_card.x + CardWidth > min_x)) + and card.btn_card.x < max_x + then + self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false) + if card.btn_card.selected then + send_card[#send_card + 1] = card + end + --ViewUtil.PlaySound("RunFastNew_PK", "extend/poker/paodekuai/sound/click.mp3") + else + if card.btn_card.selected then + send_card[#send_card + 1] = card + end + end + end + end + + -- ViewUtil.PlaySound('RunFastNew_PK', 'extend/poker/runfast/sound/click.mp3') + + Stage.inst:ResetInputState() + + if downCards == 0 then + xuan_card = self:zhizhanxuanpai() + end + + if #send_card > 0 then + table.sort(send_card, tableSortNumber) + send_card = #xuan_card > 0 and xuan_card or send_card + self._cardCheck:initCards(send_card, + { + flag = #xuan_card > 0, + flag_allCards = #send_card == self._view_handCard.numItems, + flag_ruleCard = self + ._flag_ruleCard + }) + + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 + else + self._ctr_canSendCard.selectedIndex = 0 + end end -- function M:SetBtnCardColor(card, num) @@ -604,83 +651,28 @@ end function M:DeleteHandCards(cardlist) self.ctr_put_card_option.selectedIndex = 0 for i = 1, #cardlist do - local tmpNum = nil - if self.newCard_list[cardlist[i] % 100] then - tmpNum = self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] - end - if tmpNum then - if tmpNum == 1 then - self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] = nil - else - self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] = tmpNum - 1 - end - else - ViewUtil:ErrorTip("牌型出错,重新加载页面") - ViewManager.refreshGameView() - end - if i == #cardlist then - if #self.newCard_list[cardlist[i] % 100] == 0 then - self.newCard_list[cardlist[i] % 100] = nil + local card_code_number = cardlist[i] + for j = 1, #self.card_list do + local card = self.card_list[j] + if card_code_number == card.card_code_number then + list_remove(self.card_list, card) + self._view_handCard:RemoveChild(card.btn_card, true) + break end end end + self._view_handCard:ResizeToFit(self._view_handCard.numItems) self:UpdateHandCardsPos() end function M:UpdateHandCardsPos() - local maxHeight = 0 - self._view_handCard:RemoveChildrenToPool() - self._newCardSize = {} - self._viewList_move:GetChild('list'):RemoveChildrenToPool() - for k, v in pairs(self.newCard_list) do - local btn_cardListFather = self._view_handCard:AddItemFromPool() - btn_cardListFather.width = self.scaleW - -- btn_cardListFather.height = scaleH*12 - local btn_cardList = btn_cardListFather:GetChild('list') - btn_cardList:RemoveChildrenToPool() - self.linegap = btn_cardList.lineGap - local tmpHeight = 0 - local noZhaIndex = 0 - for k1, v1 in pairs(v) do - local card_number_code = k * 10 + k1 - local card_flower_code = k1 * 100 + k - if v1 ~= 4 then - for i = 1, v1 do - local btn_card = btn_cardList:GetFromPool('') - btn_cardList:AddChildAt(btn_card, noZhaIndex) - noZhaIndex = noZhaIndex + 1 - btn_card.height = self.scaleH - self:FillPoker2(btn_card, card_flower_code) - -- self.cards_view:AddChild(btn_card) - local card_view = NewCardView(btn_card, card_number_code, card_flower_code) - card_view.fatherList = btn_cardList - self.card_list[#self.card_list + 1] = card_view - btn_card.data = card_view - tmpHeight = tmpHeight + 1 - self:AddCardTouchEvent(card_view) - end - else - local btn_card = btn_cardList:AddItemFromPool() - btn_card.height = self.scaleH - self:FillPoker2(btn_card, card_flower_code, "_z") - -- self.cards_view:AddChild(btn_card) - local card_view = NewCardView(btn_card, card_number_code, card_flower_code) - card_view.fatherList = btn_cardList - card_view.zha = true - self.card_list[#self.card_list + 1] = card_view - btn_card.data = card_view - tmpHeight = tmpHeight + 1 - self:AddCardTouchEvent(card_view) - end - self._newCardSize[k1] = tmpHeight - end - - if tmpHeight > maxHeight then - maxHeight = tmpHeight - end + for i = 1, #self.card_list do + local card_view = self.card_list[i] + card_view.index = i + card_view.btn_card.touchable = true + self:UpdateCardMove(card_view.btn_card, false, false) + self:SetBtnCardColor(card_view, 0) end - self._view:GetChild('n82').y = self._view_handCard.height - - (self.scaleH + (self.scaleH + self.linegap) * (maxHeight - 1) + 50) end function M:ResetPoker() diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView_tuo.lua b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView_tuo.lua new file mode 100644 index 00000000..b1d370e0 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerSelfPokerInfoView_tuo.lua @@ -0,0 +1,1349 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 17:04 +--- +local EXPlayerPokerInfoView = import('.EXPlayerPokerInfoView') +local EXCardType = import('.EXCardType') +local EXCardCheck = import(".CardCheck") + +local CardView = { + btn_card = nil, + -- 牌号码 (大小) + card_code_number = 0, + -- 牌号码 (花色) + card_code_flower = 0, + -- 索引 + index = 0 +} + +local function NewCardView(card, cardcodenum, cardcodeflower) + local self = {} + setmetatable(self, { __index = CardView }) + self.btn_card = card + self.card_code_number = cardcodenum + self.card_code_flower = cardcodeflower + self.card_isTouchable = 0 + return self +end + +local function tableSortNumber(a, b) + return a.card_code_number > b.card_code_number +end + +local EXPlayerSelfPokerInfoView = { + _view = nil, + _mainView = nil, + _mask_liangpai = nil +} + +local M = EXPlayerSelfPokerInfoView + +function M.new(view, mainView) + setmetatable(M, { __index = EXPlayerPokerInfoView }) + local self = setmetatable({}, { __index = M }) + self._view = view + self._mainView = mainView + self.gameCtr = ControllerManager.GetController(GameController) + self:init() + return self +end + +function M:init() + self.Reset = false + self.ctr_outpoker = self._view:GetController('output') + self.outpoker_list = self._view:GetChild('out_card_list') + self.item_data = json.decode(self._view:GetChild('area_mask').text) + self.out_card_data = self.item_data['outcard_list'] + self.hand_card_list = self._view:GetChild('hand_card_list') + self.ctr_hand_card_pos = self._view:GetChild('hand_card_list') + self._mask_liangpai = self._view:GetChild('mask_liangpai') + self.card_width = 171 + self.cards_view = self._view:GetChild('hand_poker_c') + self.card_list = {} + self.out_card_list = {} + self.touchMoveFun = handler(self, self.TouchMoving) + self.ctr_put_card_option = self._view:GetController('out_card_option') + self.ctr_piao = self._view:GetController('piao') + self.ctr_piao_value = self._view:GetController('piao_value') + self.ctr_put_error = self._view:GetController('put_error') + self.put_error_text = self._view:GetChild('put_error') + + self.ctr_select_card_type = self._view:GetController('select_card_type') + self.select_card_type_view = self._view:GetChild('choose_type') + + self.text_bomb_score = self._view:GetChild('Score') + self.ani_bomb_score = self._view:GetTransition('score') + self.ani_result_score = self._view:GetTransition('score_1') + self._viewList_move = self._view:GetChild('list_moveCards') + + self.send_card = {} + self.tips_click_count = 0 + self:BtnEvent() + + ------------------------------lingmeng------------------------ + self.touchMoveEndFun = handler(self, self.TouchMoveEnd) + + self._view_handCard = self._view:GetChild('List_HandCard') + self._view_Out = self._view:GetChild('List_Out') + + self._cardCheck = EXCardCheck:InitFlag() + self._ctr_time_clock = self._view:GetController('time_clock') + self._view_comp_clock = self._view:GetChild('Comp_Clock') + -------------------------------------------------------------- +end + +function M:InitPoker(pokerList, isPlayAni, open) + if self.cor_init_poker ~= nil then + coroutine.stop(self.cor_init_poker) + end + -- -- print(vardump(self.card_list)) + self.cor_init_poker = nil + self.card_list = {} + self.newCard_list = {} + self._ctr_canSendCard.selectedIndex = 0 + self._flag_ruleCard = false + self._view_handCard:RemoveChildren(0, -1, true) + self.scaleW = (GRoot.inst.width * 0.85 - self._view_handCard.columnGap * 14) / 15 + self._viewList_move.width = self.scaleW + self.scaleH = self.scaleW * 1.3 + if isPlayAni == true then + self.cor_init_poker = + coroutine.start( + function() + self._mainView._popEvent = false + if self._mainView._rightPanelView._settingView ~= nil then + self._mainView._rightPanelView._settingView:SetBtnDismissRoomEnable(false) + end + table.sort(pokerList) + table.sort(self.card_list, tableSortNumber) + for i = #pokerList, 1, -1 do + if pokerList[i] == 403 then + self._flag_ruleCard = true + end + local card_number_code = self:ChangeOneCodeByFrom(pokerList[i]) + local card_flower_code = pokerList[i] + -- local btn_card = self:CreatPoker(card_number_code, cs, open) + local btn_card = self._view_handCard:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + btn_card.alpha = 0 + btn_card.touchable = false + local card_view = NewCardView(btn_card, card_number_code, card_flower_code) + self.card_list[#self.card_list + 1] = card_view + btn_card.data = card_view + self:AddTouchMoveEvent(self._view_handCard) + + if i == #pokerList then + for j = 1, #self.card_list do + local card = self.card_list[j] + card.btn_card.touchable = true + if open ~= 1 then + -- body + self:AddCardTouchEvent(card) + end + end + end + end + for j = #self.card_list, 1, -1 do + local card_view = self.card_list[j] + card_view.index = j + + card_view.btn_card:TweenMove(self:GetHandCardPos(j, #self.card_list), 0.10) + DSTween.To( + 0.7, + 1, + 0.1, + function(value) + card_view.btn_card:SetScale(value, value) + end + ) + DSTween.To( + 0.7, + 1, + 0.1, + function(value) + card_view.btn_card.alpha = value + end + ) + card_view.btn_card.alpha = 1 + end + + self._mainView._popEvent = true + if self._mainView._rightPanelView._settingView ~= nil then + self._mainView._rightPanelView._settingView:SetBtnDismissRoomEnable(true) + end + end + ) + else + for i = #pokerList, 1, -1 do + if not self.newCard_list[pokerList[i] % 100] then + self.newCard_list[pokerList[i] % 100] = {} + end + self.newCard_list[pokerList[i] % 100][math.floor(pokerList[i] / 100)] = (self.newCard_list[pokerList[i] % 100][math.floor(pokerList[i] / 100)] or 0) + + 1 + end + self:UpdateHandCardsPos() + end +end + +function M:updatePoker() + local templist = {} + for i = 1, #self.card_list do + templist[#templist + 1] = self.card_list[i].card_code_flower + end + self:InitPoker(templist, false, 0) +end + +function M:AddTouchMoveEvent(list) + local send_card = {} + + -- list.onTouchBegin:Set( + -- function(context) + -- self.send_card = {} + -- if list.touchable == false then + -- return + -- end + -- local xy = self._view_handCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + -- self.touchBegin = xy + -- Stage.inst.onTouchMove:Add(self.touchMoveFun) + -- Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) + -- end + -- ) +end + +function M:AddCardTouchEvent(card) + card.btn_card.onTouchBegin:Set( + function(context) + if card.btn_card.touchable == false then + return + end + local cardList = card.fatherList + local touchIndex = cardList:GetChildIndex(card.btn_card) + self._SendCards = {} + self.touchCard = card + self.touchIndex = touchIndex + local copy_list = self._viewList_move:GetChild('list') + for i = 0, touchIndex do + local oncard = cardList:GetChildAt(i) + self:SetBtnCardColor(oncard.data, 1) + --复制一份列表作为移动对象 + local copy_card = copy_list:AddItemFromPool() + self:FillPoker2(copy_card, oncard.data.card_code_flower) + copy_card.height = self.scaleH + if oncard.data.zha then + for j = 1, 4 do + table.insert(self._SendCards, oncard.data.card_code_flower) + end + else + table.insert(self._SendCards, oncard.data.card_code_flower) + end + end + local xy = self.touchCard.fatherList:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + self._viewList_move.xy = self._view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - Vector2.New(self.scaleW/2,self.scaleH + (self.scaleH + self.linegap)*(copy_list.numItems-1) + self.linegap) + self.touchBegin = xy - self._viewList_move.xy + Stage.inst.onTouchMove:Add(self.touchMoveFun) + Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) + end + ) +end + +function M:zhizhanxuanpai() --智障选牌 + -- body + local temp_send_card = {} + for i = 1, #self.send_card do + if self.send_card[i] ~= self.send_card[i - 1] then + -- body + temp_send_card[#temp_send_card + 1] = self.send_card[i] + end + end + + local card_map, max_key = self:GetCardMapAndMaxKey(temp_send_card) + local list_ones = self:CheckOnes(card_map) + + if list_ones ~= nil and #list_ones > 0 then + for i = 1, #self.card_list do + self:UpdateCardMove(self.card_list[i].btn_card, false, false) + end + for i = 1, #self.send_card do + for j = 1, #list_ones do + if self.send_card[i] == list_ones[j][1] then + -- body + self:UpdateCardMove(self.send_card[i].btn_card, true, false) + end + end + end + return list_ones + else + return {} + end +end + +function M:TouchMoving(context) + if self._view_handCard == nil then + return + end + local send_card1 = {} + local xy = self.touchCard.fatherList:GlobalToLocal(Vector2.New(context.inputEvent.x, + context.inputEvent.y)) + self._viewList_move.xy = xy - self.touchBegin +end + +function M:TouchMoveEnd(context) + local linexy = self._view_handCard:GlobalToLocal(Vector2.New(context.inputEvent.x, + context.inputEvent.y)) + + if self.ctr_put_card_option.selectedIndex > 0 then + local allcards = {} + for k, v in pairs(self.newCard_list) do + for k1, v1 in pairs(v) do + if v1 > 0 then + for i = 1, v1 do + local card_flower_code = k1 * 100 + k + table.insert(allcards, card_flower_code) + end + end + end + end + if linexy.y < self._view:GetChild('n82').y then + self.gameCtr:SendCard(self._SendCards, allcards) + else + if self.touchCard.card_code_flower % 100 < 3 then + for i = self._view_handCard.numItems - 1, 0, -1 do + local oneCardList = self._view_handCard:GetChildAt(i):GetChild('list') + local listxy = oneCardList:GlobalToLocal(Vector2.New(context.inputEvent.x, + context.inputEvent.y)) + if listxy.x > 0 and oneCardList:GetChildAt(0).data.card_code_flower % 100 > 2 then + for i = 0, oneCardList.numItems - 1 do + local oncard = oneCardList:GetChildAt(i) + if oncard.data.zha then + for j = 1, 4 do + table.insert(self._SendCards, oncard.data.card_code_flower) + end + else + table.insert(self._SendCards, oncard.data.card_code_flower) + end + end + self.gameCtr:SendCard(self._SendCards, allcards) + break + end + end + end + end + end + self._viewList_move:GetChild('list'):RemoveChildrenToPool() + for i = 0, self.touchIndex do + local oncard = self.touchCard.fatherList:GetChildAt(i) + self:SetBtnCardColor(oncard.data, 0) + oncard.xy = Vector2.New(0, (self.scaleH + self.linegap) * i) + end + Stage.inst.onTouchMove:Remove(self.touchMoveFun) + Stage.inst.onTouchEnd:Remove(self.touchMoveEndFun) +end + +-- function M:SetBtnCardColor(card, num) +-- if +-- card.btn_card:GetChildAt(0) ~= nil and card.btn_card:GetChildAt(0):GetChildAt(0) ~= nil and +-- card.btn_card:GetChildAt(0):GetChildAt(0):GetChildAt(0) ~= nil +-- then +-- -- body +-- card.btn_card:GetChildAt(0):GetChildAt(0):GetChildAt(0).color = Color(num, num, num) +-- end + +-- --if card.card_code_flower < 500 then +-- -- card.btn_card:GetChildAt(0):GetChildAt(2).color = Color(num,num,num) +-- -- card.btn_card:GetChildAt(0):GetChildAt(3).color = Color(num,num,num) +-- --end +-- end +function M:SetBtnCardColor(card, num) + card.btn_card:GetController('choose').selectedIndex = num +end + +function M:ShowPiao(piao) + self.ctr_piao.selectedIndex = piao +end + +function M:HidePiao() + self.ctr_piao.selectedIndex = 0 +end + +function M:ShowOutCardOption2(lastCardList, ctr_select, mustPutMaxCard) + -- self._cardCheck:InitLastCard(lastCardList, mustPutMaxCard) + -- self._cardCheck:CheckOutCard(self.card_list) + -- self.tips_card_list = self._cardCheck:GetTipsList() + -- self.touchCardSet = self._cardCheck:GetTouchSet() + -- self.touchCardMap = self._cardCheck:GetTouchCardMap() + -- self.tips_click_count = 0 + + -- print("lingmengShowOutCardOption2", #self.touchCardSet) + -- pt(self.touchCardSet) + -- pt(self.touchCardMap) + -- -- body --在这个方法里添加判断抬起牌是否符合出牌类型(少跑一次手牌循环) + -- self:UpdateHandCardsColor() + + -- if #self.tips_card_list == 1 then + -- self:ShowTipsCard(1) + -- end + + self.ctr_put_card_option.selectedIndex = ctr_select +end + +function M:ShowOutCardOption(ctr_select, type, number, length, mustPutMaxCard, play, zdts) + --for i = 1, #self.out_card_list do + -- local card = self.out_card_list[i] + -- self.cards_view:RemoveChild(card.btn_card,true) + --end + --self.out_card_list = {} + + -- self.zhizhanctr_select=ctr_select + -- self.zhizhantype=type + -- self.zhizhannumber=number + -- self.zhizhanlength=length + -- self.zhizhanmustPutMaxCard=mustPutMaxCard + -- self.zhizhanplay=play + -- self.zhizhanzdts=zdts + self.tips_click_count = 0 + self.send_card = {} + self.tips_card_list = self:GetCardTips(type, number, length, mustPutMaxCard) + self._ctr_canSendCard.selectedIndex = 0 + + if #self.tips_card_list >= 1 then + -- body --在这个方法里添加判断抬起牌是否符合出牌类型(少跑一次手牌循环) + self:UpdateHandCardsColor() + end + -- + -- 自动提示 + -- if #self.tips_card_list ~= 0 and play~=0 and mustPutMaxCard==false and zdts==1 then + -- local index = self.tips_click_count % #self.tips_card_list + 1 + -- self:ShowTipsCard(index) + -- self.tips_click_count = self.tips_click_count + 1 + -- end + if #self.tips_card_list == 2 and self.tips_card_list[2][1].index == self.tips_card_list[1][1].index then + if #self.tips_card_list[2] == #self.tips_card_list[1] then + for i = 1, #self.tips_card_list[2] do + if self.tips_card_list[2][i].index == self.tips_card_list[1][i].index then + self:ShowTipsCard(1) + end + end + end + elseif #self.tips_card_list == 1 then + self:ShowTipsCard(1) + end + if mustPutMaxCard and play ~= 0 and zdts == 1 then + -- body + self:ShowTipsCard(#self.tips_card_list) + end + self.ctr_put_card_option.selectedIndex = ctr_select +end + +function M:SetOutCardInfo(cardlist, isPass, isAnim) + self._view_Out:RemoveChildren(0, -1, true) + if cardlist == nil then + if isPass == true then + self.ctr_outpoker.selectedIndex = 2 + else + self.ctr_outpoker.selectedIndex = 0 + end + else + self.ctr_outpoker.selectedIndex = 1 + -- if isAnim then + -- if self.move_cor then + -- coroutine.stop(self.move_cor) + -- self.move_cor = nil + -- end + + -- for i = 1, #cardlist do + -- local poker_item = self._view_Out:AddItemFromPool() + -- local code = self:ChangeCodeByTo(cardlist[i]) + + -- self:FillPoker(poker_item, "", cardlist[i]) + -- end + -- self.move_cor = coroutine.start(function() + -- coroutine.wait(0.1) + -- ViewUtil.PlaySound("DuoDuo_PK", "extend/poker/duoduo/sound/chupai.mp3") + -- end) + -- else + for i = 1, #cardlist do + local poker_item = self._view_Out:AddItemFromPool() + + self:FillPoker2(poker_item, cardlist[i]) + end + -- end + end +end + +function M:SetOutCardBlack() + for i = 1, #self.out_card_list do + local card = self.out_card_list[i] + if card and card:GetChildAt(0) and card:GetChildAt(0):GetChildAt(0) and card:GetChildAt(0):GetChildAt(0):GetChildAt(0) then + card:GetChildAt(0):GetChildAt(0):GetChildAt(0).color = Color(0.7, 0.7, 0.7) + end + end +end + +function M:SetOutCardList(cardlist, isAnim) + local pos_y = -320 + if isAnim then + -- self.zhizhanctr_select=0 + -- self.zhizhantype=0 + -- self.zhizhannumber=0 + -- self.zhizhanlength=0 + -- self.zhizhanmustPutMaxCard=0 + -- self.zhizhanplay=0 + -- self.zhizhanzdts=0 + if self.move_cor then + coroutine.stop(self.move_cor) + self.move_cor = nil + end + local time = 0.1 + for i = 1, #cardlist do + local card_code_number = cardlist[i] + for j = 1, #self.card_list do + local card = self.card_list[j] + if card_code_number == card.card_code_number then + card.btn_card.onTouchBegin:Set(nil) + self.out_card_list[#self.out_card_list + 1] = card.btn_card + list_remove(self.card_list, card) + -- todo 出牌动画 + local pos = + self:GetOutCardEndPokerPos( + i, + #cardlist, + self.cards_view, + card.btn_card, + self.out_card_data['maxcount_x'], + 1.5 + ) + card.btn_card:TweenMove(Vector2.New(pos.x, pos_y), time) + -- self.tween = TweenUtils.TweenFloat(1, 0.7, time, function(x) + -- card.btn_card:GetChildAt(0):SetScale(x, x) + -- end) + card.btn_card:GetChildAt(0):SetScale(1.5, 1.5) + break + end + end + end + self.move_cor = + coroutine.start( + function() + coroutine.wait(0.05) + for i = 1, #self.out_card_list do + local card = self.out_card_list[i] + self.cards_view:SetChildIndex(card, i - 1) + end + coroutine.wait(0.1) + ViewUtil.PlaySound('DuoDuo_PK', 'extend/poker/duoduo/sound/chupai.mp3') + end + ) + else + for i = 1, #cardlist do + local poker_item = UIPackage.CreateObject('Extend_Poker_DuoDuo', 'poker7') + local code = self:ChangeCodeByTo(cardlist[i]) + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. code) + local card_code_obj + -- if DataManager.CurrenRoom.pai==0 then + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code) + -- else + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + -- end + -- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- -- body + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. code .. "_1") + -- end + if DataManager.CurrenRoom.pai == 0 then + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_DuoDuo/' .. code .. '_1') + else + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_DuoDuo/' .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_DuoDuo/' .. code .. '_2') + else + card_code_obj = UIPackage.CreateObjectFromURL('ui://Main_Poker/' .. code .. '_2') + end + end + if card_code_obj == nil then + card_code_obj = UIPackage.CreateObjectFromURL('ui://Main_Poker/00') + end + card_code_obj:SetScale(1.5, 1.5) + poker_item:AddChild(card_code_obj) + --local poker = self:CreatPoker(cardlist[i],0.7) + self.cards_view:AddChild(poker_item) + local pos = + self:GetOutCardEndPokerPos( + i, + #cardlist, + self.cards_view, + poker_item, + self.out_card_data['maxcount_x'], + 1.5 + ) + poker_item.xy = Vector2.New(pos.x, pos_y) + self.out_card_list[#self.out_card_list + 1] = poker_item + end + end +end + +-- function M:DeleteHandCards(cardlist) +-- for i = 1, #cardlist do +-- local card_code_number = cardlist[i] +-- for j = 1, #self.card_list do +-- local card = self.card_list[j] +-- if card_code_number == card.card_code_number then +-- --self.out_card_list[#self.out_card_list + 1] = card +-- list_remove(self.card_list, card) +-- -- todo 出牌动画 +-- self.cards_view:RemoveChild(card.btn_card, true) +-- break +-- end +-- end +-- end +-- self:UpdateHandCardsPos() +-- end +function M:DeleteHandCards(cardlist) + self.ctr_put_card_option.selectedIndex = 0 + for i = 1, #cardlist do + local tmpNum = nil + if self.newCard_list[cardlist[i] % 100] then + tmpNum = self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] + end + if tmpNum then + if tmpNum == 1 then + self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] = nil + else + self.newCard_list[cardlist[i] % 100][math.floor(cardlist[i] / 100)] = tmpNum - 1 + end + else + ViewUtil:ErrorTip("牌型出错,重新加载页面") + ViewManager.refreshGameView() + end + if i == #cardlist then + if #self.newCard_list[cardlist[i] % 100] == 0 then + self.newCard_list[cardlist[i] % 100] = nil + end + end + end + self:UpdateHandCardsPos() +end + +function M:UpdateHandCardsPos() + local maxHeight = 0 + self._view_handCard:RemoveChildrenToPool() + self._newCardSize = {} + self._viewList_move:GetChild('list'):RemoveChildrenToPool() + for k, v in pairs(self.newCard_list) do + local btn_cardListFather = self._view_handCard:AddItemFromPool() + btn_cardListFather.width = self.scaleW + -- btn_cardListFather.height = scaleH*12 + local btn_cardList = btn_cardListFather:GetChild('list') + btn_cardList:RemoveChildrenToPool() + self.linegap = btn_cardList.lineGap + local tmpHeight = 0 + local noZhaIndex = 0 + for k1, v1 in pairs(v) do + local card_number_code = k * 10 + k1 + local card_flower_code = k1 * 100 + k + if v1 ~= 4 then + for i = 1, v1 do + local btn_card = btn_cardList:GetFromPool('') + btn_cardList:AddChildAt(btn_card, noZhaIndex) + noZhaIndex = noZhaIndex + 1 + btn_card.height = self.scaleH + self:FillPoker2(btn_card, card_flower_code) + -- self.cards_view:AddChild(btn_card) + local card_view = NewCardView(btn_card, card_number_code, card_flower_code) + card_view.fatherList = btn_cardList + self.card_list[#self.card_list + 1] = card_view + btn_card.data = card_view + tmpHeight = tmpHeight + 1 + self:AddCardTouchEvent(card_view) + end + else + local btn_card = btn_cardList:AddItemFromPool() + btn_card.height = self.scaleH + self:FillPoker2(btn_card, card_flower_code, "_z") + -- self.cards_view:AddChild(btn_card) + local card_view = NewCardView(btn_card, card_number_code, card_flower_code) + card_view.fatherList = btn_cardList + card_view.zha = true + self.card_list[#self.card_list + 1] = card_view + btn_card.data = card_view + tmpHeight = tmpHeight + 1 + self:AddCardTouchEvent(card_view) + end + self._newCardSize[k1] = tmpHeight + end + + if tmpHeight > maxHeight then + maxHeight = tmpHeight + end + end + self._view:GetChild('n82').y = self._view_handCard.height - + (self.scaleH + (self.scaleH + self.linegap) * (maxHeight - 1) + 50) +end + +function M:ResetPoker() + self.Reset = true + for i = 1, #self.card_list do + local card_view = self.card_list[i] + self:UpdateCardMove(card_view.btn_card, false, false) + end + self.send_card = {} + self.Reset = false +end + +function M:UpdateCardMove(btn_card, isSelected, isPlay) + btn_card.selected = isSelected + -- local card_Move = btn_card + -- local xy = isSelected == true and Vector2.New(0, -65) or Vector2.New(0, 0) + -- if isPlay then + -- -- body + -- card_Move:TweenMove(xy, 0) + -- else + -- card_Move:TweenMove(xy, 0) + -- end +end + +function M:UpdateHandCardsColor() + local send_card = {} + for i = 1, #self.card_list do + local card_view = self.card_list[i] + if self.touchCardMap[math.floor(card_view.card_code_number / 10)] or #self.touchCardSet == 0 then + card_view.btn_card.touchable = true + self:SetBtnCardColor(card_view, 0) + else + card_view.btn_card.touchable = false + card_view.btn_card.selected = false + self:SetBtnCardColor(card_view, 1) + end + if card_view.btn_card.selected and card_view.btn_card.touchable then + table.insert(send_card, card_view) + end + end + if #send_card > 0 then + table.sort(send_card, tableSortNumber) + self._cardCheck:initCards(send_card, { flag = false, flag_allCards = #send_card == self._view_handCard.numItems }) + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 + else + self._ctr_canSendCard.selectedIndex = 0 + end +end + +function M:BtnEvent() + self.btn_not_put = self._view:GetChild('btn_not_put') + self.btn_tips = self._view:GetChild('Btn_Tip') -- 覆盖 + self.btn_sendCards = self._view:GetChild('Btn_SendCard') + self._ctr_canSendCard = self.btn_sendCards:GetController('can') + + self.btn_sendCards.onClick:Set( + function() + if self.Reset then + return + end + if self._ctr_canSendCard.selectedIndex == 0 then + return + end + local send_card = {} + self.send_card = {} + local currentCard = {} + for i = 1, #self.card_list do + local card = self.card_list[i] + table.insert(currentCard, card.card_code_flower) + if card.btn_card.selected then + send_card[#send_card + 1] = card.card_code_flower + self.send_card[#self.send_card + 1] = card + end + end + + if #send_card == 0 then + self:ErrorTip('请选择要出的牌') + else + self.gameCtr:SendCard(send_card, currentCard) + end + end + ) + self.btn_tips.onClick:Set( + function() + --printlog("wwwwwwwwwww111111111111111111111111") + --pt(self.tips_card_list) + if self.tips_card_list ~= nil and #self.tips_card_list ~= 0 then + local index = self.tips_click_count % #self.tips_card_list + 1 + self:ShowTipsCard(index) + self.tips_click_count = self.tips_click_count + 1 + end + end + ) + -- 过 + self.btn_not_put.onClick:Set( + function() + self.ctr_put_card_option.selectedIndex = 0 + self.gameCtr:SendPass() + end + ) + + local function click_piao() + self.ctr_piao.selectedIndex = 0 + self.gameCtr:SendPiao(tonumber(self.ctr_piao_value.selectedPage)) + end + + local btn_piao0 = self._view:GetChild('piao0') + btn_piao0.onClick:Set(click_piao) + + local btn_piao1 = self._view:GetChild('piao1') + btn_piao1.onClick:Set(click_piao) + + local btn_piao2 = self._view:GetChild('piao2') + btn_piao2.onClick:Set(click_piao) + + local btn_piao3 = self._view:GetChild('piao3') + btn_piao3.onClick:Set(click_piao) + + local btn_piao5 = self._view:GetChild('piao5') + btn_piao5.onClick:Set(click_piao) + + local btn_piao8 = self._view:GetChild('piao8') + btn_piao8.onClick:Set(click_piao) +end + +function M:ShowTipsCard(index) + print("lingmengShowTipsCard") + local item = self.tips_card_list[index] + for i = 1, #self.card_list do + local card = self.card_list[i] + local isExsit = false + for j = 1, #item do + if item[j] == self.card_list[i] then + self:UpdateCardMove(card.btn_card, true, false) + isExsit = true + end + end + if isExsit == false then + self:UpdateCardMove(card.btn_card, false, false) + end + end + pt(item) + self._cardCheck:initCards(item) + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 +end + +function M:GetHandCardOffset(count) + local start = -90 ---54 + + local offset = 0 + if count > 10 then + offset = start - count + 26 + else + offset = -30 + end + return 20 +end + +function M:GetHandCardPos(index, card_count) + local x, y = 0, -20 + local offset = self:GetHandCardOffset(card_count) + local middle_x = self.cards_view.width / 2 + local start_x = middle_x - (card_count / 2 * (self.card_width + offset)) + (offset / 2) + x = start_x + (self.card_width + offset) * (index - 1) + return Vector2.New(x, y) +end + +function M:GetHandCardPos1(index, card_count) + local x, y = 0, -18 + local offset = self:GetHandCardOffset(card_count) + local middle_x = self.cards_view.width / 2 + local start_x = middle_x - (card_count / 2 * (self.card_width + offset)) + (offset / 2) + x = start_x + (self.card_width + offset) * (index - 1) + return x, y +end + +function M:ErrorTip(error_text) + if self.cor_init_poker ~= nil then + coroutine.stop(self.cor_init_poker) + end + self.cor_init_poker = nil + self.cor_init_poker = + coroutine.start( + function() + self.put_error_text.text = error_text + self.ctr_put_error.selectedIndex = 1 + coroutine.wait(2) + self.ctr_put_error.selectedIndex = 0 + end + ) +end + +--EXCardType +--None = 0, +--OneCard = 1, +--OnePair = 2, +--Three = 3, +--Pairs = 4, +--ThreeAndTwo = 5, +--ThreeAndOne = 6, +--Plane = 7, +--PlaneAndTwo = 8, +--PlaneAndOne = 9, +--Straight = 10, +--Bomb = 11 +function M:GetCardTips(type, number, length, mustPutMaxCard, tip_templist) + local tip_list = {} + local sidaisan = false + local touch_key_list = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } + --printlog("aaaaaaaaaaaaacccccccccccccccccccc11111111111111111111111111111") + --pt(self.card_list) + local card_map, max_key = self:GetCardMapAndMaxKey(self.card_list) + --printlog("aaaaaaaaaaaaaaaaaa222222222222222222222222222222222222222 ",max_key) + --pt(card_map) + if type == EXCardType.None then + if DataManager.CurrenRoom.is_new_bout then + tip_list = self:NewBoutTips(card_map) + end + return tip_list, touch_key_list + elseif type == EXCardType.Bomb then + tip_list, touch_key_list = self:CheckBomb(card_map, number, length) + else + local list_type, list_bomb = {}, {} + local touch_type, touch_bomb + list_bomb, touch_bomb = self:CheckBomb(card_map, 0, 4) + + local card_templist = membe_clone(self.card_list) + + if list_bomb ~= nil and tip_templist == nil then + -- body + for i = 1, #list_bomb do + local templist_bomb = list_bomb[i] + for j = 1, #templist_bomb do + for k = 1, #card_templist do + if templist_bomb[j] == card_templist[k] then + -- body + list_remove(card_templist, card_templist[k]) + end + end + end + end + card_map, max_key = self:GetCardMapAndMaxKey(card_templist) + end + + if type == EXCardType.OneCard then + -- if mustPutMaxCard then + -- number = max_key - 1 + -- self:ErrorTip("下家报单,请出最大的牌 ") + -- end + list_type, touch_type = self:CheckOneCard(card_map, number, length) + elseif type == EXCardType.OnePair then + list_type, touch_type = self:CheckOnePair(card_map, number, length) + elseif type == EXCardType.Three then + list_type, touch_type = self:CheckThree(card_map, number, length) + elseif type == EXCardType.Pairs then + list_type, touch_type = self:CheckPairs(card_map, number, length) + elseif type == EXCardType.ThreeAndTwo then + list_type, touch_type = self:CheckThreeAndTwo(card_map, number, length) + elseif type == EXCardType.ThreeAndOne then + list_type, touch_type = self:CheckThreeAndOne(card_map, number, length) + elseif type == EXCardType.Plane then + list_type, touch_type = self:CheckPlane(card_map, number, length, 0) + elseif type == EXCardType.PlaneAndTwo then + list_type, touch_type = self:CheckPlane(card_map, number, length, 2) + elseif type == EXCardType.PlaneAndOne then + list_type, touch_type = self:CheckPlane(card_map, number, length, 1) + elseif type == EXCardType.Straight then + list_type, touch_type = self:CheckStraight(card_map, number, length) + elseif type == EXCardType.FourAndtThree then + list_type, touch_type = self:CheckBomb(card_map, 0, 4) + if #list_type > 0 then + -- body + sidaisan = true + end + end + card_map, max_key = self:GetCardMapAndMaxKey(self.card_list) + tip_list = self:GetMergeAllList(list_type, list_bomb) + --list_bomb, touch_bomb = self:CheckBomb(card_map, 0, 4) + touch_key_list = self:GetMergeAllList(touch_type, touch_bomb) + local tip_templist2 = {} + if tip_templist == nil then + -- body + tip_templist2 = self:GetCardTips(type, number, length, mustPutMaxCard, tip_list) + end + if #tip_templist2 > 0 then + -- body + tip_list = self:GetMergeAllList(tip_list, tip_templist2) + end + end + + if (tip_templist ~= nil and sidaisan == false and #tip_templist >= 1) then + -- body + self:SetNotTouchCard(touch_key_list, card_map) + end + + return tip_list +end + +-- 合并多个list +function M:GetMergeAllList(...) + local lists = { ... } + local merge_list = {} + for i = 1, #lists do + local list_item = lists[i] + for j = 1, #list_item do + merge_list[#merge_list + 1] = list_item[j] + end + end + + return merge_list +end + +function M:NewBoutTips(pokerMap) + local new_bout_list = {} + for k, v in pairs(pokerMap) do + new_bout_list[#new_bout_list + 1] = v + end + return new_bout_list +end + +function M:CheckOneCard(pokerMap, num, length) + local one_card_list = {} + local touch_key_list = {} + if #self.card_list < length then + return one_card_list, touch_key_list + end + for k, v in pairs(pokerMap) do + if k > num and #v == 1 then + one_card_list[#one_card_list + 1] = { v[1] } + touch_key_list[#touch_key_list + 1] = k + end + end + for k, v in pairs(pokerMap) do + if k > num and #v ~= 1 then + one_card_list[#one_card_list + 1] = { v[1] } + touch_key_list[#touch_key_list + 1] = k + end + end + return one_card_list, touch_key_list +end + +function M:CheckOnePair(pokerMap, num, length) + local one_pair_list = {} + local touch_key_list = {} + if #self.card_list < length then + return one_pair_list, touch_key_list + end + for k, v in pairs(pokerMap) do -- 从三条和对子里面提取 + if #v > 1 and k > num then + one_pair_list[#one_pair_list + 1] = { v[1], v[2] } + touch_key_list[#touch_key_list + 1] = k + end + end + return one_pair_list, touch_key_list +end + +function M:CheckThree(pokerMap, num, length) + local three_list = {} + local touch_key_list = {} + if #self.card_list < length then + return three_list, touch_key_list + end + for k, v in pairs(pokerMap) do + if #v > 2 and k > num then + three_list[#three_list + 1] = { v[1], v[2], v[3] } + touch_key_list[#touch_key_list + 1] = k + end + end + return three_list, touch_key_list +end + +function M:CheckPairs(pokerMap, num, length) + local pairs_list = {} + local touch_key_list = {} + if #self.card_list < length then + return pairs_list, touch_key_list + end + local pair_length = length / 2 + local number_start = num - pair_length + 2 + local number_end = 15 - pair_length + for i = number_start, number_end do + local item_all_list = {} + for j = i, i + pair_length - 1 do + local item_list = pokerMap[j] + if item_list == nil then + break + elseif #item_list < 2 then + break + else + item_all_list[#item_all_list + 1] = item_list[1] + item_all_list[#item_all_list + 1] = item_list[2] + end + if j == i + pair_length - 1 then + pairs_list[#pairs_list + 1] = item_all_list + for k = i, i + pair_length - 1 do + touch_key_list[#touch_key_list + 1] = k + end + end + end + end + return pairs_list, touch_key_list +end + +function M:CheckThreeAndOne(pokerMap, num, length) + local three_and_one_list = {} + local touch_key_list = {} + if #self.card_list < length then + return three_and_one_list, touch_key_list + end + for k, v in pairs(pokerMap) do + if #v >= 3 and k > num then + three_and_one_list[#three_and_one_list + 1] = { v[1], v[2], v[3] } + touch_key_list = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } + end + end + return three_and_one_list, touch_key_list +end + +function M:CheckThreeAndTwo(pokerMap, num, length) + local three_and_two_list = {} + local touch_key_list = {} + if #self.card_list < length then + return three_and_two_list, touch_key_list + end + for k, v in pairs(pokerMap) do + if #v >= 3 and k > num then + three_and_two_list[#three_and_two_list + 1] = { v[1], v[2], v[3] } + touch_key_list = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } + end + end + return three_and_two_list, touch_key_list +end + +function M:CheckStraight(pokerMap, num, length) + local straight_list = {} + local touch_key_list = {} + if #self.card_list < length then + return straight_list, touch_key_list + end + local number_start = num - length + 2 + local number_end = 15 - length + for i = number_start, number_end do + local item_all_list = {} + for j = i, i + length - 1 do + local item_list = pokerMap[j] + if item_list == nil then + break + else + item_all_list[#item_all_list + 1] = item_list[1] + end + if j == i + length - 1 then + straight_list[#straight_list + 1] = item_all_list + for k = i, i + length - 1 do + touch_key_list[#touch_key_list + 1] = k + end + end + end + end + return straight_list, touch_key_list +end + +function M:CheckBomb(pokerMap, num, length) + local bomb_list = {} + local touch_key_list = {} + local threeA = DataManager.CurrenRoom.room_config.threeA + if threeA == 0 then + -- body + if #self.card_list < length then + return bomb_list, touch_key_list + end + else + if #self.card_list < 3 then + return bomb_list, touch_key_list + end + end + + for k, v in pairs(pokerMap) do + if #v == 4 and k > num then + bomb_list[#bomb_list + 1] = v + touch_key_list[#touch_key_list + 1] = k + end + if threeA == 1 and #v == 3 and k == 14 then + bomb_list[#bomb_list + 1] = v + touch_key_list[#touch_key_list + 1] = k + end + end + + return bomb_list, touch_key_list +end + +function M:CheckPlane(pokerMap, num, length, and_num) + local plane_list = {} + local touch_key_list = {} + local l = and_num + 3 + local pair_length = length / l + local number_start = num - pair_length + 2 + local number_end = 15 - pair_length + for i = number_start, number_end do + local item_all_list = {} + for j = i, i + pair_length - 1 do + local item_list = pokerMap[j] + if item_list == nil then + break + elseif #item_list < 3 then + break + else + item_all_list[#item_all_list + 1] = item_list[1] + item_all_list[#item_all_list + 1] = item_list[2] + item_all_list[#item_all_list + 1] = item_list[3] + end + if j == i + pair_length - 1 then + plane_list[#plane_list + 1] = item_all_list + touch_key_list = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } + end + end + end + return plane_list, touch_key_list +end + +function M:SetNotTouchCard(touch_key_list, card_map) + local all_key_list = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } + for i = 1, #all_key_list do + local key = all_key_list[i] + local isExsit = self:IsExistByList(touch_key_list, key) + if isExsit == false then + local key_card_item = card_map[key] + if key_card_item ~= nil then + for j = 1, #key_card_item do + local card = key_card_item[j] + card.btn_card.touchable = false + self:UpdateCardMove(card.btn_card, false, false) + end + end + end + end +end + +function M:IsExistByList(list, item) + for i = 1, #list do + if list[i] == item then + return true + end + end + return false +end + +function M:GetCardByNumber(list, number) + for i = 1, #list do + if list[i].card_code_number == number then + return list[i] + end + end + return nil +end + +function M:GetCardMapAndMaxKey(pokerList) + local map, max_key = {}, 0 + for i = 1, #pokerList do + local number = math.floor(pokerList[i].card_code_number / 10) + if number > max_key then + max_key = number + end + if map[number] == nil then + map[number] = { pokerList[i] } + else + map[number][#map[number] + 1] = pokerList[i] + end + end + return map, max_key +end + +-- function M:CheckOnes(pokerMap, num, length) +-- local one_card_list = {} +-- local touch_key_list = {} +-- local text = {} +-- local text2 = {} +-- local x = 0 +-- if #self.card_list < length then +-- return one_card_list, touch_key_list +-- end +-- for k, v in pairs(pokerMap) do +-- text = {} +-- text2 = {} +-- if k > num then +-- for l, p in pairs(pokerMap) do +-- for i = 0, length - 1 do +-- if l == k + i and l ~= 15 and l ~= 16 then +-- -- body +-- text[#text + 1] = { p[1] } +-- text2[#text2 + 1] = l +-- if #text >= length then +-- -- body +-- local x = #one_card_list +-- local y = #touch_key_list +-- for i = 1, #text - 1 do +-- one_card_list[x + 1] = text[1] +-- touch_key_list[y + 1] = text2[2] +-- -- for i, v in pairs(text2[i + 1]) do +-- -- if v ~= nil then +-- -- table.insert(touch_key_list[x + 1], v) +-- -- end +-- -- end +-- for i, v in pairs(text[i + 1]) do +-- if v ~= nil then +-- table.insert(one_card_list[x + 1], v) +-- end +-- end +-- end +-- end +-- end +-- end +-- end +-- end +-- end +-- return one_card_list, touch_key_list, length +-- end + +function M:CheckOnes(pokerMap) + local one_card_list = {} + local old_k = 0 + for k, v in pairs(pokerMap) do + if #one_card_list == 0 then + table.insert(one_card_list, v) + old_k = k + else + if k == 15 then + break + end + if k ~= old_k + 1 and #one_card_list >= 5 then + break + end + if k ~= old_k + 1 then + one_card_list = {} + end + table.insert(one_card_list, v) + old_k = k + end + end + if #one_card_list < 5 then + one_card_list = {} + end + return one_card_list +end + +function M:Clear() + self:PlayScore(nil) + self:SetOutCardInfo(nil, false) + self.card_list = {} + self.out_card_list = {} + self._view_handCard:RemoveChildren(0, -1, true) + self._flag_ruleCard = false + -- self.mask_liangpai:RemoveChildren(0,-1,true) +end + +function M:ClearCheck() + self.card_list = {} + self.out_card_list = {} + self._view_handCard:RemoveChildren(0, -1, true) +end + +function M:Destroy() + Stage.inst.onTouchMove:Remove(self.touchMoveFun) + Stage.inst.onTouchEnd:Remove(self.touchMoveEndFun) +end + +return M diff --git a/wb_new_ui/assets/Common/buttons/Btn_CheckBoxRoundWithText.xml b/wb_new_ui/assets/Common/buttons/Btn_CheckBoxRoundWithText.xml index 5d3ba8b1..57485981 100644 --- a/wb_new_ui/assets/Common/buttons/Btn_CheckBoxRoundWithText.xml +++ b/wb_new_ui/assets/Common/buttons/Btn_CheckBoxRoundWithText.xml @@ -2,9 +2,14 @@ - + + - + + + + + diff --git a/wb_new_ui/assets/Common/buttons/Btn_CheckBoxWithText.xml b/wb_new_ui/assets/Common/buttons/Btn_CheckBoxWithText.xml index 54af608d..5d4a3bcd 100644 --- a/wb_new_ui/assets/Common/buttons/Btn_CheckBoxWithText.xml +++ b/wb_new_ui/assets/Common/buttons/Btn_CheckBoxWithText.xml @@ -1,13 +1,18 @@ - + - + + - + + + + + -