yunque9/lua_probject/extend_project/extend/poker/sanqianfen/SanQianFen_PlayerSelfPokerI...

1863 lines
67 KiB
Lua
Raw Normal View History

2025-05-24 14:29:14 +08:00
---
--- Created by 谌建军.
--- DateTime: 2017/12/13 17:04
---
local SanQianFen_PlayerPokerInfoView = import('.SanQianFen_PlayerPokerInfoView')
local SanQianFen_CardType = import('.SanQianFen_CardType')
local CardView = {
btn_card = nil,
-- 牌号码 (大小)
card_code_number = 0,
-- 牌号码 (花色)
card_code_flower = 0,
-- 索引
index = 0,
-- 牌的列数
index_X = 0,
-- 每一列第几张牌
index_Y = 0,
-- 原始位置
old_postion = Vector2.zero,
m_Select = 0,
}
local function NewCardView(card, cardcodenum, cardcodeflower,index_X,index_Y)
local self = {}
setmetatable(self, {__index = CardView})
self.btn_card = card
self.card_code_number = cardcodenum
self.card_code_flower = cardcodeflower
self.card_isTouchable = 0
self.index_X = index_X
self.index_Y = index_Y
return self
end
local function tableSortNumber(a, b)
return a.card_code_number > b.card_code_number
end
local SanQianFen_PlayerSelfPokerInfoView = {
_view = nil,
_mainView = nil,
_mask_liangpai = nil
}
local M = SanQianFen_PlayerSelfPokerInfoView
function M.new(view, mainView)
setmetatable(M, {__index = SanQianFen_PlayerPokerInfoView})
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.isMoving = false
self.card_width = 129
self.cards_count = 0 -- 牌的总列数
self.cards_view = self._view:GetChild('hand_poker_c')
self.card_list = {}
self.out_card_list = {}
self.touchMoveFun = handler(self, self.TouchMoving1)
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.send_card = {}
self.tips_click_count = 0
self:BtnEvent()
-- local x = {415,215,315,408}
-- for i=1,#x do
-- local t = self:ChangeOneCodeByFrom(x[i])
-- printlog("pppppppppppppppppppppppp",t)
-- printlog("pppppppppppppppppppppppp111111111",self:ChangeCodeByTo1(t))
-- end
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:SortPoker(pokerList)
local pokerListSort = {}
for i=1,#pokerList do
local card_number_code = self:ChangeOneCodeByFrom(pokerList[i])
pokerListSort[i] = card_number_code
end
table.sort(pokerListSort, function (a,b)
return a > b
end)
local card_map = {}
local stack = {}
for i = 1, #pokerListSort do
local card = pokerListSort[i]
local card_num = math.floor(pokerListSort[i] / 10)
--printlog("aaaaaaaaaaaaaaa ",card_num)
if card_map[card_num] == nil then
card_map[card_num] = {card}
stack[#stack+1] = card_map[card_num]
else
card_map[card_num][#card_map[card_num] + 1] = card
end
end
--pt(pokerListSort)
-- for k, v in pairs(card_map) do
-- if #v >= 0 then
-- stack[#stack+1] = v
-- end
-- end
-- local stack1 = {}
-- for i=#stack,1,-1 do
-- stack1[#stack1+1]=stack[i]
-- end
--printlog("ccccccccccccccccccccccccccc")
--pt(stack)
return stack
end
function M:isBoomSelect(card,isSelect)
local num = 0
-- printlog("cccccccccccccccccc111111111 ",card.card_code_flower)
for i = #self.card_list, 1, -1 do
if card.card_code_flower % 100 == self.card_list[i].card_code_flower % 100 then
num = num + 1
end
end
--printlog("cccccccccccccccccc222222222222222222 ",num,isSelect)
if num > 3 then
for i = #self.card_list, 1, -1 do
if card.card_code_flower % 100 == self.card_list[i].card_code_flower % 100
and self.card_list[i]~=card
then
self:SetBtnCardColor(self.card_list[i],isSelect and 0.6 or 1)
self:UpdateCardMove(self.card_list[i].btn_card, isSelect, false)
elseif self.card_list[i]~=card and isSelect then
self:SetBtnCardColor(self.card_list[i],1)
self:UpdateCardMove(self.card_list[i].btn_card, false, false)
end
end
else
-- self:UpdateCardMove(card,isSelect,false)
-- self:SetBtnCardColor(card,isSelect and 0.6 or 1)
end
end
function M:test()
end
function M:InitPoker(pokerList, isPlayAni, open)
--printlog("ccccccccccccccccccccccccccccc111111111111111")
--pt(pokerList)
local cs = 1.25
if DataManager.CurrenRoom.cardsize==0 then
cs = 1.35
elseif DataManager.CurrenRoom.cardsize == 1 then
cs = 1.25
elseif DataManager.CurrenRoom.cardsize == 2 then
cs = 1.15
end
cs = 0.9
if self.cor_init_poker ~= nil then
coroutine.stop(self.cor_init_poker)
self.ctr_put_error.selectedIndex = 0
end
-- print(vardump(self.card_list))
self.cor_init_poker = nil
self.card_list = {}
self.cards_view:RemoveChildren(0, -1, true)
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)
local pokerListSort = self:SortPoker(pokerList)
if pokerListSort == nil or #pokerListSort == 0 then
return
end
self.cards_count = #pokerListSort
for i = 1, #pokerListSort do
local pokerListNum = 0
for j = 1, #pokerListSort[i] do
local card_number_code = pokerListSort[i][j]
local code = self:ChangeCodeByTo1(card_number_code)
--printlog("ccccccccccccccccccccccccccccc2222222222222222 ",code)
local btn_card = self:CreatPoker(card_number_code, cs, open)
self.card_width = 120
self.card_hight = 171
local x, y = 500, (j * 75) - 500
btn_card:SetXY(x, y)
self.cards_view:AddChild(btn_card)
self.cards_view:SetChildIndex(btn_card, 12 - j)
local card_view = NewCardView(btn_card, card_number_code,code ,i, j)
--存牌堆
self.card_list[#self.card_list + 1] = card_view
self:AddCardMoveEvent1(card_view)
end
for j = #self.card_list, 1, -1 do
coroutine.wait(0.005)
if pokerListNum == #pokerListSort[i] then
break
end
pokerListNum = pokerListNum + 1
local card_view = self.card_list[j]
card_view.btn_card:RemoveFromParent()
self.cards_view:AddChild(card_view.btn_card)
card_view.btn_card:TweenMove(self:GetHandCardPos2(card_view, self.cards_count), 0.08)
end
end
self:UpdateHandCardsPos1()
self._mainView._popEvent = true
if self._mainView._rightPanelView._settingView ~= nil then
self._mainView._rightPanelView._settingView:SetBtnDismissRoomEnable(true)
end
end
)
else
--printlog("wwwwwwwwwwwwwwww33333333333333333333333333333")
--pt(pokerList)
local pokerListSort = self:SortPoker(pokerList)
if pokerListSort == nil or #pokerListSort == 0 then
return
end
self.cards_count = #pokerListSort
for i = 1, #pokerListSort do
local pokerListNum = 0
for j = 1, #pokerListSort[i] do
local card_number_code = pokerListSort[i][j]
local code = self:ChangeCodeByTo1(card_number_code)
-- printlog("ccccccccccccccccccccccccccccc2222222222222222 ",code)
local btn_card = self:CreatPoker(card_number_code, cs, open)
self.card_width = 120
self.card_hight = 171
self.cards_view:AddChild(btn_card)
self.cards_view:SetChildIndex(btn_card, 12 - j)
local card_view = NewCardView(btn_card, card_number_code,code ,i, j)
--存牌堆
self.card_list[#self.card_list + 1] = card_view
self:AddCardMoveEvent1(card_view)
end
--存牌堆
for j = 1, #self.card_list do
local card_view = self.card_list[j]
card_view.btn_card.xy = self:GetHandCardPos2(card_view, self.cards_count,#pokerListSort[i])
end
end
self:UpdateHandCardsPos1(isPlayAni)
end
end
-- 删手牌
function M:DeleteHandCard(card_code_number)
local card = nil
for i = 1, #self.card_list do
local card_view = self.card_list[i]
if card_code_number == card_view.card_code_number then
card_view.btn_card.touchable = false
list_remove(self.card_list, card_view)
card = card_view
card_view.btn_card:RemoveFromParent()
self.cards_view:RemoveChild(card_view.btn_card, true)
break
end
end
if card ~= nil then
local num = 0
for i = 1, #self.card_list do
if card.index_X == self.card_list[i].index_X and card.index_Y < self.card_list[i].index_Y then
self.card_list[i].index_Y = self.card_list[i].index_Y - 1
end
if card.index_X == self.card_list[i].index_X then
num = num + 1
end
end
if num == 0 then
for i = 1, #self.card_list do
if self.card_list[i].index_X > card.index_X then
self.card_list[i].index_X = self.card_list[i].index_X - 1
end
end
end
end
end
function M:InitPoker1(pokerList, isPlayAni, open)
-- self.zhizhanctr_select=0
-- self.zhizhantype=0
-- self.zhizhannumber=0
-- self.zhizhanlength=0
-- self.zhizhanmustPutMaxCard=0
-- self.zhizhanplay=0
-- self.zhizhanzdts=0
local cs = 1.25
if DataManager.CurrenRoom.cardsize==0 then
cs = 1.35
elseif DataManager.CurrenRoom.cardsize == 1 then
cs = 1.25
elseif DataManager.CurrenRoom.cardsize == 2 then
cs = 1.15
end
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.cards_view:RemoveChildren(0, -1, true)
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)
for i = 1, #pokerList do
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 x, y = self._view.width / 2 + 100, -200
btn_card:SetXY(x, y)
btn_card.alpha = 0
btn_card.touchable = false
-- coroutine.wait(0.05)
self.cards_view:AddChild(btn_card)
local card_view = NewCardView(btn_card, card_number_code, card_flower_code)
self.card_list[#self.card_list + 1] = card_view
table.sort(self.card_list, tableSortNumber)
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:AddCardMoveEvent(card)
end
end
end
end
for j = #self.card_list, 1, -1 do
-- ViewUtil.PlaySound('SanQianFen_PK', 'extend/poker/sanqianfen/sound/mopai.mp3')
local card_view = self.card_list[j]
card_view.index = j
self.cards_view:SetChildIndex(card_view.btn_card, card_view.index - 1)
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
--printlog("wwwwwwwwwwwwwwww33333333333333333333333333333")
--pt(pokerList)
for i = 1, #pokerList do
local card_number_code = self:ChangeOneCodeByFrom(pokerList[i])
local card_flower_code = pokerList[i]
local btn_card = self:CreatPoker(card_number_code, cs, open)
self.cards_view:AddChild(btn_card)
local card_view = NewCardView(btn_card, card_number_code, card_flower_code)
self.card_list[#self.card_list + 1] = card_view
end
table.sort(self.card_list, tableSortNumber)
for i = 1, #self.card_list do
local card = self.card_list[i]
card.index = i
self.cards_view:SetChildIndex(card.btn_card, card.index - 1)
card.btn_card.xy = self:GetHandCardPos(i, #self.card_list)
if open ~= 1 then
-- body
self:AddCardMoveEvent(card)
end
end
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:AddCardMoveEvent(card)
local send_card = {}
card.btn_card.onTouchBegin:Set(
function(context)
self.send_card = {}
if card.btn_card.touchable == false then
return
end
local xy = self.cards_view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
if xy.y > -21 and xy.y < 221 then
self.touchBegin = xy
Stage.inst.onTouchMove:Add(self.touchMoveFun)
--Stage.inst.onClick:Add(self.touchMoveFun)
card.btn_card.onTouchEnd:Set(
function(context)
local xy =
self.cards_view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
Stage.inst.onTouchMove:Remove(self.touchMoveFun)
--Stage.inst.onClick:onTouchMove(self.touchMoveFun)
if xy.y > -21 and xy.y < 221 then
if xy.x - self.touchBegin.x > 0 then
local max_x = xy.x
local min_x = self.touchBegin.x
for k = 1, #self.card_list do
local card = self.card_list[k]
-- for i = 1, #self.card_list do
-- local card = self.card_list[i]
-- 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 card.btn_card.touchable == true then
send_card[#send_card + 1] = card
self:SetBtnCardColor(card, 1)
if k == #self.card_list then
if
card.btn_card.x + self.card_width > min_x and card.btn_card.x < max_x and
card.card_isTouchable == 0
then
self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
--ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
end
else
if
card.btn_card.x +
(self.card_width + self:GetHandCardOffset(#self.card_list)) >
min_x and
card.btn_card.x < max_x and
card.card_isTouchable == 0
then
self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
--ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
end
end
end
end
else
local max_x = self.touchBegin.x
local min_x = xy.x
-- self.send_card = {}
for k = 1, #self.card_list do
local card = self.card_list[k]
-- for i = 1, #self.card_list do
-- local card = self.card_list[i]
-- 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 card.btn_card.touchable == true then
send_card[#send_card + 1] = card
self:SetBtnCardColor(card, 1)
--print(vardump(card))
if k == #self.card_list then
if
card.btn_card.x + self.card_width > min_x and card.btn_card.x < max_x and
card.card_isTouchable == 0
then
self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
--ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
end
else
if
card.btn_card.x +
(self.card_width + self:GetHandCardOffset(#self.card_list)) >
min_x and
card.btn_card.x < max_x and
card.card_isTouchable == 0
then
self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
--ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
end
end
end
end
end
ViewUtil.PlaySound('SanQianFen_PK', 'extend/poker/sanqianfen/sound/click.mp3')
else
self.touchBegin = Vector2.New(0, 0)
for k = 1, #self.card_list do
local card = self.card_list[k]
if card.btn_card.touchable == true then
self:SetBtnCardColor(card, 1)
end
end
end
Stage.inst:ResetInputState()
card.btn_card.onTouchEnd:Set(nil)
--self:zhizhanxuanpai()
end
)
else
local button = card.btn_card
button.onChanged:Add(
function()
-- body
if card.btn_card.selected == true then
self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
else
self:UpdateCardMove(card.btn_card, card.btn_card.selected, false)
end
end
)
end
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)
list_type1, touch_type1 = self:CheckPairs(card_map, 0, 8)
list_type2, touch_type2 = self:CheckPlane(card_map, 0, 6, 0)
list_bomb, touch_bomb = self:CheckBomb(card_map, 0, 4)
local list_type, touch_type = self:CheckOnes(card_map, 0, 11)
for i = 5, 11 do
local list_temp, touch_temp = self:CheckOnes(card_map, 0, i)
if list_temp[1] ~= nil then
-- body
list_type = list_temp
end
end
local temp_list = list_type[1]
local temp_list1 = list_type1[1]
local temp_list2 = list_type2[1]
local temp_bomb = list_bomb[1]
if self.xunpai == nil then
-- body
self.xunpai = {}
end
if temp_list ~= nil and temp_list1 == nil and temp_list2 == nil and temp_bomb == nil and #temp_list > #self.xunpai then
for i = 1, #self.send_card do
self:UpdateCardMove(self.send_card[i].btn_card, false, false)
end
for i = 1, #self.send_card do
for j = 1, #temp_list do
if self.send_card[i] == temp_list[j] then
-- body
self:UpdateCardMove(self.send_card[i].btn_card, true, false)
end
end
end
self.xunpai = temp_list
else
self.xunpai = {}
end
end
function M:TouchMoving(context)
if self.cards_view == nil then
return
end
local send_card1 = {}
local xy = self.cards_view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
self.isTouching = true
if xy.x - self.touchBegin.x > 0 then -- 往右边滑
local max_x = xy.x
local min_x = self.touchBegin.x
for i = 1, #self.card_list do
local card = self.card_list[i]
if card.btn_card.touchable == false or card.card_isTouchable == 1 then
else
if
card.btn_card.x + (self.card_width + self:GetHandCardOffset(#self.card_list)) > min_x and
card.btn_card.x < max_x
then
self:SetBtnCardColor(card, 0.6)
if #send_card1 == 0 then
-- body
send_card1[1] = card
end
for i = 1, #send_card1 do
if send_card1[i] ~= card then
-- body
send_card1[#send_card1 + 1] = card
end
end
else
-- self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
-- card.card_isTouchable = 1
-- ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
self:SetBtnCardColor(card, 1)
end
end
end
elseif xy.x - self.touchBegin.x < 0 then -- 左边滑
local max_x = self.touchBegin.x
local min_x = xy.x
for i = 1, #self.card_list do
local card = self.card_list[i]
if card.btn_card.touchable == false or card.card_isTouchable == 1 then
else
if
card.btn_card.x + (self.card_width + self:GetHandCardOffset(#self.card_list)) > min_x and
card.btn_card.x < max_x
then
-- self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
-- card.card_isTouchable = 1
-- ViewUtil.PlaySound("SanQianFen_PK", "extend/poker/paodekuai/sound/click.mp3")
self:SetBtnCardColor(card, 0.6)
if #send_card1 == 0 then
-- body
send_card1[1] = card
end
for i = 1, #send_card1 do
if send_card1[i] ~= card then
-- body
send_card1[#send_card1 + 1] = card
end
end
else
self:SetBtnCardColor(card, 1)
end
end
end
end
--print(vardump(send_card1))
-- local send_card = {}
-- self.send_card = {}
-- for i = 1, #self.card_list do
-- local card = self.card_list[i]
-- 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
self.send_card = send_card1
end
function M:AddCardMoveEvent1(card)
local send_card = {}
card.btn_card.onTouchBegin:Set(
function(context)
self.send_card = {}
if card.btn_card.touchable == false then
return
end
self.beginCard = card
self.isMoving = false
local xy = self.cards_view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
self.touchBegin = xy
--printlog("rrrrrrrrrrrrrrrrrrrrrrrrrr000000000000000 ",xy.y)
--pt(self.card_list)
Stage.inst.onTouchMove:Add(self.touchMoveFun)
local button = card.btn_card
card.btn_card.onTouchEnd:Set(function ()
self.beginCard = nil
--self:UpdateCardMove(card,not card.btn_card.selected,false)
--self:SetBtnCardColor(card,not card.btn_card.selected and 0.6 or 1)
--self:isBoomSelect(card,not card.btn_card.selected)
if not self.isMoving then
self:SetBtnCardColor(card,card.m_Select == 0 and 0.6 or 1)
end
self.isMoving = false
Stage.inst.onTouchMove:Remove(self.touchMoveFun)
-- for i=1,#self.send_card do
-- self:UpdateCardMove(self.send_card[i],true,false)
-- self:SetBtnCardColor(self.send_card[i],0.6)
-- end
-- for i=1,#self.card_list do
-- -- printlog("aaaaaaaaaaaaaaaaaaaa 111111111111 ",self.card_list[i].btn_card.selected)
-- self:UpdateCardMove(self.card_list[i],not self.card_list[i].btn_card.selected,false)
-- --self:UpdateCardMove(self.card_list[i],true,false)
-- --printlog("aaaaaaaaaaaaaaaaaaaa 2222222 ",self.card_list[i].btn_card.selected)
-- end
-- for i=1,#self.send_card do
-- --printlog("aaaaaaaaaaaaaaaaaaaa1111 ",self.send_card[i].btn_card.selected)
-- end
end)
-- button.onChanged:Add(
-- function()
-- printlog("aaaaaaaaaa2222222222222222222222222")
-- -- body
-- if card.btn_card.selected == true then
-- --printlog("aaaaaaaaaa3333333333333333")
-- self:SetBtnCardColor(card,0.6)
-- self.send_card[#self.send_card+1] = card
-- --self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false)
-- else
-- --printlog("aaaaaaaaaa44444444444444444444444")
-- --self:UpdateCardMove(card.btn_card, card.btn_card.selected, false)
-- self:SetBtnCardColor(card,1)
-- end
-- --self:isBoomSelect(card,not card.btn_card.selected)
-- end
-- )
end
)
end
function M:TouchMoving1(context)
if self.cards_view == nil then
return
end
local send_card1 = {}
local xy = self.cards_view:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y))
self.isMoving = true
self.isTouching = true
if xy.y - self.touchBegin.y > 0 then -- 往下边滑
-- printlog("rrrrrrrrrr1111111111111111111")
local max_y = xy.y
local min_y = self.touchBegin.y
for i = 1, #self.card_list do
local card = self.card_list[i]
if card.btn_card.touchable == false or card.card_isTouchable == 1 then
else
if
card.btn_card.y + (self.card_hight / 2 ) - 40 > min_y and
card.btn_card.x < max_y and card.index_X == self.beginCard.index_X
then
self:SetBtnCardColor(card, 0.6)
elseif self.beginCard and card.index_X == self.beginCard.index_X then
self:SetBtnCardColor(card, 1)
end
end
end
elseif xy.y - self.touchBegin.y < 0 then -- 上边滑
-- printlog("wwwwwwwwwwwwwwwwwwwwwwwww ",xy.y)
local max_y = self.touchBegin.y
local min_y = xy.y
for i = 1, #self.card_list do
local card = self.card_list[i]
--printlog("rrrrrr4444444444444 ",card.btn_card.y," ",xy.y," ",max_y," ",card.index_X)
if
card.btn_card.y + (self.card_hight/2)-40 > min_y and
card.btn_card.y < max_y and self.beginCard and card.index_X == self.beginCard.index_X
then
self:SetBtnCardColor(card, 0.6)
elseif self.beginCard and card.index_X == self.beginCard.index_X then
self:SetBtnCardColor(card, 1)
end
end
end
--self.send_card = send_card1
end
function M:SetBtnCardColor(card, num)
if num == 0.6 then
card.m_Select = 1
else
card.m_Select = 0
end
-- if num == 0.6 then
-- local x = 0
-- for i = 1, #self.card_list do
-- local card = self.card_list[i]
-- 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
-- printlog("ppppppppppp222222222222222222222222")
-- end
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:ShowPiao(piao)
self.ctr_piao.selectedIndex = piao
end
function M:HidePiao()
self.ctr_piao.selectedIndex = 0
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
--printlog("ccccccccccccccccc ",type)
self.tips_click_count = 0
self.send_card = {}
self.tips_card_list = self:GetCardTips(type, number, length, mustPutMaxCard)
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.ctr_put_card_option.selectedIndex = 0
for i = 1, #self.out_card_list do
local card = self.out_card_list[i]
self.cards_view:RemoveChild(card, true)
end
self.out_card_list = {}
if cardlist ~= nil then
-- todo
self:SetOutCardList(cardlist, false)
else
if isPass == true then
self.ctr_outpoker.selectedIndex = 2
for i = 1, #self.card_list do
local card_view = self.card_list[i]
card_view.btn_card.touchable = true
self:UpdateCardMove(card_view.btn_card, false, false)
self:SetBtnCardColor(card_view, 1)
end
else
self.ctr_outpoker.selectedIndex = 0
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)
--pt(self.card_list)
local pos_y = -200
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
--local m_card_list = membe_deep_clone(self.card_list)
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
-- printlog("wwwwwwwwwwwwwwwwww44444444444444")
list_remove(self.card_list, card)
--list_remove(m_card_list,card)
-- todo 出牌动画
local pos =
self:GetOutCardEndPokerPos(
i,
#cardlist,
self.cards_view,
card.btn_card,
self.out_card_data['maxcount_x'],
0.7
)
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(0.7, 0.7)
break
end
end
end
--self.card_list=m_card_list
--printlog("wwwwwwwwwwwwwwwwww55555555555555555555")
--pt(self.card_list)
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('SanQianFen_PK', 'extend/poker/sanqianfen/sound/chupai.mp3')
end
)
else
for i = 1, #cardlist do
local poker_item = UIPackage.CreateObject('Extend_Poker_SanQianFen', 'poker7')
local code = self:ChangeCodeByTo(cardlist[i])
-- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanQianFen/" .. code)
local card_code_obj
-- if DataManager.CurrenRoom.pai==0 then
-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanQianFen/"..code)
-- else
-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2")
-- end
-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 1 then
-- -- body
-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanQianFen/" .. code .. "_1")
-- end
if DataManager.CurrenRoom.pai == 0 then
if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 1 then
-- body
card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_SanQianFen/' .. code .. '_1')
else
card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_SanQianFen/' .. code)
end
else
if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 1 then
-- body
card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_SanQianFen/' .. 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
local card_num_obj = card_code_obj:GetChild("num")
if card_num_obj then
card_num_obj.visible = false
end
card_code_obj:SetScale(0.7, 0.7)
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
)
poker_item.xy = Vector2.New(pos.x, pos_y)
self.out_card_list[#self.out_card_list + 1] = poker_item
if #cardlist> 3 and i == #cardlist then
if card_num_obj then
card_num_obj.visible = true
card_num_obj.text = #cardlist..""
end
end
end
end
end
function M:DeleteHandCards(cardlist)
-- printlog("wwwwwwwwwwwwwwwwwwwwwwwwwww11111111111111")
-- pt(self.card_list)
-- pt(cardlist)
for i = 1, #cardlist do
local card_code_number = cardlist[i]
self:DeleteHandCard(card_code_number)
end
self:UpdateHandCardsPos1()
--printlog("cccccccccccccccccccccccccccrrrrrrrrrrrrrrrrrrrrrrr")
--pt(self.card_list)
--self:UpdateHandCardsPos1()
end
function M:UpdateHandCardsPos()
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.cards_view:SetChildIndex(card_view.btn_card, card_view.index - 1)
--card_view.btn_card.xy = self:GetHandCardPos(i, #self.card_list)
card_view.btn_card:TweenMove(self:GetHandCardPos(i, #self.card_list), 0.1)
self:UpdateCardMove(card_view.btn_card, false, false)
self:SetBtnCardColor(card_view, 1)
end
end
-- 手牌更新位置方法 self.card_list 里面的对象 NewCardViewindex_X index_Y 就是xy序号
function M:UpdateHandCardsPos1(t)
--得到有 多少列
local CountCards = {}
for i = 1, #self.card_list do
CountCards[self.card_list[i].index_X] =
CountCards[self.card_list[i].index_X] == nil and 1 or CountCards[self.card_list[i].index_X] + 1
end
-- printlog("wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww")
--pt(CountCards)
for i = #self.card_list, 1, -1 do
local card_view = self.card_list[i]
card_view.btn_card:RemoveFromParent()
self.cards_view:AddChild(card_view.btn_card)
local num = self:SameNumCode(card_view.card_code_flower%100)
card_view.old_postion = self:GetHandCardPos2(card_view, #CountCards,num)
-- if t == false then
-- card_view.btn_card.xy = card_view.old_postion
-- else
-- card_view.btn_card:TweenMove(card_view.old_postion, 0.3)
-- end
card_view.btn_card:TweenMove(card_view.old_postion, 0.3)
end
self:ShowCardNum()
end
function M:ShowCardNum()
for i=1,#self.card_list do
if self.card_list[i].index_Y == 1 then
local card_num_obj = self.card_list[i].btn_card:GetChildAt(0):GetChild("num")
if card_num_obj then
local num = self:SameNumCode(self.card_list[i].card_code_flower%100)
if num > 3 then
card_num_obj.visible = true
card_num_obj.text = num..""
end
end
end
end
end
function M:SameNumCode(code)
local num = 0
for i=1,#self.card_list do
local numCode = self.card_list[i].card_code_flower % 100
if code == numCode then
num = num + 1
end
end
return num
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)
self:SetBtnCardColor(card_view,1)
end
self.send_card = {}
self.Reset = false
end
function M:UpdateCardMove(btn_card, isSelected, isPlay)
--printlog("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy")
--btn_card.selected = isSelected
-- local card_Move = btn_card:GetChildAt(0)
-- local xy = isSelected == true and Vector2.New(0, -30) 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()
for i = 1, #self.card_list do
local card_view = self.card_list[i]
local num = card_view.btn_card.touchable == true and 1 or 0.6
self:SetBtnCardColor(card_view, num)
end
end
function M:BtnEvent()
self.btn_not_put = self._view:GetChild('btn_not_put')
self.btn_tips = self._view:GetChild('btn_tips')
self.btn_put = self._view:GetChild('btn_put')
self.btn_put.onClick:Set(
function()
if self.Reset 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
if card.m_Select == 1 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.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)
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)
self:SetBtnCardColor(card,0.6)
isExsit = true
end
end
if isExsit == false then
self:UpdateCardMove(card.btn_card, false, false)
self:SetBtnCardColor(card,1)
end
end
end
function M:GetHandCardOffset(count)
local start = -74---54
local offset = 0
if count > 10 then
offset = start - count + 18
else
offset = -50
end
return offset
end
--计算手牌位置
function M:GetHandCardPos2(cards_view, cards,num)
local x, y = 0, 0
local card_width = 120--self.card_width -- 牌的宽度
local middle_x = self.cards_view.width / 2
local start_x = middle_x - (cards / 2 * (card_width))
x = start_x + (card_width) * (cards_view.index_X - 1)
-- if self:getCardSize() == 1 then
-- y = 90 - (85 * cards_view.index_Y)
-- elseif self:getCardSize() == 1.2 then
-- y = 70 - (100 * cards_view.index_Y)
-- elseif self:getCardSize() == 0.6 then
-- y = 100 - (65 * cards_view.index_Y)
-- end
local t = 40
-- if num then
-- if num > 8 then
-- t = 18
-- elseif num > 5 then
-- t= 23
-- else
-- t = 30
-- end
-- end
y = 104- (t * cards_view.index_Y)
return Vector2.New(x, y)
end
function M:GetHandCardPos(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)+self.card_width / 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)
self.ctr_put_error.selectedIndex = 0
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
--SanQianFen_CardType
--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 == SanQianFen_CardType.None then
if DataManager.CurrenRoom.is_new_bout then
--tip_list = self:NewBoutTips(card_map)
end
return tip_list, touch_key_list
elseif type == SanQianFen_CardType.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 == SanQianFen_CardType.OneCard then
-- if mustPutMaxCard then
-- number = max_key - 1
-- self:ErrorTip("下家报单,请出最大的牌 ")
-- end
list_type, touch_type = self:CheckOneCard(card_map, number, length)
elseif type == SanQianFen_CardType.OnePair then
list_type, touch_type = self:CheckOnePair(card_map, number, length)
elseif type == SanQianFen_CardType.Three then
list_type, touch_type = self:CheckThree(card_map, number, length)
elseif type == SanQianFen_CardType.Pairs then
list_type, touch_type = self:CheckPairs(card_map, number, length)
elseif type == SanQianFen_CardType.ThreeAndTwo then
list_type, touch_type = self:CheckThreeAndTwo(card_map, number, length)
elseif type == SanQianFen_CardType.ThreeAndOne then
list_type, touch_type = self:CheckThreeAndOne(card_map, number, length)
elseif type == SanQianFen_CardType.Plane then
list_type, touch_type = self:CheckPlane(card_map, number, length, 0)
elseif type == SanQianFen_CardType.PlaneAndTwo then
list_type, touch_type = self:CheckPlane(card_map, number, length, 2)
elseif type == SanQianFen_CardType.PlaneAndOne then
list_type, touch_type = self:CheckPlane(card_map, number, length, 1)
elseif type == SanQianFen_CardType.Straight then
list_type, touch_type = self:CheckStraight(card_map, number, length)
elseif type == SanQianFen_CardType.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 == length and k > num then
--printlog("bbbbbbbbbbb ",k," ",num," ",length)
bomb_list[#bomb_list + 1] = v
touch_key_list[#touch_key_list + 1] = k
end
if #v > length then
-- if k>num then
-- local v1 = membe_clone(v)
-- local v2 = {}
-- for i=1,length do
-- v2[#v2+1]=v1[i]
-- end
-- bomb_list[#bomb_list + 1] = v2
-- touch_key_list[#touch_key_list + 1] = k
-- end
-- for i=1,#v-length do
-- local v1 = membe_clone(v)
-- local v2 = {}
-- for j=1,length+i do
-- v2[#v2+1] = v1[j]
-- end
-- bomb_list[#bomb_list + 1] = v2
-- touch_key_list[#touch_key_list + 1] = k
-- end
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:Clear()
self:PlayScore(nil)
self:SetOutCardInfo(nil, false)
self.card_list = {}
self.out_card_list = {}
self.cards_view:RemoveChildren(0, -1, true)
-- self.mask_liangpai:RemoveChildren(0,-1,true)
end
-- function M:Clear1()
-- self:PlayScore(nil)
-- self:SetOutCardInfo(nil, false)
-- self.out_card_list = {}
-- -- self.mask_liangpai:RemoveChildren(0,-1,true)
-- end
function M:ClearCheck()
self.card_list = {}
self.out_card_list = {}
self.cards_view:RemoveChildren(0, -1, true)
end
function M:Destroy()
Stage.inst.onTouchMove:Remove(self.touchMoveFun)
end
return M