From e08a22afdcf43c3013893661376d7515aadf3059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=AE=B6=E7=82=9C?= <2029049582@qq.com> Date: Wed, 16 Apr 2025 17:32:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E5=B1=80=E7=BB=93=E7=AE=97=E5=88=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base_project/Game/View/MainView.lua | 49 +- .../extend/majiang/lichuan/EXClearingView.lua | 6 +- .../majiang/lichuan/EXMainView_jaingxi.lua | 6 +- .../majiang/lichuan/MJPlayerCardInfoView.lua | 6 +- .../lichuan/MJPlayerSelfCardInfoView.lua | 771 ++++++++++++++---- .../main_majiang/ui/main_majiang_fui.bytes | Bin 290872 -> 293053 bytes 6 files changed, 631 insertions(+), 207 deletions(-) diff --git a/lua_probject/base_project/Game/View/MainView.lua b/lua_probject/base_project/Game/View/MainView.lua index 320a119a..0c5de42a 100644 --- a/lua_probject/base_project/Game/View/MainView.lua +++ b/lua_probject/base_project/Game/View/MainView.lua @@ -112,19 +112,20 @@ function M:InitView(url, isHideIpAdds) self:FillRoomConfig(roominfo_panel1, _room) -- 显示玩家距离 - self.btn_distance = self._view:GetChild('btn_distance') + -- self.btn_distance = self._view:GetChild('btn_distance') --self.btn_distance.displayObject.gameObject:SetActive(false) if self.btn_distance then self.btn_distance.onClick:Add(function() if self._room.self_player.seat == 0 then return end - self.distance_view = PlayerDistanceView.new(false, self._gps_style, function(v) - self:continue_game(v) - end) - self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and - self._state.selectedIndex < 3 and 1 or 0 - self.distance_view:Show() + -- ------lingmeng-----暂时去除gps位置判定 + -- self.distance_view = PlayerDistanceView.new(false, self._gps_style, function(v) + -- self:continue_game(v) + -- end) + -- self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and + -- self._state.selectedIndex < 3 and 1 or 0 + -- self.distance_view:Show() end) end @@ -781,15 +782,16 @@ function M:OnPlayerEnter(...) if self._room.self_player.seat == 0 then return end - if self.distance_view then - self.distance_view:Destroy() - end - self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v) - self:continue_game(v) - end) - self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and - self._state.selectedIndex < 3 and 1 or 0 - self.distance_view:Show() + -- ------lingmeng-----暂时去除gps位置判定 + -- if self.distance_view then + -- self.distance_view:Destroy() + -- end + -- self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v) + -- self:continue_game(v) + -- end) + -- self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and + -- self._state.selectedIndex < 3 and 1 or 0 + -- self.distance_view:Show() if self.btn_distance then self.btn_distance:GetController("state").selectedIndex = 1 end @@ -1118,13 +1120,14 @@ function M:Show() if self._room.self_player.seat == 0 then return end - self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v) - self:continue_game(v) - end) - self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and - self._state.selectedIndex < 3 and 1 or 0 - self.distance_view:Show() - self.btn_distance:GetController("state").selectedIndex = 1 + -- ------lingmeng-----暂时去除gps位置判定 + -- self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v) + -- self:continue_game(v) + -- end) + -- self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and + -- self._state.selectedIndex < 3 and 1 or 0 + -- self.distance_view:Show() + -- self.btn_distance:GetController("state").selectedIndex = 1 end end diff --git a/lua_probject/extend_project/extend/majiang/lichuan/EXClearingView.lua b/lua_probject/extend_project/extend/majiang/lichuan/EXClearingView.lua index 8ed8d128..825aa07e 100644 --- a/lua_probject/extend_project/extend/majiang/lichuan/EXClearingView.lua +++ b/lua_probject/extend_project/extend/majiang/lichuan/EXClearingView.lua @@ -116,20 +116,20 @@ function M:fillResult0(room, peopleNum, result) for j = 1, fzInfoNum do if fzCardInfo[j].type == FZType.Peng then - local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_FZ_3") + local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_Clearing_FZ_3") for l = 1, 3 do local card = item:GetChild(string.format("Btn_Card%d", l)) card.icon = string.format("ui://Main_Majiang/%s202_%d", self:GetPrefix(), fzCardInfo[j].card) end elseif fzCardInfo[j].type == FZType.Chi then - local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_FZ_3") + local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_Clearing_FZ_3") for l = 1, 3 do local card = item:GetChild(string.format("Btn_Card%d", l)) card.icon = string.format("ui://Main_Majiang/%s202_%d", self:GetPrefix(), fzCardInfo[j].opcard [l]) end elseif fzCardInfo[j].type == FZType.Gang or fzCardInfo[j].type == FZType.Gang_An or fzCardInfo[j].type == FZType.Gang_Peng then - local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_FZ_4") + local item = allCardsList:AddItemFromPool("ui://Main_Majiang/Comp_Clearing_FZ_4") for l = 1, 4 do local card = item:GetChild(string.format("Btn_Card%d", l)) if fzCardInfo[j].type == FZType.Gang_An and j == 4 then diff --git a/lua_probject/extend_project/extend/majiang/lichuan/EXMainView_jaingxi.lua b/lua_probject/extend_project/extend/majiang/lichuan/EXMainView_jaingxi.lua index 23823b37..70393f33 100644 --- a/lua_probject/extend_project/extend/majiang/lichuan/EXMainView_jaingxi.lua +++ b/lua_probject/extend_project/extend/majiang/lichuan/EXMainView_jaingxi.lua @@ -913,7 +913,11 @@ end function M:UpdateCardBox(seat) local index = seat - self._ctr_cardbox.selectedIndex = index - 1 + if self._room.room_config.people_num == 2 then + self._ctr_cardbox.selectedIndex = index + else + self._ctr_cardbox.selectedIndex = index - 1 + end end ----------------------------------------------------------- diff --git a/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerCardInfoView.lua b/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerCardInfoView.lua index 16ba29e2..f855e2f3 100644 --- a/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerCardInfoView.lua +++ b/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerCardInfoView.lua @@ -60,7 +60,7 @@ function M:UpdateHandCard(getcard, mp) print("====================================UpdateHandCard3") local card_list = DataManager.CurrenRoom.self_player.card_list - self:ShowHuTip(card_list) + -- self:ShowHuTip(card_list) if getcard then self._out_card = true local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) @@ -133,7 +133,7 @@ function M:__OnClickHandCard(context) end if self._out_card then - self:ShowHuTip(card_list) + -- self:ShowHuTip(card_list) end -- 标记出牌 @@ -155,7 +155,7 @@ end function M:__OnDragStart(card) local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) list_remove(card_list, card) - self:ShowHuTip(card_list) + -- self:ShowHuTip(card_list) end function M:__OnDragEnd(context) diff --git a/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerSelfCardInfoView.lua b/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerSelfCardInfoView.lua index f855e2f3..bab71c42 100644 --- a/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerSelfCardInfoView.lua +++ b/lua_probject/extend_project/extend/majiang/lichuan/MJPlayerSelfCardInfoView.lua @@ -1,196 +1,101 @@ -local MJPlayerSelfCardInfoView = require("main.majiang.MJPlayerSelfCardInfoView") -local MJPlayerCardInfoView = require("main.majiang.MJPlayerCardInfoView") -local CardCheck = import(".CardCheck") +AreaOderType = { + left_right = 'left_right', + right_left = 'right_left', + up_down = 'up_down', + down_up = 'down_up' +} -local M = {} --- +local PlayerCardInfoView = { + _view = nil, + _mainView = nil, + _mask_liangpai = nil, + _mask_data = nil, + _area_handcard_list = nil, + _src_fz_list = nil, + _current_card_type = -1 +} + +local M = PlayerCardInfoView + +--- Create a new PlayerCardInfoView function M.new(view, mainView) - setmetatable(MJPlayerSelfCardInfoView, { __index = MJPlayerCardInfoView }) - setmetatable(M, { __index = MJPlayerSelfCardInfoView }) - local self = setmetatable({}, { __index = M }) - self.class = "PlayerSelfCardInfoView" + local self = {} + setmetatable(self, { __index = M }) self._view = view self._mainView = mainView self:init() return self end -function M:ShowHuTip(card_list) - printlog("ShowHuTip") - local tingList = CardCheck.MuiltiplteCaculateTingPai(card_list, true, DataManager.CurrenRoom.room_config.Qidui, - DataManager.CurrenRoom.room_config.Laizi) - pt(tingList) - if #tingList > 0 then - if DataManager.CurrenRoom.laiziInfo and #DataManager.CurrenRoom.laiziInfo > 0 then - for i = 1, #DataManager.CurrenRoom.laiziInfo do - if IsHasDictionary(DataManager.CurrenRoom.laiziInfo[i], tingList) == false then - table.insert(tingList, DataManager.CurrenRoom.laiziInfo[i]) - end - end - end +function M:init() + local view = self._view + local _area_mask = view:GetChild('area_mask') + local mask = _area_mask.text + + self._mask_data = json.decode(mask) + self._area_handcard_list = view:GetChild('area_handcard_list') + + self._area_fz_list = view:GetChild('area_fz_list') + self._area_outcard_list = view:GetChild('area_outcard_list') + self._src_fz_list = + Vector4(self._area_fz_list.x, self._area_fz_list.y, self._area_fz_list.width, self._area_fz_list.height) + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 1 + end + self._src_fz_list_3d = + Vector4(self._area_fz_list.x, self._area_fz_list.y, self._area_fz_list.width, self._area_fz_list.height) + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 0 + end + + self._mask_liangpai = view:GetChild('mask_liangpai') + + local _gamectr = ControllerManager.GetController(GameController) + if _gamectr then + _gamectr:AddEventListener(GameEvent.MJModifySzie, handler(self, self.SetMJSize)) end - self._mainView._hu_tip:FillData(tingList) end -function M:UpdateHandCard(getcard, mp) - print("====================================UpdateHandCard1", mp) - MJPlayerSelfCardInfoView.UpdateHandCard(self, getcard, mp) - local _carViewList = self._carViewList +function M:SetMJSize(zS) + local tempSzieConfig = {} + tempSzieConfig.size = zS + local filename = 'mjsize' .. DataManager.SelfUser.account_id + Utils.SaveLocalFile(filename, json.encode(tempSzieConfig)) - if DataManager.CurrenRoom.laiziInfo and #self._carViewList > 0 then - for i = 1, #self._carViewList do - local obj = self._carViewList[i] - if obj and obj.card then - if IsHasDictionary(obj.card_item, DataManager.CurrenRoom.laiziInfo) then - if obj.card.GetController then - if obj.card:GetController("laizi") then - obj.card:GetController("laizi").selectedIndex = 1 - end - end - else - if obj.card.GetController then - if obj.card:GetController("laizi") then - obj.card:GetController("laizi").selectedIndex = 0 - end - end - end - end - end - end + --ControllerManager.OnConnect(SocketCode.TimeoutDisconnect) + ViewManager.refreshGameView() +end - print("====================================UpdateHandCard3") - local card_list = DataManager.CurrenRoom.self_player.card_list - -- self:ShowHuTip(card_list) - if getcard then - self._out_card = true - local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) - -- 记录需要标记听牌提示的牌 - local lst_mark = {} - local total_num = 0 - for i = 1, #_carViewList do - local btn = _carViewList[i].card - local card = self:GetCard(btn) - list_remove(card_list, card) - local tingList = CardCheck.MuiltiplteCaculateTingPai(card_list, true, - DataManager.CurrenRoom.room_config.Qidui, DataManager.CurrenRoom.room_config.Laizi) - if #tingList > 0 then - local count = 0 - for j = 1, #tingList do - count = count + self._mainView:CountCardLeftNum(tingList[j]) - end - local tem = {} - tem.item = btn - tem.count = count - total_num = total_num + count - table.insert(lst_mark, tem) - end - table.insert(card_list, card) - end - table.sort(lst_mark, function(a, b) - return a.count > b.count - end) - -- 如果几张牌的可胡牌数一致,也只显示'三角',可胡牌数不一致才显示'多' - local all_same = #lst_mark ~= 0 and lst_mark[1].count == total_num / #lst_mark or false - for i = 1, #lst_mark do - local tem = lst_mark[i] - if all_same or tem.count < lst_mark[1].count then - tem.item:GetController("mark_ting").selectedIndex = 1 - else - tem.item:GetController("mark_ting").selectedIndex = 2 - end +function M:SetPlayer(p) + self._player = p +end + +function M:FillData(begin) + if (begin) then + for i = 1, #self._player.fz_list do + self:UpdateFzList(self._player.fz_list[i], -1) end + self:UpdateOutCardList() else - for i = 1, #_carViewList do - local btn = _carViewList[i].card - if btn:GetController("mark_ting").selectedIndex ~= 0 then - btn:GetController("mark_ting").selectedIndex = 0 + self._current_card_type = DataManager.CurrenRoom.card_type + + if self._current_card_type == 2 then + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 1 end - end - self._out_card = false - end -end - -function M:__OnClickHandCard(context) - -- print("==========================__OnClickHandCard") - local button = context.sender - local _carViewList = self._carViewList - local refresh = true - local card_list = {} - for i = 1, #_carViewList do - local btn = _carViewList[i].card - local card = self:GetCard(btn) - if btn ~= button and btn.selected == true then - if button.data.card_item == card then - refresh = false - else - self._mainView:markOutCards(false, card) - end - btn.selected = false - end - if not btn.selected then - table.insert(card_list, card) - end - end - - if self._out_card then - -- self:ShowHuTip(card_list) - end - - -- 标记出牌 - if refresh then - if button.selected then - self._mainView:markOutCards(true, button.data.card_item) else - self._mainView:markOutCards(false, button.data.card_item) + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 0 + end end end - - local _room = DataManager.CurrenRoom - if not button.selected and _room.curren_outcard_seat == _room.self_player.seat then - local card = button.data - self._mainView:OutCard(card.card_item) - end end -function M:__OnDragStart(card) - local card_list = membe_clone(DataManager.CurrenRoom.self_player.card_list) - list_remove(card_list, card) - -- self:ShowHuTip(card_list) -end - -function M:__OnDragEnd(context) - if self.outcard_button then - self.outcard_button:Dispose() - self.outcard_button = nil - end - local button = context.sender - - --button:RemoveFromParent() - local card = button.data - local _room = DataManager.CurrenRoom - - -- -- print("button.y"..button.y .. "_room.curren_outcard_seat".._room.curren_outcard_seat) - if (button.y - card.old_postion.y < -50 and _room.curren_outcard_seat == _room.self_player.seat and card.card_item ~= 0) then - self._mainView:OutCard(card.card_item) - button.touchable = false - self.outcard_button = button - else - self._area_handcard_list:AddChildAt(button, card.index) - button:TweenMove(card.old_postion, 0.2) - end -end - -function M:CheckPlayerOnlineState() - local room = DataManager.CurrenRoom - for i = 1, #room.player_list do - if room.player_list[i].line_state == 0 then - return false - end - end - return true -end - -function M:Clear(bskip) +function M:Clear() --self._ctr_state.selectedIndex = 0 self._area_fz_list.x = self._src_fz_list.x self._area_fz_list.y = self._src_fz_list.y @@ -200,14 +105,526 @@ function M:Clear(bskip) self._area_fz_list:RemoveChildren(0, -1, true) self._area_handcard_list:RemoveChildren(0, -1, true) self._area_outcard_list:RemoveChildren(0, -1, true) - if bskip == nil or bskip == false then - self._mask_liangpai:RemoveChildren(0, -1, true) + self._mask_liangpai:RemoveChildren(0, -1, true) +end + +-- 获取麻将资源前缀 +function M:GetPrefix() + -- local card_type = DataManager.CurrenRoom.card_type + -- local prefix = card_type == 1 and "a" or "" + -- return prefix + return get_majiang_prefix(DataManager.CurrenRoom.game_id) +end + +function M:fillCard(obj, pos_str, card, use3d) + if DataManager.CurrenRoom.jing and card == DataManager.CurrenRoom.jing and obj:GetController('jing') then + obj:GetController('jing').selectedIndex = 1 + end + if self._current_card_type == 2 and (use3d == nil or use3d == true) then + obj.icon = 'ui://MajiangCard3d/' .. 'b' .. pos_str .. card + else + obj.icon = 'ui://Main_Majiang/' .. self:GetPrefix() .. pos_str .. card + end +end + +function M:getBackCard(card) + return 'ui://Main_Majiang/' .. card +end + +function M:GetCard(btn) + local pic_name = split(btn.icon, '/')[4] + local lst = string.split(pic_name, '_') + return tonumber(lst[2] or 0) +end + +function M:UpdateHandCard(getcard, mp) + print("====================================UpdateHandCard4") + + getcard = getcard or false + mp = mp or false + local handcard_list = self._mask_data['handcard_list'] + local oder = handcard_list['oder'] + local _player = self._player + -- -- print(vardump(self._player)) + + self._area_handcard_list:RemoveChildren(0, -1, true) + -- -- print(vardump(_player.card_list)) + if (not mp) then + local comp_back = handcard_list['comp_back'] + if self._current_card_type == 2 then + comp_back = comp_back .. '_3d' + end + + for i = 0, _player.hand_left_count - 1 do + local obj = UIPackage.CreateObjectFromURL(self:getBackCard(comp_back)) + local _room = DataManager.CurrenRoom + local people_num = _room.room_config.people_num + local pos = ViewUtil.GetPos(_room.self_player.seat, _player.seat, people_num) + local gap = (pos == 3 and people_num == 4 or pos == 2 and people_num == 2) and 15 or 45 + local offset = getcard and (i == _player.hand_left_count - 1 and gap or 0) + -- local offset = getcard and (i == _player.hand_left_count - 1 and 15 or 0) + ViewUtil.CardPos(obj, self._area_handcard_list, oder, i, offset) + + --改变左右两边的手牌的x值 + if self._current_card_type == 2 and (oder == AreaOderType.down_up or oder == AreaOderType.up_down) then + obj.x = i * -7.0 + end + + if (oder == AreaOderType.down_up) then + self._area_handcard_list:AddChildAt(obj, 0) + else + self._area_handcard_list:AddChild(obj) + end + end + else + local outcard_list = self._mask_data['outcard_list'] + local comp = handcard_list['comp'] + local card = outcard_list['card'] + ---- print("comp"..comp) + -- -- print(vardump(_player.card_list)) + + if self._current_card_type == 2 then + comp = comp .. '_3d' + end + + for i = 0, #_player.card_list - 1 do + local obj = UIPackage.CreateObject('Main_Majiang', comp) + + self:fillCard(obj, card, _player.card_list[i + 1]) + -- obj.icon = UIPackage.GetItemURL("Main_Majiang", card .. _player.card_list[i+1]) + + local offset = getcard and (i == _player.hand_left_count - 1 and 0 or 0) + + ViewUtil.CardPos(obj, self._area_handcard_list, oder, i, offset) + + --改变左右两边的手牌的x值 + if self._current_card_type == 2 and (oder == AreaOderType.down_up or oder == AreaOderType.up_down) then + obj.x = i * -7 + end + + if (oder == AreaOderType.down_up) then + self._area_handcard_list:AddChildAt(obj, 0) + else + self._area_handcard_list:AddChild(obj) + end + end + end +end + +-- 获取麻将图片资源位置,可以在扩展中复写 +function M:GetCardPicPack() + -- if DataManager.CurrenRoom.card_type == 2 then + -- return "MajiangCard3d" + -- else + return 'Main_Majiang' + -- end +end + +function M:adjust3dOutPut(obj, area, oder, num, index) + if index >= num then + local row = 1 + math.floor(((index - num) / (num + 2))) + local col = ((index - num) % (num + 2)) + + if oder == AreaOderType.left_right then + obj.x = obj.x + math.floor((area.width - obj.width * (num + 2)) / 2) + elseif oder == AreaOderType.right_left then + obj.x = obj.x - math.floor((area.width - obj.width * (num + 2)) / 2) + elseif oder == AreaOderType.up_down then + obj.y = obj.y + math.floor((area.height - obj.height * (num + 2)) / 2) + obj.x = obj.x - col * 7 + 7 * (row + 1) + elseif oder == AreaOderType.down_up then + obj.y = obj.y - math.floor((area.height - obj.height * (num + 2)) / 2) + obj.x = obj.x - col * 7 - 7 * (row - 1) + end + else + if oder == AreaOderType.left_right then + obj.x = obj.x + math.floor((area.width - obj.width * num) / 2) + elseif oder == AreaOderType.right_left then + obj.x = obj.x - math.floor((area.width - obj.width * num) / 2) + elseif oder == AreaOderType.up_down then + obj.y = obj.y + math.floor((area.height - obj.height * num) / 2) + obj.x = obj.x - index * 7 + elseif oder == AreaOderType.down_up then + obj.y = obj.y - math.floor((area.height - obj.height * num) / 2) + obj.x = obj.x - index * 7 + end + end +end + +function M:UpdateOutCardList(outcard, card_item, cursor) + outcard = outcard or nil + card_item = card_item or 0 + cursor = cursor or nil + + local outlist = self._player.outcard_list + if (outcard) then + outcard:SetPivot(0.5, 0.5, true) + outcard.touchable = false + -- outcard.icon = "ui://Main_Majiang/" .. self:GetPrefix() .. "202_" .. card_item + outcard.icon = string.format('ui://%s/%s202_%s', self:GetCardPicPack(), self:GetPrefix(), card_item) + self._mask_liangpai:AddChild(outcard) end - for i = 1, #self._carViewList do - self._carViewList[i].card:Dispose() + local outcard_list = self._mask_data['outcard_list'] + local oder = outcard_list['oder'] + local comp = outcard_list['comp'] + local card = outcard_list['card'] + local multi_oder = outcard_list['multi_oder'] + local num = outcard_list['num'] + local multi_draw_oder = 0 + local sortStart = 0 + local sortType = 0 + local sortStep = 0 + if (outcard_list['multi_draw_oder']) then + multi_draw_oder = outcard_list['multi_draw_oder'] + end + + if self._current_card_type == 2 then + comp = comp .. '_3d' + num = outcard_list['num3d'] + multi_oder = outcard_list['multi_oder3d'] + sortType = outcard_list['sorting_order3d'] + card = outcard_list['card3d'] + if sortType == 1 then + sortStart = 1 + sortStep = 1 + elseif sortType == -1 then + sortStart = #outlist + sortStep = -1 + end + end + + local obj = nil + self._area_outcard_list:RemoveChildren(0, -1, true) + for i = 0, #outlist - 1 do + obj = UIPackage.CreateObjectFromURL('ui://Main_Majiang/' .. comp) + local row = math.floor(i / num) + local col = math.floor(i % num) + + if self._current_card_type == 2 then + if i >= num then + row = 1 + math.floor(((i - num) / (num + 2))) + col = ((i - num) % (num + 2)) + end + end + if DataManager.CurrenRoom.room_config.people_num == 2 then + ViewUtil.CardPos(obj, self._area_outcard_list, oder, col, nil, nil, -6) + ViewUtil.CardPos(obj, self._area_outcard_list, multi_oder, row, nil, nil, -12) + elseif DataManager.CurrenRoom.room_config.people_num == 4 then + ViewUtil.CardPos(obj, self._area_outcard_list, oder, col, nil, nil, -6) + ViewUtil.CardPos(obj, self._area_outcard_list, multi_oder, row, nil, nil, -12) + else + ViewUtil.CardPos(obj, self._area_outcard_list, oder, col) + ViewUtil.CardPos(obj, self._area_outcard_list, multi_oder, row) + end + + + if self._current_card_type == 2 then + self:adjust3dOutPut(obj, self._area_outcard_list, oder, num, i) + end + + self:fillCard(obj, card, outlist[i + 1]) + -- 添加角标 + self:AddFlag(i + 1, outlist[i], obj) + -- obj.icon = "ui://Main_Majiang/"..card .. outlist[i+1] + sortStart = sortStart + sortStep + obj.sortingOrder = sortStart + obj.data = outlist[i + 1] + + if (oder == AreaOderType.down_up or (multi_draw_oder == 1)) then + self._area_outcard_list:AddChildAt(obj, 0) + else + self._area_outcard_list:AddChild(obj) + end + end + if (obj and cursor) then + cursor.xy = Vector2(obj.width / 2, obj.height / 2) + obj:AddChild(cursor) + obj:GetController('color').selectedIndex = 1 + end +end + +-- 设置添加角标的方法 +function M:SetAddFlag(cb) + self.__addFlag = cb +end + +-- 给麻将牌添加flag +function M:AddFlag(index, card, btn) + if not self.__addFlag then + return + end + local str_flag = self.__addFlag(index, card, btn) + btn:GetController('hun').selectedIndex = str_flag == '' and 0 or 1 + btn:GetChild('flag').icon = str_flag +end + +local function getPos(my_seat, other_seat, total) + local pos = 0 + pos = other_seat - my_seat + 1 + if pos <= 0 then + pos = pos + total + end + if total ~= 4 and pos == total then + pos = total + 1 + end + return pos +end + +function M:UpdateFzList(fz, index, show_card) + local gn = 3 + if fz.type == FZType.Gang or fz.type == FZType.Gang_An or fz.type == FZType.Gang_Peng then + gn = 4 + end + + local fz_list = self._mask_data['fz_list'] + local oder = fz_list['oder'] + local comp = fz_list['comp'] .. gn + local card = fz_list['card'] + local card3d = '' + local adjust3d = 0 + if self._current_card_type == 2 then + comp = comp .. '_3d' + oder = fz_list['oder3d'] + adjust3d = fz_list['adjust3d'] + card = fz_list['card3d'] + card3d = 'b' + end + + local obj = UIPackage.CreateObjectFromURL('ui://Main_Majiang/' .. comp) + -- print("============================================pengpengpeng", comp) + + local _area_fz_list = self._area_fz_list + local _area_outcard_list = self._area_outcard_list + + if (index == -1) then + local num = _area_fz_list.numChildren + + if (oder == AreaOderType.down_up or oder == AreaOderType.up_down) then + _area_fz_list.height = _area_fz_list.height + obj.height + if (oder == AreaOderType.down_up) then + local tem1 = obj.height + for i = 1, num do + local tem = _area_fz_list:GetChildAt(num - i) + tem.y = tem.y + tem1 + end + _area_fz_list.y = _area_fz_list.y - obj.height + else + ViewUtil.CardPos(obj, _area_outcard_list, oder, num) + end + elseif (oder == AreaOderType.left_right or oder == AreaOderType.right_left) then + _area_fz_list.width = _area_fz_list.width + obj.width + if (oder == AreaOderType.right_left) then + local tem1 = obj.width + for i = 1, num do + local tem = _area_fz_list:GetChildAt(num - i) + tem.x = tem.x + tem1 + end + _area_fz_list.x = _area_fz_list.x - obj.width + else + ViewUtil.CardPos(obj, _area_outcard_list, oder, num) + end + end + _area_fz_list:AddChild(obj) + + if self._current_card_type == 2 and (oder == AreaOderType.down_up or oder == AreaOderType.up_down) then + num = _area_fz_list.numChildren + for i = 1, num do + local tem = _area_fz_list:GetChildAt(i - 1) + tem.x = adjust3d * (i - 1) + end + end + else + local obj1 = _area_fz_list:RemoveChildAt(index) + obj1:Dispose() + obj.xy = obj1.xy + _area_fz_list:AddChildAt(obj, index) + end + + -- 显示fz的牌 + local obj_show + if show_card then + obj_show = UIPackage.CreateObjectFromURL('ui://Main_Majiang/Fz_0_' .. gn) + end + + for i = 1, gn do + local _oc = obj:GetChild('card_' .. i) + local _oc2 = nil + + if show_card then + _oc2 = obj_show:GetChild('card_' .. i) + end + + if (fz.type == FZType.Gang_An and i == gn) then + if self._current_card_type == 2 then + _oc.icon = UIPackage.GetItemURL('MajiangCard3d', card3d .. card .. '00') + else + _oc.icon = UIPackage.GetItemURL(self:GetCardPicPack(), card3d .. card .. '00') + end + + if show_card then + _oc2.icon = UIPackage.GetItemURL('Main_Majiang', '202_00') + end + else + if (fz.type == FZType.Chi) then + local index = i + if oder == AreaOderType.right_left or oder == AreaOderType.down_up then + index = gn - i + 1 + end + + self:fillCard(_oc, card, fz.opcard[index]) + + if show_card then + self:fillCard(_oc2, '202_', fz.opcard[index], false) + end + else + self:fillCard(_oc, card, fz.card) + + if show_card then + self:fillCard(_oc2, '202_', fz.card, false) + end + end + end + end + + obj.touchable = false + + if show_card then + obj_show.touchable = false + obj_show:SetPivot(0.5, 0.5, true) + obj_show:SetScale(0.8, 0.8) + self._mask_liangpai:AddChildAt(obj_show, 0) + coroutine.start( + function() + coroutine.wait(2) + obj_show:Dispose() + end + ) + end + + -- -- 标记碰牌对象 + -- local num = self._area_fz_list.numChildren + -- if num == 0 then return end + -- if index == -1 then + -- -- local obj = self._area_fz_list:GetChildAt(num - 1) + -- local pic_arrow = UIPackage.CreateObjectFromURL("ui://Main_Majiang/com_arrow") + -- obj:AddChild(pic_arrow) + -- pic_arrow:Center() + -- local my_seat = self._player.seat + -- if fz.from_seat ~= my_seat then + -- pic_arrow:GetController("show").selectedIndex = 1 + -- pic_arrow:GetController("pos").selectedIndex = getPos(DataManager.CurrenRoom.self_player.seat, fz.from_seat, #DataManager.CurrenRoom.player_list) + -- pic_arrow:SetPivot(0.5, 0.5) + -- if DataManager.CurrenRoom.self_player.seat ~= self._player.seat then + -- pic_arrow.scaleX = 0.5 + -- pic_arrow.scaleY = 0.5 + -- end + -- end + -- end +end + +function M:GetOutCardByIndex(index) + local outcard_list = self._mask_data['outcard_list'] + local oder = outcard_list['oder'] + local multi_draw_oder = 0 + if (outcard_list['multi_draw_oder']) then + multi_draw_oder = outcard_list['multi_draw_oder'] + end + + if (oder == AreaOderType.down_up or (multi_draw_oder == 1)) then + return self._area_outcard_list:GetChildAt(self._area_outcard_list.numChildren - index) + else + return self._area_outcard_list:GetChildAt(index - 1) + end +end + +function M:ResetFzList() + for i = 1, #self._player.fz_list do + local fz = self._player.fz_list[i] + -- if fz.type ~= FZType.Gang_Peng then + self:UpdateFzList(fz, -1) + -- else + -- self:UpdateFzList(fz, i) + -- end + end +end + +local function replace_card(obj, prefix) + local url = obj.icon + if url then + local len = string.len(url) + local pos = string.len('ui://Main_Majiang/') + 1 + local head_char = string.sub(url, pos, pos) + local card = string.sub(url, pos, len) + if head_char >= 'a' then + card = string.sub(card, 2, len) + end + obj.icon = 'ui://Main_Majiang/' .. prefix .. card + end +end + +function M:ResetCardType() + local old_card_type = self._current_card_type + self._current_card_type = DataManager.CurrenRoom.card_type + + --设置3d标志 + if self._current_card_type == 2 then + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 1 + + self._area_fz_list.x = self._src_fz_list_3d.x + self._area_fz_list.y = self._src_fz_list_3d.y + self._area_fz_list.width = self._src_fz_list_3d.z + self._area_fz_list.height = self._src_fz_list_3d.w + end + else + local c3d = self._view:GetController('3d') + if c3d ~= nil then + c3d.selectedIndex = 0 + self._area_fz_list.x = self._src_fz_list.x + self._area_fz_list.y = self._src_fz_list.y + self._area_fz_list.width = self._src_fz_list.z + self._area_fz_list.height = self._src_fz_list.w + end + end + + local change2d = false + if old_card_type == 2 and self._current_card_type ~= 2 then + change2d = true + end + + local change3d = false + if old_card_type ~= 2 and self._current_card_type == 2 then + change3d = true + end + + if change2d == false and change3d == false and self._current_card_type ~= 2 then + local prefix = self:GetPrefix() + + --更新已出牌 + for i = 1, self._area_outcard_list.numChildren do + local obj = self._area_outcard_list:GetChildAt(i - 1) + replace_card(obj, prefix) + end + + --更新手牌 + for i = 1, self._area_handcard_list.numChildren do + local obj = self._area_handcard_list:GetChildAt(i - 1) + replace_card(obj, prefix) + end + + --更新放子牌 + for i = 1, self._area_fz_list.numChildren do + local com = self._area_fz_list:GetChildAt(i - 1) + for j = 1, 4 do + local obj = com:GetChild('card_' .. j) + if obj then + replace_card(obj, prefix) + end + end + end end - self._carViewList = {} end return M diff --git a/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes b/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes index ced0d4d63d8df1a26d1d555d14e4e0c3e0ff2f01..1d6e4a05cf159bbbe52381946c4046f458e7160f 100644 GIT binary patch delta 56053 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 X!oKmqp+kf6OEhrkoKd?aAFc9#dcsr% delta 49703 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