hengyang_client/lua_probject/extend_project/extend/zipai/fulushou/PlayerSelfCardInfoView.lua

389 lines
15 KiB
Lua
Raw Normal View History

2025-04-01 10:48:36 +08:00
local PlayerSelfCardInfoView = import(".main.ZPPlayerSelfCardInfoView")
local CardCheck = import(".main.CardCheck")
2025-04-11 12:49:08 +08:00
local SanPaiInfoView = import(".SanPaiInfoView")
2025-04-01 10:48:36 +08:00
local M = {}
2025-04-11 12:49:08 +08:00
--
function M.new(view, mainView)
setmetatable(M, { __index = PlayerSelfCardInfoView })
local self = setmetatable({}, { __index = M })
2025-04-01 10:48:36 +08:00
self.class = "PlayerSelfCardInfoView"
self._view = view
self._mainView = mainView
self._full = true
self:init()
2025-04-11 12:49:08 +08:00
self.onclickNum = 0
2025-04-01 10:48:36 +08:00
return self
end
function M:onTouchBegin(context)
2025-04-11 12:49:08 +08:00
if DataManager.CurrenRoom == nil or DataManager.CurrenRoom.self_player == nil then
2025-04-01 10:48:36 +08:00
return
end
2025-04-11 12:49:08 +08:00
--printlog("点击卡牌=============================>>>")
self.onclickNum = self.onclickNum + 1
2025-04-01 10:48:36 +08:00
local button = context.sender
local card = button.data
2025-04-11 12:49:08 +08:00
if DataManager.CurrenRoom.curren_outcard_seat == DataManager.CurrenRoom.self_player.seat then
2025-04-01 10:48:36 +08:00
self:ShowHuTip(card.card_item)
end
2025-04-11 12:49:08 +08:00
card.startPos = Vector2.New(card.btn_card.x, card.btn_card.y)
local tempOrder = card.btn_card.sortingOrder or 1
card.order = tonumber(tempOrder)
card.btn_card:GetController('cardnum').selectedIndex = 0
card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/203_", card.card_item)
2025-04-01 10:48:36 +08:00
card.btn_card.sortingOrder = 100
2025-04-11 12:49:08 +08:00
local xy = self._area_handcard_list:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
card.btn_card.xy = Vector2.New(card.btn_card.x + 20, card.btn_card.y - 50)
2025-04-01 10:48:36 +08:00
card.touch_pos = xy - button.xy
end
function M:__OnDragEnd(context)
2025-04-11 12:49:08 +08:00
if DataManager.CurrenRoom == nil or DataManager.CurrenRoom.self_player == nil then
2025-04-01 10:48:36 +08:00
return
end
if self.outcard_button then
self.outcard_button = nil
end
2025-04-11 12:49:08 +08:00
--printlog("点击结束卡牌============================>>>")
2025-04-01 10:48:36 +08:00
local button = context.sender
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
local card = button.data
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
local _room = DataManager.CurrenRoom
if (button.y < -480 and _room.curren_outcard_seat == _room.self_player.seat) then
2025-04-11 12:49:08 +08:00
local OutCardCallBackFunc = function()
button.touchable = false
self.outcard_button = card
self:UpdateIsOnClick(false)
self._mainView:OutCard(card.card_item)
end
local tingpaiList = DataManager.CurrenRoom.self_player.tingPaiList
local isHasTing = CheckDictionaryFromContent(card.card_item, DataManager.CurrenRoom.self_player.tingPaiList)
--printlog("是否包含有====》》》》",isHasTing)
--pt(tingpaiList)
if isHasTing == nil then isHasTing = false end
if isHasTing == false and tingpaiList and #tingpaiList > 0 then
local spCallBackFunc = function(isOP)
if isOP then
OutCardCallBackFunc()
else
local isChangeCard = false
self.outcard_button = nil
card.btn_card:GetController('cardnum').selectedIndex = card.sameNum - 1
card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_",
card.card_item)
self._area_handcard_list:AddChild(button)
if card.btn_card.sortingOrder then
card.btn_card.sortingOrder = card.order or 1
end
if #self.card_list == 1 then
isChangeCard = false
self:UpdateHandCardsPos()
return
end
card.btn_card.xy = card.startPos
end
end
local SPView = SanPaiInfoView.new(spCallBackFunc)
else
OutCardCallBackFunc()
end
2025-04-01 10:48:36 +08:00
else
local isChangeCard = false
self.outcard_button = nil
2025-04-11 12:49:08 +08:00
card.btn_card:GetController('cardnum').selectedIndex = card.sameNum - 1
card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_", card.card_item)
2025-04-01 10:48:36 +08:00
self._area_handcard_list:AddChild(button)
2025-04-11 12:49:08 +08:00
if card.btn_card.sortingOrder then
card.btn_card.sortingOrder = card.order or 1
end
2025-04-01 10:48:36 +08:00
if #self.card_list == 1 then
isChangeCard = false
self:UpdateHandCardsPos()
return
end
2025-04-11 12:49:08 +08:00
card.btn_card.xy = card.startPos
2025-04-01 10:48:36 +08:00
end
end
function M:__OnClickHandCard(context)
2025-04-11 12:49:08 +08:00
if DataManager.CurrenRoom == nil or DataManager.CurrenRoom.self_player == nil then
2025-04-01 10:48:36 +08:00
return
end
if self.outcard_button then
self.outcard_button = nil
end
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
local button = context.sender
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
local card = button.data
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
local _room = DataManager.CurrenRoom
2025-04-11 12:49:08 +08:00
if (Utils.IsDoubleClick(context) and _room.curren_outcard_seat == _room.self_player.seat) then
local OutCardCallBackFunc = function()
button.touchable = false
self.outcard_button = card
self:UpdateIsOnClick(false)
self._mainView:OutCard(card.card_item)
end
local tingpaiList = DataManager.CurrenRoom.self_player.tingPaiList
local isHasTing = CheckDictionaryFromContent(card.card_item, DataManager.CurrenRoom.self_player.tingPaiList)
--printlog("是否包含有====》》》》",isHasTing)
--pt(tingpaiList)
if isHasTing == nil then isHasTing = false end
2025-04-01 10:48:36 +08:00
2025-04-11 12:49:08 +08:00
if isHasTing == false and tingpaiList and #tingpaiList > 0 then
local spCallBackFunc = function(isOP)
if isOP then
OutCardCallBackFunc()
else
local isChangeCard = false
self.outcard_button = nil
card.btn_card:GetController('cardnum').selectedIndex = card.sameNum - 1
card.btn_card:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/201_",
card.card_item)
self._area_handcard_list:AddChild(button)
if card.btn_card.sortingOrder then
card.btn_card.sortingOrder = card.order or 1
end
2025-04-01 10:48:36 +08:00
2025-04-11 12:49:08 +08:00
if #self.card_list == 1 then
isChangeCard = false
self:UpdateHandCardsPos()
return
end
card.btn_card.xy = card.startPos
end
end
local SPView = SanPaiInfoView.new(spCallBackFunc)
else
OutCardCallBackFunc()
end
end
end
2025-04-01 10:48:36 +08:00
2025-04-11 12:49:08 +08:00
function M:UpdateOutCardList(outcard, isShow, isMopai, seat)
self:HidePiao()
if (isShow == nil) then
isShow = false
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
if (isMopai == nil) then
isMopai = false
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
self._area_outcard_list:RemoveChildren(0, -1, true)
local outcards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Gcm_OutCard")
if outcard == 0 then
outcards:GetChild("icon").icon = "ui://Main_RunBeardMaJiang/202_1_300"
2025-04-01 10:48:36 +08:00
else
2025-04-11 12:49:08 +08:00
outcards:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/203_", outcard)
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
outcards.x, outcards.y = 0, 0
local show_di_bg = outcards:GetChild("show_di_bg")
-- show_di_bg.visible = true
if (isShow) then
if outcard == 0 then
show_di_bg.visible = false
end
if (seat ~= nil and outcards ~= nil) then
if (isMopai) then
if outcard ~= 0 then
outcards:GetTransition("mopai" .. seat):Play(function()
-- show_di_bg.visible = true
end)
end
2025-04-01 10:48:36 +08:00
else
2025-04-11 12:49:08 +08:00
show_di_bg.visible = false
outcards:GetTransition("cpai" .. seat):Play()
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
else
--show_di_bg.visible = true
end
2025-04-01 10:48:36 +08:00
else
2025-04-11 12:49:08 +08:00
show_di_bg.visible = false
2025-04-01 10:48:36 +08:00
end
self._area_outcard_list:AddChild(outcards)
end
--弃牌
2025-04-11 12:49:08 +08:00
function M:UpdateQiPai(qi_list, isplay)
self._area_qipai_list:RemoveChildren(0, -1, true)
for i = 1, #qi_list do
local qicards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Qipai")
qicards:GetChild("icon").icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_", qi_list[i])
if (isplay) then
if (i == #qi_list) then
qicards:GetTransition("t1"):Play()
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
end
self._area_qipai_list:AddChild(qicards)
end
2025-04-01 10:48:36 +08:00
end
--摸牌动画
2025-04-11 12:49:08 +08:00
function M:PlayingOutCardAnima(card)
2025-04-01 10:48:36 +08:00
coroutine.start(function()
2025-04-11 12:49:08 +08:00
coroutine.wait(0.1)
2025-04-01 10:48:36 +08:00
self:ClearOutCard()
end)
end
2025-04-11 12:49:08 +08:00
function M:UpdateFzList(fz_list, ispaly)
self._area_fz_list:RemoveChildren(0, -1, true)
for i = 1, #fz_list do
local fzitem = nil
2025-04-01 10:48:36 +08:00
if fz_list[i].type ~= RB_FZTypeFLS.Kan then
2025-04-11 12:49:08 +08:00
fzitem = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/ComponentNew")
if (ispaly == false) then
fzitem:RemoveChildren(0, -1, true)
2025-04-01 10:48:36 +08:00
end
end
2025-04-11 12:49:08 +08:00
if fz_list[i].type == RB_FZTypeFLS.Chi then
local fzcards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_3")
2025-04-01 10:48:36 +08:00
--fzcards:GetChild("card_"..1).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].active_card)
fzcards:GetController("c2").selectedIndex = 1
2025-04-11 12:49:08 +08:00
-- fzcards:GetChild("card_"..2).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].opcard[1])
2025-04-01 10:48:36 +08:00
--fzcards:GetChild("card_"..3).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",fz_list[i].opcard[2])
2025-04-11 12:49:08 +08:00
for j = 1, #fz_list[i].active_card do
fzcards:GetChild("card_" .. j).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",
fz_list[i].active_card[j])
end
fzcards.x, fzcards.y = 0, 0
self:playAnim(fzitem, fzcards, #fz_list, i, ispaly)
2025-04-01 10:48:36 +08:00
elseif fz_list[i].type == RB_FZTypeFLS.Peng then
2025-04-11 12:49:08 +08:00
local fzcards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_3")
for j = 1, 3 do
fzcards:GetChild("card_" .. j).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",
fz_list[i].active_card[j])
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
fzcards.x, fzcards.y = 0, 0
self:playAnim(fzitem, fzcards, #fz_list, i, ispaly)
elseif fz_list[i].type == RB_FZTypeFLS.Gang or fz_list[i].type == RB_FZTypeFLS.Zhao then
local fzcards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_4")
for j = 1, 4 do
fzcards:GetChild("card_" .. j).icon = self:getCardItem("ui://Main_RunBeardMaJiang/202_",
fz_list[i].active_card[j])
end
fzcards.x, fzcards.y = 0, 0
self:playAnim(fzitem, fzcards, #fz_list, i, ispaly)
elseif fz_list[i].type == RB_FZTypeFLS.SGang or fz_list[i].type == RB_FZTypeFLS.SZhao then
local fzcards = UIPackage.CreateObjectFromURL("ui://Main_RunBeardMaJiang/Fz_0_4")
2025-04-01 10:48:36 +08:00
2025-04-11 12:49:08 +08:00
for j = 1, 4 do
if j == 4 then
fzcards:GetChild('card_' .. j).icon = self:getCardItem('ui://Main_RunBeardMaJiang/202_',
fz_list[i].active_card[j])
else
fzcards:GetChild('card_' .. j).icon = 'ui://Main_RunBeardMaJiang/202_1_300'
end
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
fzcards.x, fzcards.y = 0, 0
self:playAnim(fzitem, fzcards, #fz_list, i, ispaly)
2025-04-01 10:48:36 +08:00
end
end
end
2025-04-11 12:49:08 +08:00
function M:playAnim(fzitem, fzcards, size, i, ispaly)
if (ispaly == nil) then
ispaly = false
end
if (ispaly and i == size) then
local faArray = fzitem:GetChild("chiwei")
if (faArray ~= nil) then
faArray:AddChild(fzcards)
else
fzitem:AddChild(fzcards)
end
else
fzitem:AddChild(fzcards)
end
self._area_fz_list:AddChild(fzitem)
2025-04-01 10:48:36 +08:00
end
2025-04-11 12:49:08 +08:00
--出牌提示动画
function M:ChuPaiTiShi()
if DataManager.CurrenRoom == nil or DataManager.CurrenRoom.self_player == nil then
2025-04-01 10:48:36 +08:00
return
end
--[[local chu_player = DataManager.CurrenRoom.self_player
local selfplayeTable = {}
selfplayeTable.handcard_list = chu_player.handcard_list
selfplayeTable.fz_list = chu_player.fz_list
selfplayeTable.tiCount = chu_player.tiCount
selfplayeTable.paoCount = chu_player.paoCount
selfplayeTable.hu_xi = chu_player.hu_xi
local player = membe_deep_clone(selfplayeTable)
local mark_ting= {}
for i=1,#DataManager.CurrenRoom.self_player.handcard_list do
local card = DataManager.CurrenRoom.self_player.handcard_list[i]
list_remove(player.handcard_list, card)
local _player = membe_deep_clone(player)
local tingList = CardCheck.tingPai(_player,DataManager.CurrenRoom)
local isKan = false
for j=1,#player.fz_list do
if card == player.fz_list[j].card and player.fz_list[j].type == RB_FZTypeFLS.Kan then
isKan =true
end
end
if #tingList > 0 and isKan == false then
2025-04-11 12:49:08 +08:00
2025-04-01 10:48:36 +08:00
mark_ting[#mark_ting+1] = card
end
table.insert(player.handcard_list, card)
table.sort( player.handcard_list, ViewUtil.HandCardSort)
end--]]
2025-04-11 12:49:08 +08:00
-- -- print("ChuPaiTiShi",#mark_ting,vardump(player))
----------------
if DataManager.CurrenRoom.curren_outcard_seat == DataManager.CurrenRoom.self_player.seat then
self._view:GetController("chupai").selectedIndex = 1
2025-04-01 10:48:36 +08:00
--[[if #mark_ting>0 then
for i=1,#mark_ting do
for k=1,#self.card_list do
local card_view= self.card_list[k]
if card_view.card_item == mark_ting[i] then
card_view.btn_card:GetController("mark_ting").selectedIndex = 1
end
end
end
end--]]
2025-04-11 12:49:08 +08:00
----------------------
if DataManager.CurrenRoom.self_player.tingPaiList and #DataManager.CurrenRoom.self_player.tingPaiList > 0 then
for k = 1, #self.card_list do
local card_view = self.card_list[k]
local isTing, curIndex = CheckDictionaryFromContent(card_view.card_item,
DataManager.CurrenRoom.self_player.tingPaiList)
2025-04-01 10:48:36 +08:00
if isTing then
2025-04-11 12:49:08 +08:00
--printlog("听牌提示===》》》",curIndex)
--pt(DataManager.CurrenRoom.self_player.tingPaiList[curIndex])
local value = #DataManager.CurrenRoom.self_player.tingPaiList[curIndex].value
if tonumber(value) > 0 then
card_view.btn_card:GetController("mark_ting").selectedIndex = 1
end
end
end
end
2025-04-01 10:48:36 +08:00
else
2025-04-11 12:49:08 +08:00
self._view:GetController("chupai").selectedIndex = 0
for k = 1, #self.card_list do
local card_view = self.card_list[k]
2025-04-01 10:48:36 +08:00
card_view.btn_card:GetController("mark_ting").selectedIndex = 0
end
end
end
2025-04-11 12:49:08 +08:00
return M