From 9d72403c7b207c92b3825b48c8257d4d359b9f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=AE=B6=E7=82=9C?= <2029049582@qq.com> Date: Thu, 15 May 2025 16:49:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=A2=AD=E5=93=88=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extend/poker2/suoha/ExGameController.lua | 1 + .../extend/poker2/suoha/ExMainView.lua | 69 ++++++++++++------ .../poker2/suoha/ExPlayerPokerInfoView.lua | 19 +++-- .../suoha/ExPlayerSelfPokerInfoView.lua | 27 ++++++- .../ART/base/Family/ui/Family_fui.bytes | Bin 34663 -> 46755 bytes 5 files changed, 83 insertions(+), 33 deletions(-) diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua b/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua index ff90f832..95da521d 100644 --- a/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua +++ b/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua @@ -82,6 +82,7 @@ end --绑定协议为事件 function M:OnSendCard(evt_data) + print("lingmengsuohaOnSendCard") self._cacheEvent:Enqueue( function() DispatchEvent(self._dispatcher, EXGameEvent.OnSendCard, evt_data) diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua index 5b2bfb55..3856a2ad 100644 --- a/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua +++ b/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua @@ -304,6 +304,24 @@ function M:EventInit() _gamectr:AddEventListener(EXGameEvent.OnSendCard, function(...) local arg = { ... } + local data = arg[1] + local round = data.round + local bank_seat = data.bank_seat + self:UpdateRound(round) + self._state.selectedIndex = 1 + + local maxPeopleNum = _room.room_config.people_num + for i = 1, maxPeopleNum do + local cardList = data[string.format("seat_%d", i)] + pt(cardList) + local cardInfo = _player_card_info[self:GetPos(i)] + if cardList then + cardInfo:UpdateHandPoker(cardList) + if self:GetPos(bank_seat) == 1 and bank_seat == i then + cardInfo:ShowTips(1) + end + end + end end) _gamectr:AddEventListener(EXGameEvent.OnTipAction, function(...) @@ -371,30 +389,33 @@ function M:ReConnectForStart() -- body head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. player.hand_count .. "张" end - if player.seat == self._room.self_player.seat then - if player.open ~= nil and player.open == 0 and self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then - -- body - self.MypokerList = player.hand_list - player_card_info:InitPoker(player.hand_list, false, 1) - else - player_card_info:InitPoker(player.hand_list, false) - end - else - player_card_info:SetRemainCardNumber(player.hand_count == 1) - if player.hand_count == 1 then - self.bgm_index = 2 - end - end - if self._room.curren_turn_seat ~= player.seat then - -- head_info:MarkBank(false) - if player.out_card_list[1] == 0 then - player_card_info:SetOutCardInfo(nil, false) - else - player_card_info:SetOutCardInfo(player.out_card_list, false) - end - else - -- head_info:MarkBank(true) - end + print("lingmengReConnectForStart") + pt(player) + -- if player.seat == self._room.self_player.seat then + -- if player.open ~= nil and player.open == 0 and self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- -- body + -- self.MypokerList = player.hand_list + -- player_card_info:InitPoker(player.hand_list, false, 1) + -- else + -- player_card_info:InitPoker(player.hand_list, false) + -- end + -- else + -- player_card_info:SetRemainCardNumber(player.hand_count == 1) + -- if player.hand_count == 1 then + -- self.bgm_index = 2 + -- end + -- end + player_card_info:UpdateHandPoker(player.hand_list) + -- if self._room.curren_turn_seat ~= player.seat then + -- -- head_info:MarkBank(false) + -- if player.out_card_list[1] == 0 then + -- player_card_info:SetOutCardInfo(nil, false) + -- else + -- player_card_info:SetOutCardInfo(player.out_card_list, false) + -- end + -- else + -- -- head_info:MarkBank(true) + -- end end end diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua index d18af0df..3cd52f2a 100644 --- a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua @@ -27,18 +27,21 @@ function M:init() end function M:UpdateHandPoker(cardList) - + print("lingmengUpdateHandPoker", #cardList) + self._view_handCardList:RemoveChildren() + for i = 1, #cardList do + local obj = self._view_handCardList:AddItemFromPool() + print("lingmengUpdateHandPoker2", obj, cardList[i], string.format("ui://Main_Poker/%s", cardList[i])) + self:FillPoker(obj, cardList[i]) + end end -function M:FillPoker(poker2, prefix, num, code) - if num ~= nil then - code = self:ChangeCodeByTo(num) - end - code = code == 1 and "00" or code +function M:FillPoker(poker2, code) + code = code == 0 and "00" or code if not poker2.icon then - poker2:GetChild('icon').url = string.format("ui://Extend_Poker_SuoHa/%s%s", prefix, code) + poker2:GetChild('icon').url = string.format("ui://Main_Poker/%s", code) else - poker2.icon = string.format("ui://Extend_Poker_SuoHa/%s%s", prefix, code) + poker2.icon = string.format("ui://Main_Poker/%s", code) end end diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua index a8b3f9c1..da885498 100644 --- a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua @@ -2,6 +2,13 @@ --- Created by 谌建军. --- DateTime: 2017/12/13 17:04 --- + +local TipType = { + guo = 0, + qi = 1, + xia = 4 +} + local EXPlayerPokerInfoView = import('.EXPlayerPokerInfoView') local EXCardType = import('.EXCardType') local EXCardCheck = import(".CardCheck") @@ -25,11 +32,29 @@ function M.new(view, mainView) end function M:init() + local view = self._view EXPlayerPokerInfoView.init(self) + + self._view_tipsList = view:GetChild('list_tips') + + self._ctr_out = view:GetController('out') end -function M:InitPoker(pokerList, isPlayAni, open) +function M:ShowTips(type) + self._ctr_out.selectedIndex = 1 + if type == 1 then + self._view_tipsList:RemoveChildren() + local obj = self._view_tipsList:AddItemFromPool() + self.SetTipData(obj, TipType.qi) + local obj = self._view_tipsList:AddItemFromPool() + self.SetTipData(obj, TipType.xia) + end +end +function M.SetTipData(obj, type) + obj.data = {} + obj.data.type = type + obj:GetController('type').selectedIndex = type end function M:Clear() diff --git a/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes b/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes index 85e9b4683bbb74b4d0dda553e5f79ef85933923d..2b66321d601a6c1fd0b4e2f4fe3eea76a3fec34c 100644 GIT binary patch delta 12400 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