From bd0feb2a373d13ec48eb1753f615316e9bb2e294 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, 17 Apr 2025 15:23:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=91=E5=BE=97=E5=BF=AB=E6=98=BE2=EF=BC=8C?= =?UTF-8?q?=E4=B8=89=E5=BC=A0=E4=B8=8D=E5=B8=A6=E5=8F=91=E9=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poker/runfast/EXGameInfo_jiangxi.lua | 9 +- .../RunFast_PlayerSelfPokerInfoView.lua | 1 - .../poker/runfast/RunFast_ResultView.lua | 214 +++++++++--------- .../ui/Extend_Poker_RunFastNew_fui.bytes | Bin 126594 -> 127829 bytes 4 files changed, 106 insertions(+), 118 deletions(-) diff --git a/lua_probject/extend_project/extend/poker/runfast/EXGameInfo_jiangxi.lua b/lua_probject/extend_project/extend/poker/runfast/EXGameInfo_jiangxi.lua index 5901eb6b..9828cddf 100644 --- a/lua_probject/extend_project/extend/poker/runfast/EXGameInfo_jiangxi.lua +++ b/lua_probject/extend_project/extend/poker/runfast/EXGameInfo_jiangxi.lua @@ -228,10 +228,11 @@ function M:SelectedConfigData() _data["maxPlayers"] = peopleNum == 1 and 2 or 3 --人数 2是2人 3是三人 _data["rule"] = wanfa1_5 == 0 and 2 or 1 --黑桃3必出 2是选择了该玩法 1是没有该玩法 _data["showlength"] = (showCardNum + 1) % 2 --显示手牌数量 0是不显示 1是显示 - _data["planelack"] = wanfa1_2 or wanfa1_1 --[[三张、飞机可少带接完 0是没有该玩法 1是有该玩法, - 吴哥说这个玩法可能包含了三张、飞机可不带,没有告诉我添加字段,这个字段是飞机,下个字段是三带]] - _data["threelack"] = wanfa1_2 or wanfa1_1 - _data["fourDaiThree"] = false --四带三 false没有该玩法 true有该玩法 + _data["planeNoBelt"] = wanfa1_1 --飞机不带 + _data["threeNoBelt"] = wanfa1_1 --三张不带 + _data["planelack"] = wanfa1_2 --飞机可少带接完 + _data["threelack"] = wanfa1_2 --三张可少带接完 + _data["fourDaiThree"] = false --四带三 false没有该玩法 true有该玩法 if wanfa1_3 then _data["fourDaiThree"] = true end diff --git a/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua index 42376ad6..730f7b9a 100644 --- a/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua @@ -852,7 +852,6 @@ function M:GetHandCardPos(index, 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) - print("================================GetHandCardPos", x, y) return Vector2.New(x, y) end diff --git a/lua_probject/extend_project/extend/poker/runfast/RunFast_ResultView.lua b/lua_probject/extend_project/extend/poker/runfast/RunFast_ResultView.lua index 26c3c7f5..86df6aad 100644 --- a/lua_probject/extend_project/extend/poker/runfast/RunFast_ResultView.lua +++ b/lua_probject/extend_project/extend/poker/runfast/RunFast_ResultView.lua @@ -9,66 +9,64 @@ local RunFast_ResultView = {} local M = RunFast_ResultView function RunFast_ResultView.new(blur_view, data, roomid, over, win_seat, dissolve, remaincards) - setmetatable(M, {__index = ResultView}) - local self = setmetatable({}, {__index = M}) - + setmetatable(M, { __index = ResultView }) + local self = setmetatable({}, { __index = M }) + self.class = "RunFast_ResultView" self._currenIndex = 0 self._close_zone = false --self._blur_view = blur_view self._gamectr = ControllerManager.GetController(GameController) self:init("ui://Extend_Poker_RunFastNew/clearing", data, roomid, over, win_seat, dissolve, remaincards) - + return self end function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) - - ResultView.init(self, url,true) - self.xiPaiCtr=self._view:GetController("xipai") - - - local round=DataManager.CurrenRoom.room_config.config.times or 1 - local xpconfig=DataManager.CurrenRoom.room_config.config.xi_pai - if xpconfig and round>1 then - self.xiPaiCtr.selectedIndex=1 - else - self.xiPaiCtr.selectedIndex=0 - end - - + ResultView.init(self, url, true) + self.xiPaiCtr = self._view:GetController("xipai") + + + local round = DataManager.CurrenRoom.room_config.config.times or 1 + local xpconfig = DataManager.CurrenRoom.room_config.config.xi_pai + if xpconfig and round > 1 then + self.xiPaiCtr.selectedIndex = 1 + else + self.xiPaiCtr.selectedIndex = 0 + end + + --self:InitData(data,roomid) --self:InitData(data,roomid) - printlog("aaaaaaaaaaaaaaaa1111111111111111111111111222222222222222 ",dissolve) + printlog("aaaaaaaaaaaaaaaa1111111111111111111111111222222222222222 ", dissolve) pt(data) if dissolve == 1 then -- body - self.xiPaiCtr.selectedIndex=0 + self.xiPaiCtr.selectedIndex = 0 self:InitData(data, win_seat, roomid) else - local xipai=self._view:GetChild("btn_xipai") - xipai.touchable=true - xipai.onClick:Add(function() - local xiPaiCallBack=function () - xipai.touchable=false - self.xiPaiCtr.selectedIndex=0 - ViewUtil.ErrorTip(1000000,"申请洗牌成功") - end - local _gamectr = ControllerManager.GetController(GameController) - _gamectr:SendXiPaiAction(xiPaiCallBack) - end) - if DataManager.CurrenRoom.xipaiScore then - --xipai.text="洗牌 积分x"..DataManager.CurrenRoom.xipaiScore - else - --xipai.text="洗牌 积分x0" - end - + local xipai = self._view:GetChild("btn_xipai") + xipai.touchable = true + xipai.onClick:Add(function() + local xiPaiCallBack = function() + xipai.touchable = false + self.xiPaiCtr.selectedIndex = 0 + ViewUtil.ErrorTip(1000000, "申请洗牌成功") + end + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:SendXiPaiAction(xiPaiCallBack) + end) + if DataManager.CurrenRoom.xipaiScore then + --xipai.text="洗牌 积分x"..DataManager.CurrenRoom.xipaiScore + else + --xipai.text="洗牌 积分x0" + end + self:InitData_One(data, win_seat, over, roomid, remaincards) end - end -function M:ChangeCodeByTo( card ) +function M:ChangeCodeByTo(card) local flower = card % 10 local number = math.floor(card / 10) if number == 15 then @@ -79,43 +77,41 @@ end -- 小结算 function M:InitData_One(data, winseat, over, roomid, remaincards) - local room = DataManager.CurrenRoom self._view:GetController("sdk").selectedIndex = 1 local _gamectr = ControllerManager.GetController(GameController) local list_view = self._view:GetChild("player_list_1") list_view:RemoveChildrenToPool() - - local leftCardAll = self._view:GetChild("leftCardHand") - leftCardAll:RemoveChildrenToPool() - - if remaincards and #remaincards>0 then - table.sort(remaincards,function (a,b) + + local leftCardAll = self._view:GetChild("leftCardHand") + leftCardAll:RemoveChildrenToPool() + + if remaincards and #remaincards > 0 then + table.sort(remaincards, function(a, b) return a % 100 < b % 100 - end) - for i=1,#remaincards do - local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/"..remaincards[i]) + for i = 1, #remaincards do + local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. remaincards[i]) leftCardAll:AddChild(card_code_obj) - end - end - + end + end + for i = 1, #data do local player = data[i] local item = list_view:AddItemFromPool("ui://Extend_Poker_RunFastNew/clearing_item_1") - - - local leftCard = item:GetChild("leftCard") + + + local leftCard = item:GetChild("leftCard") leftCard:RemoveChildrenToPool() -- table.sort(data[i].handCards,function (a,b) - + -- return a % 100 < b % 100 -- end) - - for j=1,#data[i].handCards do + + for j = 1, #data[i].handCards do local code = data[i].handCards[j] - local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/"..code) + local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. code) leftCard:AddChild(card_code_obj) end @@ -123,38 +119,38 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) -- return a % 100 < b % 100 -- end) - - for k=1,#data[i].outCards do + + for k = 1, #data[i].outCards do local code = data[i].outCards[k] - local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/"..code) + local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. code) + print("==================================================card_code_obj", card_code_obj, code) leftCard:AddChild(card_code_obj) - card_code_obj:GetChildAt(0):GetChildAt(0).color = Color(0.7,0.7,0.7) + card_code_obj:GetChildAt(0):GetChildAt(0).color = Color(0.7, 0.7, 0.7) end - - - + + + local boom = item:GetChild("boom") boom.text = player.thisboomnum - + local piao = item:GetChild("piao") if player.piao <= 0 then piao.text = "0" else piao.text = "" .. player.piao end - + local nichen = item:GetChild("nichen") - + if player.nick ~= nil then -- body nichen.text = tostring(player.nick) else - nichen.text = tostring(player.self_user.nick_name) end - - + + local shengpai = item:GetChild("shengpai") if player.cards ~= nil then -- body @@ -162,23 +158,22 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) else shengpai.text = tostring(#player.hand_list) end - + local rt = 1 if room.hpOnOff == 1 then rt = room.score_times end - + local hp_nonnegative = room:checkHpNonnegative() local roundScore = player.winscore if hp_nonnegative then - local jifen = "" if roundScore > 0 then jifen = "+" .. roundScore else jifen = "" .. roundScore end - + local tili = "" local limit = "" if player.hp_info.round_actual_hp > 0 then @@ -192,10 +187,9 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) limit = "达到下限" end end - + item:GetChild("score").text = jifen .. tili .. limit else - local jifen = "" if roundScore >= 0 then jifen = "+" .. roundScore @@ -203,10 +197,9 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) jifen = "" .. roundScore end jifen = jifen .. " " - + local tili = "" if room.hpOnOff > 0 then - local need = roundScore * rt tili = "(" if roundScore > 0 then @@ -214,30 +207,27 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) else tili = tili .. tostring(need) end - + tili = tili .. ")" end - - + + item:GetChild("score").text = jifen .. tili end - + if roundScore >= 0 then - if room.self_player.seat == player.seat then -- body self._view:GetController("result").selectedIndex = 1 end else - if room.self_player.seat == player.seat then self._view:GetController("result").selectedIndex = 0 end end - end - - + + if over == 0 then -- body local btn_confirm = self._view:GetChild("btn_confirm") @@ -245,78 +235,77 @@ function M:InitData_One(data, winseat, over, roomid, remaincards) self:Destroy() local _gamectr = ControllerManager.GetController(GameController) _gamectr:ConformToNextGame() - end) else - self.xiPaiCtr.selectedIndex=0 + self.xiPaiCtr.selectedIndex = 0 local btn_confirm = self._view:GetChild("btn_confirm") btn_confirm.onClick:Set(function() - --self:Destroy() - self:InitData(data, winseat, roomid) - -- ViewManager.ChangeView(ViewManager.View_Lobby) + --self:Destroy() + self:InitData(data, winseat, roomid) + -- ViewManager.ChangeView(ViewManager.View_Lobby) end) - end end -- 大结算 function M:InitData(data, winseat, roomid) - self.xiPaiCtr.selectedIndex=0 + self.xiPaiCtr.selectedIndex = 0 self._view:GetController("sdk").selectedIndex = 0 - + local room = DataManager.CurrenRoom - + local rt = 1 if room.hpOnOff == 1 and room.score_times ~= 1 then rt = room.score_times end - + -- 赋值result_info,聊天室分享需要 local player_list = {} for i = 1, #data do player_list[i] = {} - + local user = room:GetPlayerBySeat(data[i].seat).self_user - + player_list[i].id = user.account_id - + player_list[i].score = data[i].score player_list[i].hp_info = data[i].hp_info player_list[i].house = room.owner_id == player_list[i].id and 1 or 0 player_list[i].nick = user.nick_name player_list[i].seat = data[i].seat player_list[i].head_url = data[i].self_user.head_url - + if data[i].entrust ~= nil then player_list[i].entrust = data[i].entrust > 0 else player_list[i].entrust = false end - + player_list[i].param = {} - + player_list[i].param[1] = {} player_list[i].param[1].key = "赢局数:" player_list[i].param[1].value = tostring(data[i].settle_log.winnum) - + player_list[i].param[2] = {} player_list[i].param[2].key = "打出炸弹数:" player_list[i].param[2].value = tostring(data[i].settle_log.boomnum) - + player_list[i].param[3] = {} player_list[i].param[3].key = "春天次数:" player_list[i].param[3].value = tostring(data[i].settle_log.springnum) - + player_list[i].param[4] = {} player_list[i].param[4].key = "当局最高分:" player_list[i].param[4].value = tostring(data[i].settle_log.maxscore * rt) - + if data[i].daniao > 0 then - player_list[i].flag = {"打鸟"} + player_list[i].flag = { "打鸟" } end end - - self:GenerateRoomResultInfo(room.room_config.Times, room.room_config:GetGameName(), room.room_id, room.create_time, player_list) + + self:GenerateRoomResultInfo(room.room_config.Times, room.room_config:GetGameName(), room.room_id, room.create_time, + player_list) self:InitBigResult(room) local big_result = self._view:GetChild("big_result") local lst_p = big_result:GetChild("player_list") @@ -329,7 +318,6 @@ function M:InitData(data, winseat, roomid) tem:GetChild("txt_value").textFormat.size = 30 end end - end return M diff --git a/wb_unity_pro/Assets/ART/extend/poker/runfast/ui/Extend_Poker_RunFastNew_fui.bytes b/wb_unity_pro/Assets/ART/extend/poker/runfast/ui/Extend_Poker_RunFastNew_fui.bytes index 90e5acf1e632cc091fb578d369f8d637f4bf6008..3e6d09b2d10146f51fe0ad551013c3426770bd86 100644 GIT binary patch delta 15469 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 delta 15200 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 mii$;#J;is