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

1863 lines
67 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
--- 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