diff --git a/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua index 5bea39a6..220ea300 100644 --- a/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua +++ b/lua_probject/extend_project/extend/poker/runfast/RunFast_PlayerSelfPokerInfoView.lua @@ -213,7 +213,7 @@ function M:InitPoker(pokerList, isPlayAni, open) -- -- print(vardump(self.card_list)) self.cor_init_poker = nil self.card_list = {} - + self._ctr_canSendCard.selectedIndex = 0 self._view_handCard:RemoveChildren(0, -1, true) if isPlayAni == true then self.cor_init_poker = @@ -1074,7 +1074,6 @@ function M:BtnEvent() function() --printlog("wwwwwwwwwww111111111111111111111111") --pt(self.tips_card_list) - self._ctr_canSendCard.selectedIndex = 1 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) @@ -1126,6 +1125,8 @@ function M:ShowTipsCard(index) end if isExsit == false then self:UpdateCardMove(card.btn_card, false, false) + else + self._ctr_canSendCard.selectedIndex = 1 end end end diff --git a/lua_probject/extend_project/extend/poker2/suoha/CardType.lua b/lua_probject/extend_project/extend/poker2/suoha/CardType.lua new file mode 100644 index 00000000..4db14f23 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/CardType.lua @@ -0,0 +1,24 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/18 11:30 +--- + +local ExCardType = { + None = 0, + OneCard = 1, --一张 + OnePair = 2, --一对 + Three = 3, --三张 + Pairs = 4, --连对 + ThreeAndTwo = 5, --三带二 + ThreeAndOne = 6, --三带一 + Plane = 7, --飞机 + PlaneAndTwo = 8, --飞机带二 + PlaneAndOne = 9, --飞机带一 + Straight = 10, --顺子 + + Bomb = 11, --炸 + FourAndtThree = 12, --四代三 + +} + +return ExCardType diff --git a/lua_probject/extend_project/extend/poker2/suoha/EXGameInfo.lua b/lua_probject/extend_project/extend/poker2/suoha/EXGameInfo.lua new file mode 100644 index 00000000..7a6a647b --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/EXGameInfo.lua @@ -0,0 +1,61 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/18 15:19 +--- +local EXGameInfo = {} + +local M = EXGameInfo + +local roundTable = { 10, 15, 20 } +function EXGameInfo.new(blur_view) + setmetatable(M, { __index = IGameInfo }) + local self = setmetatable({}, { __index = M }) + self.class = "EXGameInfo" + UIPackage.AddPackage("extend/poker/suoha/ui/Info_Poker_SuoHa") + return self +end + +function M:FillData(view, index) + self._maxPlayer = 2 -- 默认玩家人数 + self._roundChoice = 5 -- 回合选项数 + + self._config = UIPackage.CreateObjectFromURL("ui://Info_Poker_RunFastNew/Label_Detail_Play") + + local jiangmaSlider = self._config:GetChild("slider_people") + jiangmaSlider.onChanged:Set(function() + self._config:GetChild("text_people").text = string.format("共%s人", Mathf.Round(jiangmaSlider.value)) + end) +end + +function M:LoadConfigData(data) + local _config = self._config +end + +function M:SelectedConfigData() + local _config = self._config + local round = _config:GetController("round").selectedIndex + + local peopleNum = Mathf.Round(_config:GetChild("slider_people").value) + + local _data = {} + _data["account_id"] = DataManager.SelfUser.Id + + _data["opt"] = round + 1 --局数 + _data["maxPlayers"] = peopleNum --人数为peopleNum + _data["min_score"] = 0 + _data["max_score"] = 0 + _data["max_bet"] = 0 + _data["join_score"] = 0 + _data["min_player"] = 0 + _data["base_score"] = 0 + + return _data +end + +function M:LoadConfigToDetail(data) + local configData = json.decode(data) + local returnString = string.format("人数%s人", configData.maxPlayers) + return returnString +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/EXPlayerInfoView.lua b/lua_probject/extend_project/extend/poker2/suoha/EXPlayerInfoView.lua new file mode 100644 index 00000000..40516ef6 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/EXPlayerInfoView.lua @@ -0,0 +1,18 @@ +local PlayerInfoView = require("Game.View.PlayerInfoView_copy") + +local M = {} + +function M.new(view, mainView) + setmetatable(M, { __index = PlayerInfoView }) + local self = setmetatable({}, { __index = M }) + self._view = view + self._main_view = mainView + self:init() + return self +end + +function M:FillData(player) + PlayerInfoView.FillData(self, player) +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua b/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua new file mode 100644 index 00000000..b334124f --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExGameController.lua @@ -0,0 +1,33 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 11:28 +--- + +local ExProtocol = import(".ExProtocol") +local ExGameEvent = import(".ExGameEvent") +local CardType = import(".CardType") + + +local ExGameController = {} + +local M = ExGameController + +function M.new() + setmetatable(M, { __index = GameController }) + local self = setmetatable({}, { __index = M }) + self:init("跑得快") + self.class = "ExGameController" + return self +end + +function M:init(name) + GameController.init(self, name) + self:RegisterEvt() +end + +-- 事件注册 +function M:RegisterEvt() + +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExGameEvent.lua b/lua_probject/extend_project/extend/poker2/suoha/ExGameEvent.lua new file mode 100644 index 00000000..cebbc7c4 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExGameEvent.lua @@ -0,0 +1,8 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:55 +--- +local ExGameEvent = { + +} +return ExGameEvent diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua new file mode 100644 index 00000000..57986319 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExMainView.lua @@ -0,0 +1,1532 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/18 9:41 +--- +local PKMainView = import("main.poker.PKMainView") +local ExPlayerPokerInfoView = import(".ExPlayerPokerInfoView") +local ExPlayerSelfPokerInfoView = import(".ExPlayerSelfPokerInfoView") +local ExGameEvent = import(".ExGameEvent") +local ExResultView = import(".ExResultView") +local ExRightPanelView = import(".ExRightPanelView") +local PlayerInfoView = import(".EXPlayerInfoView") +local TableBG = import('Game.Data.TableBG') +local M = {} +function M.new() + setmetatable(M, { __index = PKMainView }) + local self = setmetatable({}, { __index = M }) + self.class = "ExMainView" + self:init() + self._gamectr = ControllerManager.GetController(GameController) + return self +end + +local default_bg = 1 +local bg_config = { + { id = 1, url = 'extend/poker/runfast/bg/bg1', thumb = 'ui://Extend_Poker_RunFastNew/table_bg1' }, + { id = 2, url = 'extend/poker/runfast/bg/bg2', thumb = 'ui://Extend_Poker_RunFastNew/table_bg2' }, + { id = 3, url = 'extend/poker/runfast/bg/bg3', thumb = 'ui://Extend_Poker_RunFastNew/table_bg3' } +} + +function M:InitView(url) + local room = self._room + UIPackage.AddPackage("extend/poker/runfast/ui/Extend_Poker_RunFastNew") + PKMainView.InitView(self, "ui://Extend_Poker_RunFastNew/ExMain_New_" .. room.room_config.people_num, nil, 1, + default_bg, bg_config, nil) + local _room = DataManager.CurrenRoom + local user_id = DataManager.SelfUser.account_id + local json_data = Utils.LoadLocalFile(user_id .. _room.game_id .. "pai") + if json_data == nil then + local _gamectr = self._gamectr + self._room.pai = 0 + else + local _data = json.decode(json_data) + local pai = _data["pai"] + self._room.pai = pai + end + + json_data = Utils.LoadLocalFile(user_id .. _room.game_id .. "cardsize") + if json_data == nil then + local _gamectr = self._gamectr + self._room.cardsize = 1 + else + local _data = json.decode(json_data) + local cardsize = _data["cardsize"] + self._room.cardsize = cardsize + end + + + self._player_info = {} + local _player_info = self._player_info + for i = 1, self._room.room_config.people_num do + local tem = self._view:GetChild("player_info" .. i) + _player_info[i] = PlayerInfoView.new(tem, self) + tem.visible = false + end + local list = self._room.player_list + for i = 1, #list do + local p = list[i] + local info = _player_info[self:GetPos(p.seat)] + info._view.visible = true + info:FillData(p) + end + + + local rightpanel = self._view:GetChild("right_panel") + if self._rightPanelView ~= nil then + self._rightPanelView:Destroy() + end + + self._rightPanelView = ExRightPanelView.new(self, rightpanel) + for i = 1, #self._room.player_list do + if self._room.self_player.seat == self._room.player_list[i].seat and self._room.self_player.self_user.account_id ~= self._room.player_list[i].self_user.account_id then + -- body + local ErrorMsgTip = UIPackage.CreateObject("Common", "Win_ConnectTip") + local _action = self._view:AddChild(ErrorMsgTip) + _action.xy = Vector2((self._view.width - _action.width) / 4, self._view.height / 4) + local text = _action:GetChild("tex_message") + local btn1 = _action:GetChild("btn_connect") + local btn2 = _action:GetChild("btn_back") + text.text = "您来晚了,座位有人,请重新进牌桌" + btn1.visible = false + btn2:Center() + btn2.y = btn2.y + 50 + btn2.onClick:Set(function() + -- body + ErrorMsgTip:Destroy() + ErrorMsgTip = nil + self._gamectr:LevelRoom(function(res) + ViewUtil.CloseModalWait() + NetResetConnectWindow.CloseNetReset() + ControllerManager.ChangeController(LoddyController) + ViewManager.ChangeView(ViewManager.View_Lobby) + end) + end) + end + end + + if self._room.hpOnOff == 1 and self._room.score_times ~= 1 then + -- body + self._view:GetChild("roominfo_panel1"):GetChild("tex_beishu").text = self._room.score_times .. "倍" + else + self._view:GetChild("roominfo_panel1"):GetChild("tex_beishu").text = "" + end + + self.ctr_state = self._view:GetController("state") + self._ctr_action = self._view:GetController("action") + self._tex_leftTime = self._view:GetChild("time"):GetChild("title") + self.ctr_time = self._view:GetController("time") + self._text_round = self._view:GetChild("round") + self.ctr_card_eff = self._view:GetController("card_eff") + self._player_card_info = {} + + local _player_card_info = self._player_card_info + for i = 1, room.room_config.people_num do + local tem = self._view:GetChild("player_card_info_" .. i) + _player_card_info[i] = self:NewPlayerCardInfoView(tem, i) + end + + local list = room.player_list + if not room.self_player.ready then + local round = DataManager.CurrenRoom.room_config.config.times or 1 + local xpconfig = DataManager.CurrenRoom.room_config.config.xi_pai + if xpconfig then + if round > 1 then + self._ctr_action.selectedIndex = 1 + else + self._ctr_action.selectedIndex = 2 + end + else + self._ctr_action.selectedIndex = 1 + end + else + self._ctr_action.selectedIndex = 0 + end + self._left_time = 0 + self.bgm_index = 1 + local state = self._room.CurnrenState + + if room.CurnrenState ~= StateType.PalyingWait then + self._state.selectedIndex = state + if room.CurnrenState == StateType.Palying then + self:ReConnectForStart() + end + else + self._state.selectedIndex = StateType.Palying + self:ReconnectForClearing() + end + + self._view:GetChild("btn_back_jiesan").onClick:Set(function() + if self.dismiss_room_cd_time > 0 then + ViewUtil.ErrorTip(nil, "您还处于解散冷却时间当中,请稍后重试!") + else + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:AskDismissRoom() + end + end) + --local tempdsaf=self._view:GetChild("btn_back_jiesan") + --tempdsaf:GetChild("n3").displayObject.gameObject:SetActive(false) + --self._view:GetChild("btn_back_jiesan").displayObject.gameObject:SetActive(false) + + self:ChangeBgmMusic() + self:EventInit() + + self._view:GetChild("bg_mask").onClick:Set(function() + -- self:ResetPoker() + end) + local btn_rule = self._view:GetChild("right_panel"):GetChild("btn_log") + self._view:GetChild('info_text'):GetChild('text').text = room.room_config:GetDes() + if room.room_config.Leaf == 1 then + if room.room_config.people_num == 2 then + self._view:GetChild('wanfa_text').text = '十五张' .. '二人跑得快' .. room.score_times .. '倍' + else + self._view:GetChild('wanfa_text').text = '十五张' .. '三人跑得快' .. room.score_times .. '倍' + end + else + if room.room_config.people_num == 2 then + self._view:GetChild('wanfa_text').text = '十六张' .. '二人跑得快' .. room.score_times .. '倍' + else + self._view:GetChild('wanfa_text').text = '十六张' .. '三人跑得快' .. room.score_times .. '倍' + end + end + + if self._view:GetChild("shengyu") ~= nil then + -- body + + if room.room_config.Leaf == 1 then + -- body + self._view:GetChild("shengyu"):GetChild("shengyu").text = "剩余15张" + else + self._view:GetChild("shengyu"):GetChild("shengyu").text = "剩余16张" + end + end + ------------------lingmeng-------------------------- + + self._tex_leftTime = self._view:GetChild('Comp_Clock'):GetChild('time') -- 重写 + self._text_currenRound = self._view:GetChild('Text_CurrenRound') + self._text_maxRound = self._view:GetChild('Text_MaxMaxRound') + + self:UpdateRound(0) + + --按钮功能全部未开放 + self._view:GetChild('Btn_Spectator').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + self._view:GetChild('Btn_GamePlay').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + self._view:GetChild('Btn_Check').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + self._view:GetChild('Btn_Message').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + self._view:GetChild('Btn_Invite').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + + ---------------------------------------------------- +end + +function M:UpdateCard(index) + self._room.pai = index + local card_info = self._player_card_info[1] + -- for i=1,#self._room.player_list do + -- -- print(i) + -- end + card_info:updatePoker() + for _, player in ipairs(self._room.player_list) do + local player_card_info = self._player_card_info[self:GetPos(player.seat)] + + if self._room.curren_turn_seat ~= player.seat then + if player.out_card_list[1] == 0 then + player_card_info:SetOutCardInfo(nil, true) + else + player_card_info:SetOutCardInfo(player.out_card_list, false) + end + end + end + if self.caozuo == 1 then + local ctr_number = self.pass == nil and 2 or 1 + local lastCardList = self._gamectr:GetLastCardList(self._room.self_player.seat) + local cardType, cardNum, cardLength = self._gamectr:GetCardListInfo(lastCardList) + local m = false + local next_seat = self._room.self_player.seat + 1 + if next_seat > self._room.room_config.people_num then + next_seat = next_seat - self._room.room_config.people_num + end + if self._room:GetPlayerBySeat(next_seat).hand_count == 1 and self._room.room_config.WillBeOut == 1 then + m = true + end + local zdts = self._view:GetController("zidongtishi").selectedIndex + self._player_card_info[1]:ShowOutCardOption(ctr_number, cardType, cardNum, cardLength, m) + end +end + +function M:UpdateCardSize(index) + self._room.cardsize = index + local card_info = self._player_card_info[1] + card_info:updatePoker() +end + +function M:NewPlayerCardInfoView(tem, index) + if index == 1 then + return ExPlayerSelfPokerInfoView.new(tem, self) + end + return ExPlayerPokerInfoView.new(tem, self) +end + +function M:OnPlayerEnter(...) + MainView.OnPlayerEnter(self, ...) + local arg = { ... } + local p = arg[1] + local index = self:GetPos(p.seat) + local info = self._player_info[index] + local selecet_seat = self._view:GetChild("seat_" .. index) + if selecet_seat ~= nil then + selecet_seat.visible = true + end + info:FillData(p) + if self._room.banker_seat == self._room.self_player.seat and self._room.self_player.ready then + self._ctr_action.selectedIndex = 0 + end +end + +function M:OnPlayerReady(...) + local arg = { ... } + local p = arg[1] + local _room = self._room + local _player_info = self._player_info + if p.seat == _room.self_player.seat then + self._ctr_action.selectedIndex = 0 + end + local info = _player_info[self:GetPos(p.seat)] + info:Ready(true) + --local readyNum = 0 + --for i = 1, #_room.player_list do + -- local player = _room.player_list[i] + -- if player.ready then readyNum = readyNum + 1 end + --end + --if _room.banker_seat == _room.self_player.seat and readyNum > 1 and readyNum == _room.room_config.people_num then + -- if self._state.selectedIndex == 2 then + -- local _gamectr = ControllerManager.GetController(GameController) + -- _gamectr:StartGame() + -- end + -- --self._ctr_action.selectedIndex = 2 + --end +end + +function M:OnPlayerLeave(...) + MainView.OnPlayerLeave(self, ...) + local _room = self._room + if not _room.self_player.ready then + --self._ctr_action.selectedIndex = 1 + local round = DataManager.CurrenRoom.room_config.config.times or 1 + local xpconfig = DataManager.CurrenRoom.room_config.config.xi_pai + if xpconfig then + if round > 1 then + self._ctr_action.selectedIndex = 1 + else + self._ctr_action.selectedIndex = 2 + end + else + self._ctr_action.selectedIndex = 1 + end + else + self._ctr_action.selectedIndex = 0 + end +end + +function M:EventInit() + local _gamectr = ControllerManager.GetController(GameController) + MainView.EventInit(self) + local _player_info = self._player_info + local _player_card_info = self._player_card_info + local _room = self._room + + + _gamectr:AddEventListener(ExGameEvent.EventXiPai, function(...) + if self.result_view ~= nil then + self.result_view:Destroy() + self.result_view = nil + end + + self._player_card_info[1]:HidePiao() + + if self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- body + self.MypokerList = cardlist + end + local otherpoker_list = self._view:GetChild("otherpoker_list") + + if otherpoker_list ~= nil then + -- body + otherpoker_list.visible = false + otherpoker_list:RemoveChildrenToPool() + end + self.ctr_state.selectedIndex = 1 + self.ctr_card_eff.selectedIndex = 0 + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + + local list = _room.player_list + for i = 1, #list do + local p = list[i] + local head_info = self._player_info[self:GetPos(p.seat)] + if head_info._view:GetChild("shengyu") ~= nil and head_info._view:GetController("shengyu") ~= nil then + -- body + + if self._room.room_config.showlength == 1 then + -- body + head_info._view:GetController("shengyu").selectedIndex = 1 + else + head_info._view:GetController("shengyu").selectedIndex = 0 + end + + -- body + head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. p.hand_count .. "张" + end + p:Clear() + head_info:FillData(p) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:Clear() + head_info:Ready(false) + end + + + --[[if ( currentPlayer ) then + self._popEvent = false + local xipaiCB=function () + self._popEvent = true + end + self:PlayXiPai(xipaiCB) + else + ViewUtil.ShowModalWait(self._root_view,"等待其它玩家洗牌...") + coroutine.start(function() + coroutine.wait(3) + ViewUtil.CloseModalWait() + end) + + + end--]] + + + local arg = { ... } + local currentPlayer1 = arg[1] + local currentPlayer2 = arg[2] + self._popEvent = false + if (currentPlayer1) then + local xipaiCB = function() + self._popEvent = true + end + self:PlayXiPai(xipaiCB) + end + + + if (currentPlayer2) then + --self._popEvent = false + local xipaiCB2 = function() + self._popEvent = true + end + self:PlayXiPai1(xipaiCB2) + end + end) + + _gamectr:AddEventListener(ExGameEvent.OnMingCard, function(...) + local arg = { ... } + local card = arg[1] + self.ctr_state.selectedIndex = 1 + self.ctr_card_eff.selectedIndex = 1 + self:PlayCardEff(card) + end) + + _gamectr:AddEventListener(ExGameEvent.OnInitCard, function(...) + local arg = { ... } + local round = arg[1] + local cardlist = arg[2] + + + if self.result_view ~= nil then + self.result_view:Destroy() + self.result_view = nil + end + + self._player_card_info[1]:HidePiao() + + if self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- body + self.MypokerList = cardlist + end + local otherpoker_list = self._view:GetChild("otherpoker_list") + + if otherpoker_list ~= nil then + -- body + otherpoker_list.visible = false + otherpoker_list:RemoveChildrenToPool() + end + self.ctr_state.selectedIndex = 1 + self.ctr_card_eff.selectedIndex = 0 + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + self:UpdateRound(round) + ViewUtil.PlaySound("RunFastNew_PK", "extend/poker/runfast/sound/fapai.mp3") + local list = _room.player_list + for i = 1, #list do + local p = list[i] + local head_info = self._player_info[self:GetPos(p.seat)] + if head_info._view:GetChild("shengyu") ~= nil and head_info._view:GetController("shengyu") ~= nil then + -- body + + if self._room.room_config.showlength == 1 then + -- body + head_info._view:GetController("shengyu").selectedIndex = 1 + else + head_info._view:GetController("shengyu").selectedIndex = 0 + end + + -- body + head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. p.hand_count .. "张" + end + p:Clear() + head_info:FillData(p) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:Clear() + head_info:Ready(false) + + if p.seat == self._room.self_player.seat then + if self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- body + card_info:InitPoker(cardlist, false, 1) + else + card_info:InitPoker(cardlist, false) + end + else + --card_info:UpdateHandPoker(#cardlist,true,false) --todo + --card_info:UpdateRemainCard(#cardlist,true) + end + end + end) + + + -- _gamectr:AddEventListener(ExGameEvent.Oener,function ( ... ) + -- local arg = {...} + -- local seat = arg[1] + -- local head_info = self._player_info[self:GetPos(seat)] + -- head_info._view:GetController("Oener").selectedIndex=1 + -- end) + _gamectr:AddEventListener(ExGameEvent.OnIndexMove, function(...) + local arg = { ... } + local seat = arg[1] + local isNewBout = arg[2] + local index = self:GetPos(seat) + + self.ctr_time.selectedIndex = index + -- for i=1,#self._player_info do + -- if index==i then + -- -- body + -- local head_info = self._player_info[index] + -- head_info:MarkBank(true) + -- else + -- local head_info = self._player_info[i] + -- head_info:MarkBank(false) + -- end + -- end + + if index == 1 then + local card_info = self._player_card_info[index] + card_info:SetOutCardInfo(nil, false) + -- if self.MypokerList ~= nil then + -- -- body + -- card_info:Clear() + -- card_info:InitPoker(self.MypokerList, false) + -- self.MypokerList = nil + -- end + end + self._left_time = 20 + if self._room.ming_card ~= nil then + self._view:GetTransition("t" .. index):Play() + self._room.ming_card = nil + if self.tween ~= nil then + TweenUtils.Kill(self.tween) + self.tween = nil + end + end + end) + + _gamectr:AddEventListener(ExGameEvent.OnBombScore, function(...) + local arg = { ... } + local scoreList = arg[1] + -- for i = 1, #scoreList do + -- local player = self._room:GetPlayerBySeat(i) + -- local card_info = self._player_card_info[self:GetPos(i)] + -- local head_info = self._player_info[self:GetPos(i)] + -- card_info:PlayScore(scoreList[i], true) + -- head_info:UpdateScore(player.total_score) + -- end + end) + + _gamectr:AddEventListener(ExGameEvent.OnPlaySucc, function(...) + local arg = { ... } + local p = arg[1] + local card_number = arg[2] + local cardstype = arg[3] + local num = arg[4] + local otherList = arg[5] + local length = arg[6] + self.ctr_time.selectedIndex = 0 + local index = self:GetPos(p.seat) + if index == 1 then + self.caozuo = 0 + end + + local head_info = self._player_info[index] + if head_info._view:GetChild("shengyu") ~= nil then + -- body + -- body + if card_number ~= nil then + -- body + head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. card_number .. "张" + end + end + + local card_info = self._player_card_info[index] + card_info:SetOutCardInfo(p.out_card_list, false, true) + + for i = 1, #otherList do + local other_seat = otherList[i] + local other_card_info = self._player_card_info[self:GetPos(other_seat)] + other_card_info:SetOutCardBlack() + end + + if index == 1 then + card_info:DeleteHandCards(p.out_card_list) + else + card_info:SetRemainCardNumber(card_number == 1) + --card_info:UpdateHandPoker(card_number,false,false) -- todo + end + + if self._room.is_new_bout == true then + for i = 1, #self._room.player_list do + local player = self._room.player_list[i] + local card_info_i = self._player_card_info[self:GetPos(player.seat)] + if p.seat ~= player.seat then + card_info_i:SetOutCardInfo(nil, false) + end + end + -- card_info:PlayCardTypeEff(cardstype) + -- if cardstype~=12 then + -- -- body + + + -- if cardstype==10 and length>=6 then + -- -- card_info_i + -- local chuan = UIPackage.CreateObject("Extend_Poker_RunFast", "chuan1") + -- local card_info_i = self._player_card_info[self:GetPos(p.seat)] + + -- card_info_i._mask_liangpai:AddChild(chuan) + -- chuan:GetChild("n0").asMovieClip.playing = true + -- ViewUtil.PlaySound("RunFastNew_PK", "extend/poker/paodekuai/sound/sunzi.mp3") + -- coroutine.start(function() + -- coroutine.wait(1.5) + -- if chuan~=nil then + -- -- body + -- chuan:Dispose() + -- end + + -- end) + + -- else + -- self:_Effect(cardstype, p) + -- end + -- end + self:_Effect(cardstype, p) + else + if cardstype == 11 and cardstype ~= 12 then + self:_Effect(cardstype, p) + end + end + + self:PlaySound(p.self_user.sex, self:GetSoundFileName(cardstype, num, self._room.is_new_bout)) + if card_number == 1 then + --self:ChangeBgmMusic(2) + self:ChangeBgmMusic(1) + if self._cor_sound ~= nil then + coroutine.stop(self._cor_sound) + end + self._cor_sound = nil + self._cor_sound = coroutine.start(function() + coroutine.wait(1) + self:PlaySound(p.self_user.sex, "card_1") + end) + end + end) + + + _gamectr:AddEventListener(ExGameEvent.OnPassSuccCheckCard, function(...) + self._popEvent = false + local arg = { ... } + local seat = arg[1] + local cards = arg[2] + --self.MypokerList=cards + self.ctr_time.selectedIndex = 0 + local card_info = self._player_card_info[self:GetPos(seat)] + if seat == self._room.self_player.seat then + card_info:ClearCheck() + card_info:InitPoker(cards, false) + + --local player=self._room:GetPlayerBySeat(seat) + --if player.out_card_list[1] == 0 then + -- player_card_info:SetOutCardInfo(nil, true) + --else + --player:SetOutCardInfo({207}, false) + -- end + end + + self._popEvent = true + end) + + _gamectr:AddEventListener(ExGameEvent.OnPassSucc, function(...) + local arg = { ... } + local p = arg[1] + + self.ctr_time.selectedIndex = 0 + local card_info = self._player_card_info[self:GetPos(p.seat)] + + --card_info:SetOutCardInfo(nil, false) + if p.seat == self._room.self_player.seat and self.MypokerList ~= nil then + -- body + card_info:Clear() + card_info:InitPoker(self.MypokerList, false) + self.MypokerList = nil + end + card_info:SetOutCardInfo(nil, true) + self:PlaySound(p.self_user.sex, "pass_" .. math.random(1, 4)) + end) + + _gamectr:AddEventListener(ExGameEvent.OnErrorTip, function(...) + local arg = { ... } + local error_str = arg[1] + self._player_card_info[1]:ErrorTip(error_str) + -- self._player_card_info[1]:ResetPoker() + end) + + _gamectr:AddEventListener(ExGameEvent.OnPiaoTips, function(...) + local arg = { ... } + local piao = arg[1] + local reload = arg[2] + if reload == 0 then + if self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- body + self.MypokerList = cardlist + end + local otherpoker_list = self._view:GetChild("otherpoker_list") + + if otherpoker_list ~= nil then + -- body + otherpoker_list.visible = false + otherpoker_list:RemoveChildrenToPool() + end + self.ctr_state.selectedIndex = 1 + self.ctr_card_eff.selectedIndex = 0 + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + self:UpdateRound(self._room.curren_round) + + local list = _room.player_list + for i = 1, #list do + local p = list[i] + local head_info = self._player_info[self:GetPos(p.seat)] + + p:Clear() + head_info:FillData(p) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:Clear() + head_info:Ready(false) + head_info:UpdatePiao(-1) + end + end + + self._player_card_info[1]:ShowPiao(piao) + end) + + _gamectr:AddEventListener(ExGameEvent.OnPiaoAction, function(...) + local arg = { ... } + local seat = arg[1] + local piao = arg[2] + local head_info = self._player_info[self:GetPos(seat)] + head_info:UpdatePiao(piao) + end) + + _gamectr:AddEventListener(ExGameEvent.OnOptions, function(...) + local arg = { ... } + local play = arg[1] + local pass = arg[5] + local card_type = arg[2] + local card_number = arg[3] + local card_length = arg[4] + local ctr_number = pass == nil and 2 or 1 + self.caozuo = 1 --记录是否是自己出牌的阶段 + self.pass = pass + local m = false + local next_seat = self._room.self_player.seat + 1 + local card_info = self._player_card_info[1] + --card_info:SetOutCardInfo(nil, false) + if self.MypokerList ~= nil then + -- body + card_info:Clear() + card_info:InitPoker(self.MypokerList, false) + self.MypokerList = nil + end + if next_seat > self._room.room_config.people_num then + next_seat = next_seat - self._room.room_config.people_num + end + if self._room:GetPlayerBySeat(next_seat).hand_count == 1 and self._room.room_config.WillBeOut == 1 then + m = true + end + local zdts = self._view:GetController("zidongtishi").selectedIndex + self._player_card_info[1]:ShowOutCardOption(ctr_number, card_type, card_number, card_length, m, play, zdts) + end) + -- 托管 + _gamectr:AddEventListener(ExGameEvent.Game_TuoGuan, function(...) + local arg = { ... } + local tuoguan = arg[1] + local seat = arg[2] + + local tuoguanzhong = self._view:GetChild("tuoguanzhong") + local zhezhao = self._view:GetChild("n109") + local head_info = self._player_info[self:GetPos(seat)] + if (tuoguan == 1) then + if (seat == self._room.self_player.seat) then + tuoguanzhong.visible = true + -- tuoguanzhong.sortingOrder = 2 + zhezhao.visible = true + zhezhao.onClick:Set(function() + _gamectr:TuoGuan(0) + end) + else + head_info._view:GetController("tuoguan").selectedIndex = 1 + end + -- if self.ispanguangzhe == true then + -- -- body + -- zhezhao.visible = false + -- end + else + if (seat == self._room.self_player.seat) then + tuoguanzhong.visible = false + zhezhao.visible = false + -- local btn_tuoguan = self._view:GetChild("n107") + -- btn_tuoguan.onClick:Set(function() + -- _gamectr:TuoGuan(1) + -- -- self:ZhiNengtuoguan() + -- end) + else + head_info._view:GetController("tuoguan").selectedIndex = 0 + end + end + end) + _gamectr:AddEventListener(ExGameEvent.OnResult, function(...) + local arg = { ... } + local over = arg[1] + local info = arg[2] + local win_seat = arg[3] + local remaincards = arg[4] + -- local energyTab = arg[5] + local otherpoker_list = self._view:GetChild("otherpoker_list") + local card_info = self._player_card_info[self:GetPos(self._room.self_player.seat)] + + if self.MypokerList ~= nil then + -- body + card_info:Clear() + card_info:InitPoker(self.MypokerList, false) + self.MypokerList = nil + end + if otherpoker_list ~= nil then + -- body + otherpoker_list:RemoveChildrenToPool() + otherpoker_list.visible = true + end + + if self._cor_sound ~= nil then + coroutine.stop(self._cor_sound) + self._cor_sound = nil + end + + if self.destory_win ~= nil then + coroutine.stop(self.destory_win) + end + + self.destory_win = nil + self.destory_win = coroutine.start(function() + -- -- print("11111111111111") + -- coroutine.wait(1) + coroutine.wait(1) + if self._room.self_player.seat == win_seat then + local sprint_seat_list = self:GetSpringSeats(info) + if #sprint_seat_list > 0 then + local url = "ui://Extend_Poker_RunFastNew/Spring" + self.WinItem_view = UIPackage.CreateObjectFromURL(url) + self._view:AddChild(self.WinItem_view) + self.WinItem_view:Center() + self.WinItem_view:GetTransition("t0"):Play() + ViewUtil.PlaySound("RunFastNew_PK", "base/common/sound/win new.mp3") + end + -- local url = #sprint_seat_list > 0 and "ui://Extend_Poker_RunFastNew/Spring" or "ui://Extend_Poker_RunFastNew/Win_Mine" + else + local beigang = false + if #self:GetSpringSeats(info) > 0 then + for i = 1, #self:GetSpringSeats(info) do + if self:GetSpringSeats(info)[i] == self._room.self_player.seat then + local url = "ui://Extend_Poker_RunFastNew/spring2" + self.WinItem_view = UIPackage.CreateObjectFromURL(url) + self._view:AddChild(self.WinItem_view) + self.WinItem_view:Center() + self.WinItem_view:GetTransition("t0"):Play() + beigang = true + end + end + end + -- if beigang == false then + -- self:CreateRankEff() + -- end + end + for i = 1, #info do + local player = info[i] + local p = self._room:GetPlayerBySeat(player.seat) + local head_info = self._player_info[self:GetPos(player.seat)] + local card_info = self._player_card_info[self:GetPos(player.seat)] + if player.hp_info ~= nil and player.hp_info.cur_hp ~= nil then + p.hp_info = player.hp_info + head_info:UpdateScore(d2ad(player.hp_info.cur_hp)) + head_info._view:GetChild('zhanji').visible = true + local num = player.hp_info.total_hp + if num > 0 then + head_info._view:GetController('text_color').selectedIndex = 0 + head_info._view:GetChild('text_score').text = "+" .. d2ad(player.hp_info.total_hp) + else + head_info._view:GetController('text_color').selectedIndex = 1 + head_info._view:GetChild('text_score').text = d2ad(player.hp_info.total_hp) + end + card_info:PlayScore(d2ad(player.hp_info.round_actual_hp), false, win_seat == player.seat) + else + local rt = 1 + if self._room.hpOnOff == 1 then + rt = self._room.score_times + end + if over == 1 and self._room.hpOnOff == 1 then + head_info:UpdateScore(player.score / 10) --不可负分 + else + head_info:UpdateScore(player.score * rt) + end + card_info:PlayScore(player.winscore * rt, false, win_seat == player.seat) + end + + + if player.seat ~= self._room.self_player.seat then + card_info:UpdateHandPoker(player.cards, false, true) + card_info:SetRemainCardNumber(false) + + card_info._view_resultOut:RemoveChildrenToPool() + card_info._ctr_resultOut.selectedIndex = 1 + card_info.ctr_outpoker.selectedIndex = 0 + for i = 1, #player.handCards do + local child_card = card_info._view_resultOut:AddItemFromPool() + card_info:FillPoker(child_card, "", nil, player.handCards[i]) + coroutine.wait(0.2) + end + end + end + self:ChangeBgmMusic(1) + -- if over == 0 then + if #self:GetSpringSeats(info) > 0 then + -- -- print("222222222222222222") + coroutine.wait(1) + else + -- -- print("333333333333333333") + -- coroutine.wait(2) + end + + self.result_view = ExResultView.new(self._root_view, info, self._room.room_id, over, win_seat, 0, + remaincards) + self.result_view:Show() + if self.WinItem_view ~= nil then + self.WinItem_view:Dispose() + self.WinItem_view = nil + end + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + + if self._room.self_player.entrust == true then + local btn_confirm = self.result_view._view:GetChild("btn_confirm") + btn_confirm.onClick:Call() + end + + -- local _actionView = UIPackage.CreateObject("Common", "Btn_Yellow") + -- _actionView.icon = "ui://Common/btn_comfirm" + -- _actionView.onClick:Set(function () + -- --local _gamectr = ControllerManager.GetController(GameController) + -- _gamectr:ConformToNextGame() + -- _actionView:Dispose() + -- end) + -- _actionView.xy = Vector2(900, 625) + -- self._view:AddChild(_actionView) + -- else + -- coroutine.wait(4) + -- self.result_view = ExResultView.new(self._root_view,info,self._room.room_id) + -- self.result_view:Show() + -- end + end) + if over == 1 then + -- body + self:UnmarkSelfTuoguan() + ControllerManager.ChangeController(LoddyController) + end + end) + + _gamectr:AddEventListener(ExGameEvent.OnResultByDissolve, function(...) + local arg = { ... } + local over = arg[1] + local info = arg[2] + local winseat = arg[3] + local dissolve = arg[4] + + self.result_view = ExResultView.new(self._root_view, info, self._room.room_id, over, winseat, dissolve, nil) + self.result_view:Show() + ControllerManager.ChangeController(LoddyController) + self:UnmarkSelfTuoguan() + end) + + -- 确定开始下一局 成功 + _gamectr:AddEventListener(ExGameEvent.OnConfrimToNextGameSucc, function(...) + local arg = { ... } + local aid = arg[1] + local p = self._room:GetPlayerById(aid) + if p.seat == self._room.self_player.seat then + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + if self.destory_win ~= nil then + coroutine.stop(self.destory_win) + self.destory_win = nil + end + for _, player in ipairs(self._room.player_list) do + local player_card_info = self._player_card_info[self:GetPos(player.seat)] + local player_head = self._player_info[self:GetPos(player.seat)] + player_card_info:Clear() + local otherpoker_list = self._view:GetChild("otherpoker_list") + if otherpoker_list ~= nil then + -- body + otherpoker_list.visible = false + otherpoker_list:RemoveChildrenToPool() + end + --player_head._view:GetController("Oener").selectedIndex=0 + end + end + local player_info = self._player_info[self:GetPos(p.seat)] + player_info:Ready(true) + end) +end + +function M:ReConnectForStart() + local _gamectr = ControllerManager.GetController(GameController) + self._room.is_new_bout = _gamectr:GetIsNewBout(self._room.curren_turn_seat) + self._state.selectedIndex = 1 + self._view:GetController("time").selectedIndex = self:GetPos(self._room.curren_turn_seat) + + for _, player in ipairs(self._room.player_list) do + local player_card_info = self._player_card_info[self:GetPos(player.seat)] + local head_info = self._player_info[self:GetPos(player.seat)] + head_info:Ready(false) + + --如果是体力值不可负分模式 则显示当前的hp值 + if player.hp_info ~= nil and player.hp_info.cur_hp ~= nil then + head_info:UpdateScore(d2ad(player.hp_info.cur_hp)) + head_info._view:GetChild('zhanji').visible = true + local num = player.hp_info.total_hp + if num > 0 then + head_info._view:GetController('text_color').selectedIndex = 0 + head_info._view:GetChild('text_score').text = '+' .. d2ad(player.hp_info.total_hp) + else + head_info._view:GetController('text_color').selectedIndex = 1 + head_info._view:GetChild('text_score').text = d2ad(player.hp_info.total_hp) + end + else + local rt = 1 + if self._room.hpOnOff == 1 then + rt = self._room.score_times + end + head_info:UpdateScore(player.total_score * rt) + end + + head_info:UpdateLineState(player.line_state) + head_info:UpdatePiao(player.piao) + + if head_info._view:GetChild("shengyu") ~= nil and head_info._view:GetController("shengyu") ~= nil then + -- body + + + if self._room.room_config.showlength == 1 then + -- body + head_info._view:GetController("shengyu").selectedIndex = 1 + else + head_info._view:GetController("shengyu").selectedIndex = 0 + end + + -- body + head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. player.hand_count .. "张" + end + if player.seat == self._room.self_player.seat then + if player.open ~= nil and player.open == 0 and self._room.room_config.people_num == 3 and self._room.room_config.fangzuobi == 1 then + -- body + self.MypokerList = player.hand_list + player_card_info:InitPoker(player.hand_list, false, 1) + else + player_card_info:InitPoker(player.hand_list, false) + end + else + player_card_info:SetRemainCardNumber(player.hand_count == 1) + if player.hand_count == 1 then + self.bgm_index = 2 + end + end + if self._room.curren_turn_seat ~= player.seat then + -- head_info:MarkBank(false) + if player.out_card_list[1] == 0 then + player_card_info:SetOutCardInfo(nil, false) + else + player_card_info:SetOutCardInfo(player.out_card_list, false) + end + else + -- head_info:MarkBank(true) + end + end +end + +function M:ReconnectForClearing() + self:UpdateRound(self._room.curren_round) + local win_seat = 0 + --self.rank_view = self:CreateRankEff(self._room.winseat) + for _, player in ipairs(self._room.player_list) do + local head_info = self._player_info[self:GetPos(player.seat)] + local player_card_info = self._player_card_info[self:GetPos(player.seat)] + + --如果是体力值不可负分模式 则显示当前的hp值 + if player.hp_info ~= nil and player.hp_info.cur_hp ~= nil then + head_info:UpdateScore(d2ad(player.hp_info.cur_hp)) + head_info._view:GetChild('zhanji').visible = true + local num = player.hp_info.total_hp + if num > 0 then + head_info._view:GetController('text_color').selectedIndex = 0 + head_info._view:GetChild('text_score').text = '+' .. d2ad(player.hp_info.total_hp) + else + head_info._view:GetController('text_color').selectedIndex = 1 + head_info._view:GetChild('text_score').text = d2ad(player.hp_info.total_hp) + end + -- player_card_info:PlayScore(d2ad(player.hp_info.round_actual_hp)) + else + local rt = 1 + if self._room.hpOnOff == 1 then + rt = self._room.score_times + end + head_info:UpdateScore(player.total_score * rt) + -- player_card_info:PlayScore(player.winscore * rt, false, self._room.winseat) + end + + head_info:UpdateLineState(player.line_state) + --head_info._view:GetController("Oener").selectedIndex=0 + head_info:UpdatePiao(player.piao) + if head_info._view:GetChild("shengyu") ~= nil and head_info._view:GetController("shengyu") ~= nil then + -- body + + if self._room.room_config.showlength == 1 then + -- body + head_info._view:GetController("shengyu").selectedIndex = 1 + else + head_info._view:GetController("shengyu").selectedIndex = 0 + end + + -- body + head_info._view:GetChild("shengyu"):GetChild("shengyu").text = "剩" .. player.hand_count .. "张" + end + + + if player.seat == self._room.self_player.seat then + player_card_info:InitPoker(player.hand_list, false) + else + player_card_info:UpdateHandPoker(player.hand_list, false, true) + end + if player.out_card_list[1] == 0 then + player_card_info:SetOutCardInfo(nil, false) + else + player_card_info:SetOutCardInfo(player.out_card_list, false) + end + end + win_seat = self._room.winseat + self._room.winseat = nil + + local remaincards = self._room.remaincards + if self._room.game_status == 1 then + -- body + coroutine.start(function() + coroutine.wait(0.3) + + self.result_view = ExResultView.new(self._root_view, self._room.player_list, self._room.room_id, 0, + win_seat, 0, remaincards) + self.result_view:Show() + local card_info = self._player_card_info[1] + card_info._view:GetChild("out_card_list").visible = true + end) + if remaincards then + local newremaincards = self._gamectr:ChangeCodeByFrom(remaincards, true) + + -- body + local otherpoker_list = self._view:GetChild("otherpoker_list") + + if otherpoker_list ~= nil then + -- body + otherpoker_list:RemoveChildrenToPool() + otherpoker_list.visible = true + end + + for i = #newremaincards, 1, -1 do + coroutine.start(function() + coroutine.wait(0.1 * (15 - i)) + + + local flow = newremaincards[i] % 10 + local num = (newremaincards[i] - (newremaincards[i] % 10)) / 10 + local card_n = flow * 100 + num + local poker_item = UIPackage.CreateObject("Extend_Poker_RunFastNew", "poker6") + + --local code = self:ChangeCodeByTo(card_n) + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. card_n) + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. card_n .. "_2") + local card_code_obj + if DataManager.CurrenRoom.pai == 0 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. card_n) + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. card_n .. "_2") + end + if card_n == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. card_n .. "_1") + end + card_code_obj:SetScale(0.6, 0.6) + poker_item:AddChild(card_code_obj) + otherpoker_list:AddChild(poker_item) + end) + end + end + end +end + +function M:CreateRankEff() + self.rank_view = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/rank_eff") + self._view:AddChild(self.rank_view) + self.rank_view:Center() + self.rank_view:GetTransition("t0"):Play() +end + +function M:_Effect(type1, player) + -- body + + if type1 < 7 and type1 ~= 4 and type1 ~= 5 then + return + end + local eff_code = 0 + if type1 == 10 then + eff_code = 2 + elseif type1 == 11 then + eff_code = 3 + elseif type1 == 4 then + eff_code = 4 + elseif type1 == 12 then + return + elseif type1 == 5 then + eff_code = 5 + else + eff_code = 1 + end + local info = self._player_card_info[self:GetPos(player.seat)] + local pNode = info._mask_liangpai + local effect = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/eff_" .. eff_code) + -- local effect = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/eff2_1") + effect.touchable = false + effect:GetTransition("t0"):Play() + -- effect:SetXY((self._view.width - effect.width) / 2,(self._view.hight - effect.hight) / 2) + if eff_code == 3 then + self._view:AddChild(effect) + else + pNode:AddChild(effect) + end + + + if eff_code == 1 then + self.eff_feiji = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/eff_feiji") + self._view:AddChild(self.eff_feiji) + self.eff_feiji:Center() + self.eff_feiji:GetTransition("t0"):Play() + end + if eff_code == 3 then + effect:Center() + else + if self:GetPos(player.seat) == 1 then + effect.x, effect.y = 0, 24 + else + effect.x, effect.y = 24, 67 + end + end + + + -- effect:Center() + -- if eff_code ==3 then + -- coroutine.start(function() + -- coroutine.wait(1) + -- effect:Dispose() + -- end) + -- else + coroutine.start(function() + coroutine.wait(1) + if self.eff_feiji ~= nil then + self.eff_feiji:Dispose() + end + effect:Dispose() + end) + -- end +end + +-- function M:_Effect(type1, player) +-- if type1 < 7 and type1 ~= 4 then return end +-- local eff_code = 0 +-- if type1 == 10 then --顺子 +-- eff_code = 2 +-- elseif type1 == 11 then --炸 +-- eff_code = 3 +-- elseif type1 == 4 then --连对 +-- eff_code = 4 +-- else +-- eff_code = 6 +-- end +-- local info = self._player_card_info[self:GetPos(player.seat)] +-- local pNode = info._mask_liangpai +-- local effect = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/MovieClip" .. eff_code) + +-- effect.touchable = false + +-- --effect:SetXY((self._view.width - effect.width) / 2,(self._view.hight - effect.hight) / 2) +-- pNode:AddChild(effect) +-- if type1 == 10 then --顺子 +-- effect.x, effect.y = -400, -200 +-- elseif type1 == 11 then --炸 +-- effect.x, effect.y = -80, -225 +-- elseif type1 == 4 then --连对 +-- effect.x, effect.y = -400, -200 +-- else +-- effect.x, effect.y = -157, -140 +-- end +-- coroutine.start(function() +-- if type1== 10 or type1== 11 or type1== 4 then +-- -- body +-- coroutine.wait(2) +-- effect:Dispose() +-- else +-- coroutine.wait(1.2) +-- effect:Dispose() +-- end + +-- end) +-- if eff_code ==3 then +-- coroutine.start(function() +-- coroutine.wait(1) +-- effect:Dispose() +-- end) +-- else +-- coroutine.start(function() +-- coroutine.wait(2) +-- effect:Dispose() +-- end) +-- end +-- end + + +function M:UpdateRound(round) + local total_round = self._room.room_config.Times + -- self._text_round.text = string.format("%d / %d 局", round, total_round) + if not self._text_currenRound then + self._text_currenRound = self._view:GetChild('Text_CurrenRound') + end + if not self._text_maxRound then + self._text_maxRound = self._view:GetChild('Text_MaxMaxRound') + end + self._text_currenRound.text = round + self._text_maxRound.text = string.format("/%s局", total_round) +end + +function M:GetSoundFileName(type, num, isNewBout) + local fileName + if isNewBout then + if type > 6 or type == 4 then + if type == 8 or type == 9 then + type = 7 + end + fileName = tostring(type) + elseif type > 2 then + fileName = string.format("3_%d", num) + else + fileName = string.format("%d_%d", type, num) + end + else + math.randomseed(os.time()) + if type > 2 and type ~= 11 then + local r = math.random(1, 3) + fileName = "dani_" .. r + elseif type == 11 then + fileName = tostring(type) + else + fileName = string.format("%d_%d", type, num) + end + end + return fileName +end + +function M:GetSpringSeats(player_info) + local seat_list = {} + local card_max_length = self._room.room_config.Leaf + 14 + for i = 1, #player_info do + local player = player_info[i] + if #player.cards == card_max_length then + seat_list[#seat_list + 1] = player.seat + end + end + return seat_list +end + +function M:PlayCardEff(card) + if self.cor_card_eff ~= nil then + coroutine.stop(self.cor_card_eff) + end + self.cor_card_eff = nil + local cor_time = 0.1 + self.cor_card_eff = coroutine.start(function() + self._popEvent = false + local eff = self._view:GetChild("poker_eff") + local poker_obj = eff:GetChild("poker") + local poker_back = eff:GetChild("di") + poker_back.visible = false + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. card) + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. card .. "_2") + local card_code_obj + if DataManager.CurrenRoom.pai == 0 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. card) + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. card .. "_2") + end + if card_code_obj then + card_code_obj:SetScale(1, 1) + poker_obj:AddChild(card_code_obj) + card_code_obj.visible = true + end + + self.tween = TweenUtils.TweenFloat(0, 2340, cor_time, function(x) + poker_back.rotationY = x + poker_obj.rotationY = -180 + x + local x_1 = x % 360 + if (x_1 > 90 and x_1 < 270) then + poker_obj.visible = true + poker_back.visible = false + else + poker_obj.visible = false + poker_back.visible = true + end + end) + coroutine.wait(1) + self._popEvent = true + end) +end + +function M:ResetPoker() + -- if self._room.curren_turn_seat == self._room.self_player.seat then + -- self._player_card_info[1]:ResetPoker() + -- end + self._player_card_info[1]:ResetPoker() +end + +function M:PlaySound(sex, path) + local sex_path = ViewUtil.Sex_Chat[sex] -- 1 男 2 女 + local sound_path = string.format("extend/poker/runfast/sound/%s/%s.mp3", sex_path, path) + ViewUtil.PlaySound("RunFastNew_PK", sound_path) +end + +function M:ChangeBgmMusic(bgm_index) + if bgm_index == nil then + bgm_index = self.bgm_index + else + self.bgm_index = bgm_index + end + ViewUtil.PlayMuisc("RunFastNew_PK", string.format("extend/poker/runfast/sound/bgm%d.mp3", 1)) +end + +function M:OnPlayerEnter(...) + local arg = { ... } + local p = arg[1] + for i = 1, #self._room.player_list do + if self._room.self_player.seat == self._room.player_list[i].seat and self._room.self_player.self_user.account_id ~= self._room.player_list[i].self_user.account_id then + -- body + local ErrorMsgTip = UIPackage.CreateObject("Common", "Win_ConnectTip") + local _action = self._view:AddChild(ErrorMsgTip) + _action.xy = Vector2((self._view.width - _action.width) / 4, self._view.height / 4) + local text = _action:GetChild("tex_message") + local btn1 = _action:GetChild("btn_connect") + local btn2 = _action:GetChild("btn_back") + text.text = "您来晚了,座位有人,请重新进牌桌" + btn1.visible = false + btn2:Center() + btn2.y = btn2.y + 50 + btn2.onClick:Set(function() + -- body + ErrorMsgTip:Destroy() + ErrorMsgTip = nil + self._gamectr:LevelRoom(function(res) + ViewUtil.CloseModalWait() + NetResetConnectWindow.CloseNetReset() + ControllerManager.ChangeController(LoddyController) + ViewManager.ChangeView(ViewManager.View_Lobby) + end) + end) + end + end + -- if p ~= self._room.self_player and self._room.room_config.people_num <= 4 and self._room.room_config.people_num >= 3 and self._gamectr:CheckGPS() then + -- if self.distance_view then + -- self.distance_view:Destroy() + -- end + -- self.distance_view = PlayerDistanceView.new(true) + -- self.distance_view:Show() + -- end + -- local info = self._player_info[self:GetPos(p.seat)] + -- info:FillData(p) + -- info._view.visible = true + MainView.OnPlayerEnter(self, ...) +end + +function M:Destroy() + for i = 1, #self._room.player_list do + local player = self._room.player_list[i] + local card_info_i = self._player_card_info[self:GetPos(player.seat)] + + card_info_i:Destroy() + if card_info_i ~= nil and card_info_i.cor_init_poker ~= nil then + coroutine.stop(card_info_i.cor_init_poker) + end + end + PKMainView.Destroy(self) + UIPackage.RemovePackage("extend/poker/runfast/ui/Extend_Poker_RunFastNew") +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerBackView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerBackView.lua new file mode 100644 index 00000000..39140f2e --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerBackView.lua @@ -0,0 +1,440 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/25 13:52 +--- +local PKPlayBackView = require('main.poker.PKPlayBackView') +local ExPlayerCardInfoView = import('.ExPlayerPokerInfoView') +local ExPlayerSelfCardInfoView = import('.ExPlayerSelfPokerInfoView') +local PlayerInfoView = import('.EXPlayerInfoView') +local ExRightPanelView = import(".ExRightPanelView") +local ExResultView = import(".ExResultView") +local M = {} + +local ExRecord_Event = { + Evt_OutCard = 'OutCard', + Evt_Pass = 'pass', + Evt_NewRound = 'newindex', + Evt_result = 'result', + Evt_Result = 'Result' +} + +local default_bg = 1 +local bg_config = { + { id = 1, url = 'extend/poker/runfast/bg/bg1', thumb = 'ui://Extend_Poker_RunFastNew/table_bg1' }, + { id = 2, url = 'extend/poker/runfast/bg/bg2', thumb = 'ui://Extend_Poker_RunFastNew/table_bg2' }, + { id = 3, url = 'extend/poker/runfast/bg/bg3', thumb = 'ui://Extend_Poker_RunFastNew/table_bg3' } +} + +--- Create a new +function M.new() + setmetatable(M, { __index = PKPlayBackView }) + local self = setmetatable({}, { __index = M }) + self.class = 'ExPlayBackView' + self:init() + + return self +end + +function M:InitView(url) + local room = self._room + if not room.self_player then + room.self_player = room:GetPlayerBySeat(1) + end + self._gamectr = ControllerManager.GetController(GameController) + UIPackage.AddPackage('extend/poker/runfast/ui/Extend_Poker_RunFastNew') + PKPlayBackView.InitView(self, 'ui://Extend_Poker_RunFastNew/ExMain_' .. self._room.room_config.people_num, + default_bg, bg_config) + self._tex_round = self._view:GetChild('round') + self._player_card_info = {} + local _player_card_info = self._player_card_info + for i = 1, room.room_config.people_num do + local tem = self._view:GetChild('player_card_info_' .. i) + self._player_card_info[i] = self:NewPlayerPokerInfoView(tem, i) + end + local rightpanel = self._view:GetChild("right_panel") + if self._rightPanelView ~= nil then + self._rightPanelView:Destroy() + end + + self._rightPanelView = ExRightPanelView.new(self, rightpanel) + rightpanel:GetChild("btn_setting").onClick:Clear() + + self._player_info = {} + local _player_info = self._player_info + for i = 1, self._room.room_config.people_num do + local tem = self._view:GetChild('player_info' .. i) + _player_info[i] = PlayerInfoView.new(tem, self) + end + local list = self._room.player_list + for i = 1, #list do + local p = list[i] + local info = _player_info[self:GetPos(p.seat)] + info._view.visible = true + info:FillData(p) + end + if self._room.hpOnOff == 1 and self._room.score_times ~= 1 then + -- body + self._view:GetChild('roominfo_panel1'):GetChild('tex_beishu').text = self._room.score_times .. '倍' + else + self._view:GetChild('roominfo_panel1'):GetChild('tex_beishu').text = '' + end + self._eventmap = {} + self._cmdmap = {} + self._cmdmap[ExRecord_Event.Evt_OutCard] = self.CmdOutCard + self._cmdmap[ExRecord_Event.Evt_Pass] = self.CmdPass + self._cmdmap[ExRecord_Event.Evt_NewRound] = self.CmdNewRound + self._cmdmap[ExRecord_Event.Evt_result] = self.Cmdresult + self._cmdmap[ExRecord_Event.Evt_Result] = self.CmdResult +end + +function M:NewPlayerPokerInfoView(view, index) + if index == 1 then + return ExPlayerSelfCardInfoView.new(view, self) + end + return ExPlayerCardInfoView.new(view, self) +end + +function M:FillRoomData(data) + -- print("hidezhanji 1111") + self._currentStep = 1 + local room = DataManager.CurrenRoom + local _player_card_info = self._player_card_info + local roominfo_panel = self._view:GetChild('roominfo_panel1') + + roominfo_panel:GetChild('tex_roomid').text = data.info.roomid + roominfo_panel:GetChild('tex_gametype').text = room.room_config:GetGameName() + + for i = 1, #room.player_list do + local p = room.player_list[i] + local card_info = _player_card_info[self:GetPos(p.seat)] + local head_info = self._player_info[self:GetPos(p.seat)] + + if p.total_hp then + -- print("hidezhanji 2222") + + head_info._view:GetChild('zhanji').visible = false + + if room.hpOnOff == 1 or room:checkHpNonnegative() then + head_info._view:GetChild('zhanji').visible = true + head_info._view:GetChild('text_score').text = d2ad(p.total_hp) + end + end + head_info:FillData(p) + head_info:UnmarkTuoguan() + head_info:UpdateScore() + if p.seat ~= room.self_player.seat then + card_info:UpdateHandPoker(p.hand_list, false, true) + end + head_info:UpdatePiao(p.piao) + end + + self:UpdateRound() + + self:GenerateAllStepData(data) + self:ShowStep(1) +end + +function M:ShowStep(index) + local step = self._step[index] + if step == nil then + return + end + for i = 1, #step.player_card_data do + local p = self._room:GetPlayerBySeat(i) + + local info = self._player_card_info[self:GetPos(i)] + p.hand_list = step.player_card_data[i].hand_list + p.out_card_list = step.player_card_data[i].out_card_list + p.hand_left_count = #p.hand_list + + if p.seat ~= self._room.self_player.seat then + info:UpdateHandPoker(p.hand_list, false, true) + else + info:InitPoker(p.hand_list, false) + end + end + + if step.cmd == ExRecord_Event.Evt_OutCard then + local seat = step.current_out_seat + local p = self._room:GetPlayerBySeat(seat) + local info = self._player_card_info[self:GetPos(seat)] + local card = step.out_card_list + local card_list = self._gamectr:ChangeCodeByFrom(card, true) + info:SetOutCardInfo(card_list, false) + self:ClearNextSeatOutCard(seat) + end + + if step.cmd == ExRecord_Event.Evt_Pass then + local seat = step.current_out_seat + local p = self._room:GetPlayerBySeat(seat) + local info = self._player_card_info[self:GetPos(seat)] + info:SetOutCardInfo(nil, true) + self:ClearNextSeatOutCard(seat) + end + if step.cmd == ExRecord_Event.Evt_NewRound then + for i = 1, #self._room.player_list do + local p = self._room:GetPlayerBySeat(i) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:SetOutCardInfo(nil, false) + end + end + if step.cmd == ExRecord_Event.Evt_result then + local result = step.result + for i = 1, #result do + local card_info = self._player_card_info[self:GetPos(result[i].seat)] + + if result[i].entrust ~= nil and result[i].entrust == true then + local head_info = self._player_info[self:GetPos(result[i].seat)] + head_info:MarkTuoguan() + end + -- head_info:UpdateScore(result[i].score) + card_info:PlayScore(result[i].score, false, step.win_seat == result[i].seat) + end + end + if step.cmd == ExRecord_Event.Evt_Result then + local Result = step.Result + self.result_view = ExResultView.new(self._root_view, Result.info, self._room.room_id, Result.type, + Result.winseat, 0, Result.remaincards) + local num = self._view:GetChildIndex(self._view:GetChild("panel_record")) + self._view:AddChildAt(self.result_view._view, num) + else + if self.result_view then + self.result_view:Dispose() + end + end +end + +function M:GenerateAllStepData(data) + local cmdList = self.cmdList + self._step = {} + local step = {} + local info = data.info + step.cmd = '' + + step.win = 0 + step.player_card_data = {} + for i = 1, #self._room.player_list do + local p = info.playerData[i] + local u = {} + u.seat = p.seat + u.hand_list = p.hand_card + u.hand_count = #u.hand_list + u.out_card_list = {} + step.player_card_data[u.seat] = u + end + self._step[#self._step + 1] = step + for i = 1, #cmdList do + local tem = cmdList[i] + self._cmdmap[tem.cmd](self, tem, i) + end +end + +function M:CmdOutCard(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd + data.current_out_seat = cmd.seat + local u = data.player_card_data[cmd.seat] + u.card_list = cmd.data.card + data.out_card_list = cmd.data.card_list + for i = 1, #data.out_card_list do + local out_card = data.out_card_list[i] + for j = 1, #u.hand_list do + if u.hand_list[j] == out_card then + list_remove(u.hand_list, out_card) + break + end + end + end +end + +function M:CmdNewRound(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd +end + +function M:CmdPass(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd + data.current_out_seat = cmd.seat +end + +function M:Cmdresult(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd + data.result = cmd.data.result + data.win_seat = cmd.seat +end + +function M:CmdResult(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd + data.Result = cmd.data + for i = 1, #data.Result.info do + local p = data.Result.info[i] + p.nick = self._room:GetPlayerBySeat(p.seat).self_user.nick_name + end +end + +function M:CopyLastStep(index) + local step = {} + local last_step = self._step[index] + step = membe_clone(last_step) + step.player_card_data = {} + local card_data = step.player_card_data + for i = 1, #last_step.player_card_data do + card_data[i] = {} + card_data[i].hand_list = membe_clone(last_step.player_card_data[i].hand_list) + card_data[i].out_card_list = membe_clone(last_step.player_card_data[i].out_card_list) + end + step.Result = nil + self._step[#self._step + 1] = step + return step +end + +function M:ClearNextSeatOutCard(currenOutCardSeat) + local people_num = self._room.room_config.people_num + local next_seat = currenOutCardSeat + 1 + if next_seat > people_num then + next_seat = next_seat - people_num + end + local p = self._room:GetPlayerBySeat(next_seat) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:SetOutCardInfo(nil, false) +end + +function M:UpdateRound() + local round = self._room.curren_round + self._tex_round.text = string.format('第 %d 局', round) +end + +function M:NextRecordPlay() + self._totalRound = tonumber(self._totalRound) + local result = PlayBackView.NextRecordPlay(self) + if not result then + return + end + self:ChangePlayState(false) + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + if self.result_view then + self.result_view:Dispose() + self.result_view = nil + end +end + +function M:LastRecordPlay() + local result = PlayBackView.LastRecordPlay(self) + if not result then + return + end + self:ChangePlayState(false) + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + if self.result_view then + self.result_view:Dispose() + self.result_view = nil + end +end + +function M:Play() + self:ChangeAlpha() + self:ChangePlayState(not self._play) + if not self._play then + return + end + if (self._currentStep == #self.cmdList and self._playFoward) or (self._currentStep == 0 and not self._playFoward) then + self._currentStep = 0 + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + end +end + +function M:ChangePlayState(state) + self._play = state + self:ChangeTextSpeed() + local btn_play = self._view:GetChild('panel_record'):GetChild('btn_play') + if self._play then + btn_play:GetController('state').selectedIndex = 1 + else + btn_play:GetController('state').selectedIndex = 0 + end +end + +function M:ChangeTextSpeed() + local str1 = self._play and self._speed or '' + self._view:GetChild('panel_record'):GetChild('tex_speed').text = str1 + local str2 = + not self._play and (self._playFoward and '播放暂停' or '回退暂停') or + self._playFoward and (self._speed == 1 and '播放' or '快进') or + (self._speed == 1 and '回退' or '快退') + self._view:GetChild('panel_record'):GetChild('tex_2').text = str2 + local str3 = self._play and '倍速度' or '' + self._view:GetChild('panel_record'):GetChild('tex_1').text = str3 +end + +function M:CmdLeftArrows() + self:ChangeAlpha() + self:ChangePlayState(true) + if not self._playFoward then + if self._speed < 16 then + self._speed = self._speed * 2 + else + self._speed = 1 + end + self:ChangeTextSpeed() + else + self._speed = 1 + self._playFoward = false + self:ChangeTextSpeed() + end +end + +function M:CmdRightArrows() + self:ChangeAlpha() + self:ChangePlayState(true) + if self._playFoward then + if self._speed < 16 then + self._speed = self._speed * 2 + else + self._speed = 1 + end + self:ChangeTextSpeed() + else + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + end +end + +function M:OnUpdate() + if self._play then + if (self._currentStep == #self.cmdList + 1 and self._playFoward) then + self:ChangePlayState(false) + ViewUtil.ErrorTip(nil, '当前已是录像结尾了,再次点击播放按钮可重新播放') + return + elseif (self._currentStep == 0 and not self._playFoward) then + self:ChangePlayState(false) + ViewUtil.ErrorTip(nil, '当前已是录像开头了,再次点击播放按钮可重新播放') + return + end + self._timer = self._timer + Time.deltaTime + if self._timer >= 1 / self._speed then + self._timer = 0 + local step = self._playFoward and 1 or -1 + self._currentStep = self._currentStep + step + if self._currentStep > 0 then + self:ShowStep(self._currentStep) + end + end + end +end + +function M:Destroy() + UpdateBeat:Remove(self.OnUpdate, self) + PlayBackView.Destroy(self) +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua new file mode 100644 index 00000000..d8363ba7 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerPokerInfoView.lua @@ -0,0 +1,40 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 16:35 +--- +local ExPlayerPokerInfoView = { + _view = nil, + _mainView = nil, + _mask_liangpai = nil, +} + +local M = ExPlayerPokerInfoView + +function M.new(view, mainView) + local self = {} + setmetatable(self, { __index = M }) + self._view = view + self._mainView = mainView + self:init() + return self +end + +function M:init() + local view = self._view + self._gameCtr = ControllerManager.GetController(GameController) +end + +function M:Clear() + self:PlayScore(nil) + self:SetRemainCardNumber(false) + self:SetOutCardInfo(nil, false) + self.hand_card_list:RemoveChildren(0, -1, true) + self._mask_liangpai:RemoveChildren(0, -1, true) + self._view_Out:RemoveChildren(0, -1, true) + self._view_resultOut:RemoveChildren(0, -1, true) +end + +function M:Destroy() +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua new file mode 100644 index 00000000..29bb1197 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExPlayerSelfPokerInfoView.lua @@ -0,0 +1,1660 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 17:04 +--- +local ExPlayerPokerInfoView = import('.ExPlayerPokerInfoView') +local ExCardType = import('.ExCardType') +local ExCardCheck = import(".CardCheck") + +local CardView = { + btn_card = nil, + -- 牌号码 (大小) + card_code_number = 0, + -- 牌号码 (花色) + card_code_flower = 0, + -- 索引 + index = 0 +} + +local function NewCardView(card, cardcodenum, cardcodeflower) + local self = {} + setmetatable(self, { __index = CardView }) + self.btn_card = card + self.card_code_number = cardcodenum + self.card_code_flower = cardcodeflower + self.card_isTouchable = 0 + return self +end + +local function tableSortNumber(a, b) + return a.card_code_number > b.card_code_number +end + +local ExPlayerSelfPokerInfoView = { + _view = nil, + _mainView = nil, + _mask_liangpai = nil +} + +local M = ExPlayerSelfPokerInfoView + +function M.new(view, mainView) + setmetatable(M, { __index = ExPlayerPokerInfoView }) + 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.card_width = 171 + self.cards_view = self._view:GetChild('hand_poker_c') + self.card_list = {} + self.out_card_list = {} + self.touchMoveFun = handler(self, self.TouchMoving) + 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() + + ------------------------------lingmeng------------------------ + self.touchMoveEndFun = handler(self, self.TouchMoveEnd) + + self._view_handCard = self._view:GetChild('List_HandCard') + self._view_Out = self._view:GetChild('List_Out') + + self._cardCheck = ExCardCheck:initFlag() + -------------------------------------------------------------- +end + +-- function M:InitPoker(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 +-- -- print("==========================DataManager.CurrenRoom.cardsize", DataManager.CurrenRoom.cardsize) +-- if DataManager.CurrenRoom.cardsize == 0 then +-- cs = 2.5 +-- elseif DataManager.CurrenRoom.cardsize == 1 then +-- cs = 2 +-- elseif DataManager.CurrenRoom.cardsize == 2 then +-- cs = 1.75 +-- end +-- print("lingmengInitPoker", pokerList, isPlayAni, open) +-- 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('RunFastNew_PK', 'extend/poker/runfast/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 +-- 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:InitPoker(pokerList, isPlayAni, open) + 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._view_handCard: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) + table.sort(self.card_list, tableSortNumber) + for i = #pokerList, 1, -1 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 btn_card = self._view_handCard:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + -- 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 + + self:AddTouchMoveEvent(self._view_handCard) + + 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:AddCardTouchEvent(card) + end + end + end + end + for j = #self.card_list, 1, -1 do + -- ViewUtil.PlaySound('RunFastNew_PK', 'extend/poker/runfast/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 + for i = #pokerList, 1, -1 do + local card_number_code = self:ChangeOneCodeByFrom(pokerList[i]) + local card_flower_code = pokerList[i] + local btn_card = self._view_handCard:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + -- 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) + self:AddTouchMoveEvent(self._view_handCard) + 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:AddCardTouchEvent(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 fristCard = self._view_handCard:GetChildAt(0) +-- local CardWidth = fristCard.width +-- local columnGap = self._view_handCard.columnGap +-- local oneCardWidth = CardWidth - columnGap +-- local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) +-- -- if xy.y > -21 and xy.y < 316 then +-- self.touchBegin = xy +-- Stage.inst.onTouchMove:Add(self.touchMoveFun) +-- --Stage.inst.onClick:Add(self.touchMoveFun) +-- card.btn_card.onTouchEnd:Set( +-- function(context) +-- local downCards = #self.card_list +-- local xy = fristCard: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 < 316 then +-- local max_x +-- local min_x +-- if xy.x - self.touchBegin.x > 0 then +-- max_x = xy.x +-- min_x = self.touchBegin.x +-- else +-- max_x = self.touchBegin.x +-- min_x = xy.x +-- end + +-- for k = 1, #self.card_list do +-- local card = self.card_list[k] +-- if not card.btn_card.selected then +-- downCards = downCards - 1 +-- end +-- -- 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, 0) +-- -- 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("RunFastNew_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("RunFastNew_PK", "extend/poker/paodekuai/sound/click.mp3") +-- -- end +-- -- end +-- if +-- (card.btn_card.x + oneCardWidth > min_x or (k == #self.card_list and card.btn_card.x + CardWidth > 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("RunFastNew_PK", "extend/poker/paodekuai/sound/click.mp3") +-- end +-- end +-- end + +-- ViewUtil.PlaySound('RunFastNew_PK', 'extend/poker/runfast/sound/click.mp3') + +-- Stage.inst:ResetInputState() +-- card.btn_card.onTouchEnd:Set(nil) + +-- if downCards == 0 then +-- self:zhizhanxuanpai() +-- end +-- 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:AddTouchMoveEvent(list) + local send_card = {} + + list.onTouchBegin:Set( + function(context) + self.send_card = {} + if list.touchable == false then + return + end + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth - columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + -- if xy.y > -21 and xy.y < 316 then + self.touchBegin = xy + Stage.inst.onTouchMove:Add(self.touchMoveFun) + Stage.inst.onTouchEnd:Add(self.touchMoveEndFun) + --Stage.inst.onClick:Add(self.touchMoveFun) + -- 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:AddCardTouchEvent(card) + card.btn_card.onTouchBegin:Set( + function(context) + if card.btn_card.touchable == false then + return + end + self:SetBtnCardColor(card, 1) + end + ) +end + +-- function M:zhizhanxuanpai() --智障选牌 +-- print("lingmengxuan", #self.send_card) +-- -- 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 +-- if temp_list ~= nil and temp_list1 == nil and temp_list2 == nil and temp_bomb == nil then +-- -- for i = 1, #self.send_card do +-- for i = 1, #self.card_list do +-- self:UpdateCardMove(self.card_list[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: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) + local list_ones = self:CheckOnes(card_map) + + if list_ones ~= nil and #list_ones > 0 then + for i = 1, #self.card_list do + self:UpdateCardMove(self.card_list[i].btn_card, false, false) + end + for i = 1, #self.send_card do + for j = 1, #list_ones do + if self.send_card[i] == list_ones[j][1] then + -- body + self:UpdateCardMove(self.send_card[i].btn_card, true, false) + end + end + end + return list_ones + else + return {} + 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 +-- printlog("cccccccccccccc22222222222222") +-- self:SetBtnCardColor(card, 0.8) +-- 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("RunFastNew_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("RunFastNew_PK", "extend/poker/paodekuai/sound/click.mp3") +-- self:SetBtnCardColor(card, 0.8) +-- 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:TouchMoving(context) + if self._view_handCard == nil then + return + end + local send_card1 = {} + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth + columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + self.isTouching = true + local max_x + local min_x + if xy.x - self.touchBegin.x > 0 then -- 往右边滑 + max_x = xy.x + min_x = self.touchBegin.x + -- elseif xy.x - self.touchBegin.x < 0 then -- 左边滑 + else + max_x = self.touchBegin.x + min_x = xy.x + end + 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 + oneCardWidth > min_x or (i == #self.card_list and card.btn_card.x + CardWidth > min_x)) + and card.btn_card.x < max_x + then + self:SetBtnCardColor(card, 1) + if #send_card1 == 0 then + send_card1[1] = card + end + if send_card1[#send_card1] ~= card then + send_card1[#send_card1 + 1] = card + end + else + self:SetBtnCardColor(card, 0) + end + end + end + self.send_card = send_card1 +end + +function M:TouchMoveEnd(context) + local send_card = {} + local currentCard = {} + local xuan_card = {} + + local fristCard = self._view_handCard:GetChildAt(0) + local CardWidth = fristCard.width + local columnGap = self._view_handCard.columnGap + local oneCardWidth = CardWidth + columnGap + local xy = fristCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + local downCards = #self.card_list + Stage.inst.onTouchMove:Remove(self.touchMoveFun) + Stage.inst.onTouchEnd:Remove(self.touchMoveEndFun) + + local max_x + local min_x + if xy.x - self.touchBegin.x > 0 then + max_x = xy.x + min_x = self.touchBegin.x + else + max_x = self.touchBegin.x + min_x = xy.x + end + + for k = 1, #self.card_list do + local card = self.card_list[k] + table.insert(currentCard, card.card_code_flower) + if not card.btn_card.selected then + downCards = downCards - 1 + end + if card.btn_card.touchable == false or card.card_isTouchable == 1 then + else + self:SetBtnCardColor(card, 0) + if + (card.btn_card.x + oneCardWidth > min_x or (k == #self.card_list and card.btn_card.x + CardWidth > min_x)) + and card.btn_card.x < max_x + then + self:UpdateCardMove(card.btn_card, not card.btn_card.selected, false) + if card.btn_card.selected then + send_card[#send_card + 1] = card + end + --ViewUtil.PlaySound("RunFastNew_PK", "extend/poker/paodekuai/sound/click.mp3") + else + if card.btn_card.selected then + send_card[#send_card + 1] = card + end + end + end + end + + ViewUtil.PlaySound('RunFastNew_PK', 'extend/poker/runfast/sound/click.mp3') + + Stage.inst:ResetInputState() + + if downCards == 0 then + xuan_card = self:zhizhanxuanpai() + end + + if #send_card > 0 then + table.sort(send_card, tableSortNumber) + self._cardCheck:initCards(#xuan_card > 0 and xuan_card or send_card, #xuan_card > 0) + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 + else + self._ctr_canSendCard.selectedIndex = 0 + end +end + +-- function M:SetBtnCardColor(card, num) +-- 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:SetBtnCardColor(card, num) + card.btn_card:GetController('choose').selectedIndex = num +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 + 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, isAnim) +-- 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, 0) +-- 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) + local pos_y = -320 + 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 + 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 + list_remove(self.card_list, card) + -- todo 出牌动画 + local pos = + self:GetOutCardEndPokerPos( + i, + #cardlist, + self.cards_view, + card.btn_card, + self.out_card_data['maxcount_x'], + 1.5 + ) + 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(1.5, 1.5) + break + end + end + end + 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('RunFastNew_PK', 'extend/poker/runfast/sound/chupai.mp3') + end + ) + else + for i = 1, #cardlist do + local poker_item = UIPackage.CreateObject('Extend_Poker_RunFastNew', 'poker7') + local code = self:ChangeCodeByTo(cardlist[i]) + -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. code) + local card_code_obj + -- if DataManager.CurrenRoom.pai==0 then + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code) + -- else + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + -- end + -- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- -- body + -- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/" .. code .. "_1") + -- end + if DataManager.CurrenRoom.pai == 0 then + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_RunFastNew/' .. code .. '_1') + else + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_RunFastNew/' .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_RunFastNew/' .. 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 + card_code_obj:SetScale(1.5, 1.5) + 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.5 + ) + poker_item.xy = Vector2.New(pos.x, pos_y) + self.out_card_list[#self.out_card_list + 1] = poker_item + end + end +end + +-- function M:DeleteHandCards(cardlist) +-- 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 +-- --self.out_card_list[#self.out_card_list + 1] = card +-- list_remove(self.card_list, card) +-- -- todo 出牌动画 +-- self.cards_view:RemoveChild(card.btn_card, true) +-- break +-- end +-- end +-- end +-- self:UpdateHandCardsPos() +-- end +function M:DeleteHandCards(cardlist) + self.ctr_put_card_option.selectedIndex = 0 + 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 + list_remove(self.card_list, card) + self._view_handCard:RemoveChild(card.btn_card, true) + break + end + end + end + self:UpdateHandCardsPos() +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:UpdateCardMove(card_view.btn_card, false, false) + self:SetBtnCardColor(card_view, 0) + end +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) + end + self.send_card = {} + self.Reset = false +end + +function M:UpdateCardMove(btn_card, isSelected, isPlay) + btn_card.selected = isSelected + -- local card_Move = btn_card + -- local xy = isSelected == true and Vector2.New(0, -65) 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 0 or 1 + 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_Tip') -- 覆盖 + self.btn_sendCards = self._view:GetChild('Btn_SendCard') + self._ctr_canSendCard = self.btn_sendCards:GetController('can') + + self.btn_sendCards.onClick:Set( + function() + if self.Reset then + return + end + if self._ctr_canSendCard.selectedIndex == 0 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 + 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) + self._ctr_canSendCard.selectedIndex = 1 + 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) + isExsit = true + end + end + if isExsit == false then + self:UpdateCardMove(card.btn_card, false, false) + end + end +end + +function M:GetHandCardOffset(count) + local start = -90 ---54 + + local offset = 0 + if count > 10 then + offset = start - count + 26 + else + offset = -30 + end + return 20 +end + +function M:GetHandCardPos(index, card_count) + local x, y = 0, -20 + 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 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: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:ErrorTip(error_text) + if self.cor_init_poker ~= nil then + coroutine.stop(self.cor_init_poker) + 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 + +--ExCardType +--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 == ExCardType.None then + if DataManager.CurrenRoom.is_new_bout then + tip_list = self:NewBoutTips(card_map) + end + return tip_list, touch_key_list + elseif type == ExCardType.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 == ExCardType.OneCard then + -- if mustPutMaxCard then + -- number = max_key - 1 + -- self:ErrorTip("下家报单,请出最大的牌 ") + -- end + list_type, touch_type = self:CheckOneCard(card_map, number, length) + elseif type == ExCardType.OnePair then + list_type, touch_type = self:CheckOnePair(card_map, number, length) + elseif type == ExCardType.Three then + list_type, touch_type = self:CheckThree(card_map, number, length) + elseif type == ExCardType.Pairs then + list_type, touch_type = self:CheckPairs(card_map, number, length) + elseif type == ExCardType.ThreeAndTwo then + list_type, touch_type = self:CheckThreeAndTwo(card_map, number, length) + elseif type == ExCardType.ThreeAndOne then + list_type, touch_type = self:CheckThreeAndOne(card_map, number, length) + elseif type == ExCardType.Plane then + list_type, touch_type = self:CheckPlane(card_map, number, length, 0) + elseif type == ExCardType.PlaneAndTwo then + list_type, touch_type = self:CheckPlane(card_map, number, length, 2) + elseif type == ExCardType.PlaneAndOne then + list_type, touch_type = self:CheckPlane(card_map, number, length, 1) + elseif type == ExCardType.Straight then + list_type, touch_type = self:CheckStraight(card_map, number, length) + elseif type == ExCardType.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 == 4 and k > num then + 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:CheckOnes(pokerMap) + local one_card_list = {} + local old_k = 0 + for k, v in pairs(pokerMap) do + if #one_card_list == 0 then + table.insert(one_card_list, v) + old_k = k + else + if k == 15 then + break + end + if k ~= old_k + 1 and #one_card_list >= 5 then + break + end + if k ~= old_k + 1 then + one_card_list = {} + end + table.insert(one_card_list, v) + old_k = k + end + end + if #one_card_list < 5 then + one_card_list = {} + end + return one_card_list +end + +function M:Clear() + self:PlayScore(nil) + self:SetOutCardInfo(nil, false) + self.card_list = {} + self.out_card_list = {} + self._view_handCard:RemoveChildren(0, -1, true) + -- self.mask_liangpai:RemoveChildren(0,-1,true) +end + +function M:ClearCheck() + self.card_list = {} + self.out_card_list = {} + self._view_handCard:RemoveChildren(0, -1, true) +end + +function M:Destroy() + Stage.inst.onTouchMove:Remove(self.touchMoveFun) + Stage.inst.onTouchEnd:Remove(self.touchMoveEndFun) +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExProtocol.lua b/lua_probject/extend_project/extend/poker2/suoha/ExProtocol.lua new file mode 100644 index 00000000..b3b87f52 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExProtocol.lua @@ -0,0 +1,9 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:51 +--- +local ExProtocol = { + +} + +return ExProtocol diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExResultView.lua b/lua_probject/extend_project/extend/poker2/suoha/ExResultView.lua new file mode 100644 index 00000000..4b90ed31 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExResultView.lua @@ -0,0 +1,113 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/19 11:05 +--- +require("Game.View.ResultView") + +local ExResultView = {} + +local M = ExResultView + +function ExResultView.new(blur_view, data, roomid, over, win_seat, dissolve, remaincards) + setmetatable(M, { __index = ResultView }) + local self = setmetatable({}, { __index = M }) + + self.class = "ExResultView" + self._currenIndex = 0 + self._close_zone = false + --self._blur_view = blur_view + self._gamectr = ControllerManager.GetController(GameController) + self:init("ui://Extend_Poker_RunFastNew/clearing_new", data, roomid, over, win_seat, dissolve, remaincards) + print("=======================lingmengresult", data, roomid, over, win_seat, dissolve, remaincards) + return self +end + +function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) + ResultView.init(self, url, true) + + local room = DataManager.CurrenRoom + self._view:GetController('over').selectedIndex = 0 + + --按钮功能全部未开放 + self._view:GetChild('btn_shareRecord').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + self._view:GetChild('btn_copyRecord').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + ------------------ + + --只有一人直接退,有两人才进正常结算 + if not over and #data == 1 then + ViewManager.ChangeView(ViewManager.View_Family) + end + + if over == 0 then + self._view:GetChild('btn_nextRound').onClick:Set(function() + self:Destroy() + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:ConformToNextGame() + end) + end + + + self._view:GetChild('btn_closeRound').onClick:Set(function() + ViewManager.ChangeView(ViewManager.View_Family) + end) + + self._view:GetController('win').selectedIndex = win_seat == room.self_player.seat and 1 or 0 + + local over0List = self._view:GetChild('list_over0') + over0List:SetVirtual() + over0List.itemRenderer = function(index, obj) + local info = data[index + 1] + local playerInfo = room:GetPlayerBySeat(info.seat) + obj:GetChild('name').text = playerInfo.self_user.nick_name + obj:GetChild('residue').text = #info.handCards + obj:GetChild('bomb').text = info.thisboomnum + obj:GetChild('score').text = info.winscore > 0 and string.format("+%d", info.winscore) or info.winscore + end + over0List.numItems = #data + + if over == 1 or (not over and #data == 2) then + self._view:GetChild('text_roomID').text = room.room_id + self._view:GetChild('text_time').text = os.date('%m-%d %H:%M', os.time()) + self._view:GetChild('text_groupID').text = room.group_id or 0 + for i = 1, #data do + local info = data[i] + local playerInfo = room:GetPlayerBySeat(info.seat) + self:FillPlayerInfoEnd(self._view:GetChild(string.format("comp_playerInfo%d_over1", i)), info, playerInfo) + end + coroutine.start(function() + coroutine.wait(2) + self._view:GetController('over').selectedIndex = 1 + end) + end +end + +function M:FillPlayerInfoEnd(view, info, playerInfo) + local room = DataManager.CurrenRoom + + self:FillPlayerHead(view:GetChild('comp_playerInfo'), playerInfo) + + local detailList = view:GetChild('list_detail') + + self:FillDetailChild(detailList:AddItemFromPool(), "单局最高得分", info.settle_log.maxscore) + self:FillDetailChild(detailList:AddItemFromPool(), "打出炸弹数", info.settle_log.boomnum) + self:FillDetailChild(detailList:AddItemFromPool(), "胜负局数", + string.format("%d赢%d输", info.settle_log.winnum, room.room_config.Times - info.settle_log.winnum)) + self:FillDetailChild(detailList:AddItemFromPool(), "总积分", info.total_score) +end + +function M:FillPlayerHead(view, playerInfo) + ImageLoad.Load(playerInfo.self_user.head_url, view:GetChild('btn_head')._iconObject) + view:GetChild('text_name').text = playerInfo.self_user.nick_name + view:GetChild('text|_ID').text = playerInfo.self_user.account_id +end + +function M:FillDetailChild(view, title, value) + view:GetChild('text_title').text = title + view:GetChild('text_value').text = value +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/ExtendConfig.lua b/lua_probject/extend_project/extend/poker2/suoha/ExtendConfig.lua new file mode 100644 index 00000000..39a0a460 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/ExtendConfig.lua @@ -0,0 +1,258 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:57 +--- + +local EXTEND_MODEL_NAME = ... +local EXGameInfo = import(".EXGameInfo_jiangxi") +local ExMainView = import(".ExMainView") +local ExGameController = import(".ExGameController") +local ExRoomConfig = import(".ExRoomConfig") +local ExPlayer = import(".ExPlayer") +local ExRoom = import(".ExRoom") +local ExPlayerBackView = import(".ExPlayerBackView") + +local ExtendConfig = {} + +local M = ExtendConfig + + +function ExtendConfig.new() + setmetatable(M, { __index = IExtendConfig }) + local self = setmetatable({}, { __index = M }) + self.class = "ExtendConfig" + self.extend_id = 14 + self._viewMap = {} + self._viewMap[ViewManager.View_Main] = ExMainView + self._viewMap[ViewManager.View_PlayBack] = ExPlayerBackView + return self +end + +--卸载资源 +function M:UnAllAssets() + UIPackage.RemovePackage("extend/poker/runfast/ui/Info_Poker_RunFastNew") + self:UnAssets() +end + +function M:UnAssets() + UIPackage.RemovePackage("extend/poker/runfast/ui/Extend_Poker_RunFastNew") + ResourcesManager.UnLoadGroup("RunFase_PK") +end + +local _gameInfo = nil +function M:GetGameInfo() + if not _gameInfo then + _gameInfo = EXGameInfo.new() + end + return _gameInfo +end + +local _ctr_game = nil +function M:GetGameController() + if _ctr_game == nil then + _ctr_game = ExGameController.new() + end + return _ctr_game +end + +function M:NewRoom() + return ExRoom.new() +end + +function M:GetIconUrl() + return "ui://Extend_Poker_RunFastNew/icon" + -- +end + +function M:FillRoomConfig(room, _config) + room.room_config = ExRoomConfig.new(_config) +end + +function M:FillRoomData(s2croom) + local room = DataManager.CurrenRoom + if _ctr_game == nil then + self:GetGameController() + end + + local reload = s2croom["reload"] + + local _tableInfo = s2croom["tableInfo"] + + room.xipaiScore = _tableInfo["xipai_score"] + + local _config = _tableInfo["config"] + room.room_config = ExRoomConfig.new(_config) + + room.curren_round = _tableInfo["round"] + if room.curren_round == 0 and reload then + room.curren_round = 1 + end + + local playerList = _tableInfo["playerData"] + for i = 1, #playerList do + local _jp = playerList[i] + + local p = ExPlayer.new() + p.seat = _jp["seat"] + local online = _jp["online"] + p.line_state = online + p.ready = _jp["ready"] == 1 and true or false + local pid = _jp["aid"] + if (DataManager.SelfUser.account_id == pid) then + room.self_player = p + p.self_user = DataManager.SelfUser + else + local u = User.new() + u.account_id = pid + p.self_user = u + u.nick_name = _jp["nick"] + u.head_url = _jp["portrait"] + u.sex = _jp["sex"] + end + p.self_user.location = Location.new(_jp["pos"] or "") + p.self_user.host_ip = _jp["ip"] + p.total_score = _jp["score"] or 0 + if _jp.hp_info then + p.cur_hp = _jp.hp_info.cur_hp + end + p.hp_info = _jp["hp_info"] + + if _jp["entrust"] then + p.entrust = _jp.entrust + end + room:AddPlayer(p) + end + + + + local owner = s2croom["owner"] + room.owner_id = owner + room.game_status = 0 + if reload then + local reloadInfo = s2croom["reloadInfo"] + + + + local playing = reloadInfo["playing"] + + room.curren_turn_seat = reloadInfo["active_seat"] + local info_list = reloadInfo["info_list"] + if playing == true then + room.CurnrenState = StateType.Palying + room.game_status = 1 + + + for i = 1, #info_list do + local p = room:GetPlayerById(info_list[i]["playerid"]) + + if p == room.self_player then + p.hand_list = reloadInfo["hand_card"] + p.open = reloadInfo["open"] + end + + p.hand_count = info_list[i]["card_size"] + p.piao = info_list[i]["piao"] + p.handCards = info_list[i]["handCards"] + p.outCards = info_list[i]["outCards"] + local last_outcard = info_list[i]["last_outcard"] + if last_outcard ~= nil and last_outcard[1] ~= 0 then + local out_card_list = _ctr_game:ChangeCodeByFrom(last_outcard.card_list, true) + local card_type, number, length, plan_three_count = _ctr_game:GetCardListInfo(out_card_list) + p.out_card_list = _ctr_game:GetSortOutCardList(out_card_list, card_type, number, plan_three_count) + else + p.out_card_list = { 0 } + end + end + else + -- -- print("aaaaaaaaaaaaaaaa1111111111111111111111111") + --pt(s2croom) + room.game_status = 1 + + room.CurnrenState = StateType.PalyingWait + + room.winseat = reloadInfo["winseat"] + room.remaincards = reloadInfo["remaincards"] + + for i = 1, #info_list do + local playerData = info_list[i] + local p = room:GetPlayerById(playerData["playerid"]) + + p.ready = playerData["certainseat"] == 1 and true or false + + local last_outcard = info_list[i]["last_outcard"] + if last_outcard ~= nil and last_outcard[1] ~= 0 then + local out_card_list = _ctr_game:ChangeCodeByFrom(last_outcard.card_list, true) + local card_type, number, length, plan_three_count = _ctr_game:GetCardListInfo(out_card_list) + p.out_card_list = _ctr_game:GetSortOutCardList(out_card_list, card_type, number, plan_three_count) + else + p.out_card_list = { 0 } + end + + p.hand_list = info_list[i]["cards"] + p.winscore = info_list[i]["winscore"] + p.piao = info_list[i]["piao"] + p.hand_count = info_list[i]["card_size"] + p.thisboomnum = info_list[i]["thisboomnum"] + p.open = info_list[i]["open"] + + p.handCards = info_list[i]["handCards"] + p.outCards = info_list[i]["outCards"] + end + end + else + room.CurnrenState = StateType.Ready + end +end + +function M:FillPlayBackData(pd_data) + local room = DataManager.CurrenRoom + local _tableInfo = pd_data["info"] + + local _config = _tableInfo["config"] + room.room_id = _tableInfo.room_id + room.room_config = ExRoomConfig.new(_config) + room.owner_id = _config["ownerid"] + local active_seat = _tableInfo["active_seat"] + local bank_seat = _tableInfo["banker_seat"] + room.banker_seat = bank_seat + room.curren_turn_seat = active_seat + room.curren_round = _tableInfo["round"] + local _info_list = _tableInfo["playerData"] + for i = 1, #_info_list do + local _jp = _info_list[i] + local p = ExPlayer.new() + p.seat = _jp["seat"] + p.aid = _jp["aid"] + local pid = _jp["aid"] + if p.aid == DataManager.SelfUser.account_id then + room.self_player = p + end + local u = User.new() + u.account_id = pid + p.self_user = u + u.nick_name = _jp["nick"] + u.head_url = _jp["portrait"] + u.sex = _jp["sex"] + -- end + p.self_user.host_ip = p.self_user.host_ip + local _hand_card = _jp["hand_card"] + p.hand_list = _hand_card + p.hand_count = #_hand_card + p.total_score = _jp["score"] + p.piao = _jp["piao"] + p.open = _jp["open"] + p.hp_info = _jp["hp_info"] + if _jp['hp_info'] then + p.cur_hp = _jp.hp_info.cur_hp + p.total_hp = _jp.hp_info.total_hp + end + room:AddPlayer(p) + end + room.cmdList = pd_data["cmdList"] +end + +function M:LoadConfigToDetail(data) + return data +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/Player.lua b/lua_probject/extend_project/extend/poker2/suoha/Player.lua new file mode 100644 index 00000000..0d1eeadd --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/Player.lua @@ -0,0 +1,35 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:42 +--- +local ExPlayer = { + -- 手牌列表 + hand_count = 0, + out_card_list = {}, + hand_list = {}, + isOneCard = false, -- 报单 +} + +local M = ExPlayer + +--- Create a new EXPlayer +function M.new() + setmetatable(M, { __index = Player }) + local self = setmetatable({}, { __index = M }) + self.hand_count = 0 + self.out_card_list = {} + self.hand_list = {} + self.isOneCard = false + return self +end + +-- 清理玩家数据 +function M:Clear() + Player.Clear(self) + self.hand_count = 0 + self.out_card_list = {} + self.hand_list = {} + self.isOneCard = false +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/RightPanelView.lua b/lua_probject/extend_project/extend/poker2/suoha/RightPanelView.lua new file mode 100644 index 00000000..f12c582a --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/RightPanelView.lua @@ -0,0 +1,94 @@ +local MainRightPanelView = require("Game.View.MainRightPanelView") +local ExRightPanelView = {} +local M = ExRightPanelView +local function __init(self, mainView, view) + local right_panel = view + + local btn_setting = mainView._view:GetChild("Btn_Setting") + btn_setting.onClick:Set(function() + print("lingmengmainview", mainView.dismiss_room_cd_time) + local _settingView = mainView:NewSettingView() + _settingView:Show() + end) + -- btn_setting.onClick:Set(function() + -- local _settingView = mainView:NewSettingView() + -- _settingView.stateIndex = (mainView._room.curren_round >= 1 and mainView._allow_dissmiss) and 2 or 1 + -- _settingView.cd_time = mainView.dismiss_room_cd_time + -- _settingView:Show() + + -- local room = DataManager.CurrenRoom + -- _settingView.onCallback:Add(function(context) + -- local _gamectr = ControllerManager.GetController(GameController) + -- if (room.CurnrenState == StateType.Ready) then + -- _gamectr:LevelRoom(function(response) + -- if (response.ReturnCode == 0) then + -- ViewManager.ChangeView(ViewManager.View_Lobby) + -- GameApplication.Instance:ShowTips("房间已解散!") + -- end + -- end) + -- else + -- -- print("mainView.dismiss_room_cd_time"..mainView.dismiss_room_cd_time) + -- if mainView.dismiss_room_cd_time > 0 then + -- GameApplication.Instance:ShowTips("您还处于解散冷却时间当中,请稍后重试!") + -- else + -- _gamectr:AskDismissRoom() + -- end + -- end + -- end) + -- end) + + -- self._tex_data = right_panel:GetChild("tex_data") + self._tex_time = mainView._view:GetChild("Text_Time") + self._pb_batteryLevel = mainView._view:GetChild("PB_Battery") + -- self._xinhao = right_panel:GetController("xinhao") + -- self.ctr_xh = right_panel:GetChild("gcm_xinhao"):GetController("c1") + -- self.ctr_wifi = right_panel:GetChild("gcm_wifi"):GetController("c1") + -- self._tex_ping = right_panel:GetChild("gcm_xinhao"):GetChild("n7") + + -- self.ctr_log = right_panel:GetController("log") + -- local btn_log = right_panel:GetChild("btn_log") + -- btn_log.onClick:Set(function() + -- if self.onLogCallback then + -- self.onLogCallback() + -- end + -- end) + + self._total_time = 0 + self:__UpdateTime() + + -- self._timer = Timer.New(handler(self,self.__UpdateTime),10,-1,true) + -- self._timer:Start() +end +function ExRightPanelView.new(mainView, view) + setmetatable(M, { __index = MainRightPanelView }) + local self = setmetatable({}, { __index = M }) + self.class = "ExRightPanelView" + __init(self, mainView, view) + return self +end + +function M:__UpdateTime() + -- self._tex_data.text = os.date("%Y-%m-%d") + self._tex_time.text = os.date("%H:%M") + if Application.platform == RuntimePlatform.IPhonePlayer or Application.platform == RuntimePlatform.Android then + self._pb_batteryLevel.value = GameApplication.Instance:GetBatteryLevel() + end + + -- local NetworkReachability = UnityEngine.NetworkReachability + -- local _client = ControllerManager.GameNetClinet + -- if not _client then return end + -- local ping = _client:getAveragePingTime() + -- if not ping then return end + -- ping = math.floor(ping / 2) + -- if ping > 300 then ping = 300 end + -- if ping <= 100 then + -- self.ctr_xh.selectedIndex = 0 + -- elseif ping <= 300 then + -- self.ctr_xh.selectedIndex = 1 + -- else + -- self.ctr_xh.selectedIndex = 2 + -- end + -- self._tex_ping.text = ping .. "ms" +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/Room.lua b/lua_probject/extend_project/extend/poker2/suoha/Room.lua new file mode 100644 index 00000000..3826d090 --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/Room.lua @@ -0,0 +1,24 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/19 14:36 +--- +local ExPlayer = import(".ExPlayer") + +local ExRoom = { +} + +local M = ExRoom + +--- Create a new EXPlayer +function M.new() + setmetatable(M, { __index = Room }) + local self = setmetatable({}, { __index = M }) + self:init() + return self +end + +function M:NewPlayer() + return ExPlayer.new() +end + +return M diff --git a/lua_probject/extend_project/extend/poker2/suoha/RoomConfig.lua b/lua_probject/extend_project/extend/poker2/suoha/RoomConfig.lua new file mode 100644 index 00000000..5d25ddcc --- /dev/null +++ b/lua_probject/extend_project/extend/poker2/suoha/RoomConfig.lua @@ -0,0 +1,490 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/19 10:54 +--- +local M = {} + + +--- Create a new RoomConfig +function M.new(config) + setmetatable(M, { __index = RoomConfig }) + local self = setmetatable({}, { __index = M }) + RoomConfig.init(self, config) + self.class = "ExRoomConfig" + self.config = config + self.Leaf = config.leaf + self.Rule = config.rule + self.Times = config.times + self.WillBeOut = config.willBeOut + self.Heart10 = config.heartten + self.BombSpring = config.minboom + self.AA = config.aa + self.PlayerNum = config.maxPlayers + self.showlength = config.showlength + self.fourBeltThree = config.fourBeltThree + self.demolition = config.demolition + self.fangzuobi = config.fangzuobi + self.planelack = config.planelack + self.threelack = config.threelack + self.threeA = config.threeA + self.tuoguan_active_time = config.tuoguan_active_time + self.tuoguan = config.tuoguan + self.tuoguan_result_type = config.tuoguan_result_type + self.isNonnegative = config.isNonnegative + self.sandaidan = config.sandaidan + self.isHidden = config.isHidden + self.ba = config.ba + self.fs = config.fs + + if config.piao ~= nil then + self.piao = config.piao + else + self.piao = 0 + end + + if config.daniao ~= nil then + self.daniao = config.daniao + else + self.daniao = 0 + end + + if self.isNonnegative == nil then + self.isNonnegative = 0 + end + self.energyTab = config.energyTab + + if self.energyTab == nil then + self.energyTab = 0 + end + + return self +end + +--[[function M:GetDes(sp) + sp = sp or " " + local str = "" + -- str = str.. self.Times.."局"..sp + str = str .. RoomConfig.GetDes(self, sp).." " + local count=1 + if self.Leaf == 1 then + str = str.. "15张玩法" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=2 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + else + str = str.. "16张玩法" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=2 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.Rule == 1 then + str = str.. "第一局黑桃3先出,随后赢家先出".."\n" + else + str = str.. "第一局系统随机选一张先出,随后赢家先出".."\n" + end + count=0 + + if self.WillBeOut == 1 then + str = str.. "能出必出" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=2 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + else + str = str.. "可不必出" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=2 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.showlength == 1 then + str = str.. "显示剩余牌" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=1 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.fourBeltThree == 3 then + str = str.. "四带三" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + elseif self.fourBeltThree == 2 then + str = str.. "四带二" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.Heart10 == 1 then + str = str.. "红桃10分数翻倍" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=0 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.BombSpring == 1 then + str = str.. "\n4个3 或者3个A 1个2 春天\n" + end + if self.demolition == 1 then + str = str.. "炸弹不能拆" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=1 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.fangzuobi == 1 and self.PlayerNum==3 then + str = str.. "防作弊" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.sandaidan == 1 then + str = str.. "\n三张飞机带单或者对子\n" + end + + if self.ba == 1 then + str = str.. "炸弹分数算赢家" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=0 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.fs == 1 then + str = str.. "反春天" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + + if self.planelack == 1 then + str = str.. "飞机少带可接完" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=0 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.threelack == 1 then + str = str.. "三张少带可接完" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=0 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + if self.threeA ==1 then + str = str.. "三张A算炸弹" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=0 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.piao == 0 then + + elseif self.piao == 1 then + str = str.. "飘123" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + elseif self.piao == 2 then + str = str.. "飘235" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + elseif self.piao == 3 then + str = str.. "飘258" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + if self.daniao == 1 then + str = str.. "打鸟+10" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + elseif self.daniao == 2 then + str = str.. "打鸟+20" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + elseif self.daniao == 3 then + str = str.. "打鸟+50" + count=count+1 + if count%2==0 then + str = str .."\n" + else + sp1="" + local strL=3 + for i=1,strL do + sp1=sp1.." " + end + str = str .. sp1..sp + end + end + + return str +end--]] + + +function M:GetDes(sp) + sp = sp or " " + local str = "" + -- str = str.. self.Times.."局"..sp + str = str .. RoomConfig.GetDes(self, sp) + if self.Leaf == 1 then + str = str .. "15张玩法" .. sp + else + str = str .. "16张玩法" .. sp + end + + if self.Rule == 1 then + str = str .. "第一局黑桃3先出,随后赢家先出" .. sp + else + str = str .. "第一局系统随机选一张先出,随后赢家先出" .. sp + end + + if self.WillBeOut == 1 then + str = str .. "能出必出" .. sp + else + str = str .. "可不必出" .. sp + end + if self.showlength == 1 then + str = str .. "显示剩余牌" .. sp + end + if self.fourBeltThree == 3 then + str = str .. "四带三" .. sp + elseif self.fourBeltThree == 2 then + str = str .. "四带二" .. sp + end + if self.Heart10 == 1 then + str = str .. "红桃10分数翻倍" .. sp + end + + if self.BombSpring == 1 then + str = str .. "4个3 或者3个A 1个2 春天" .. sp + end + if self.demolition == 1 then + str = str .. "炸弹不能拆" .. sp + end + if self.fangzuobi == 1 and self.PlayerNum == 3 then + str = str .. "防作弊" .. sp + end + + if self.sandaidan == 1 then + str = str .. "三张飞机带单或者对子" .. sp + end + + if self.ba == 1 then + str = str .. "炸弹分数算赢家" .. sp + end + + if self.fs == 1 then + str = str .. "反春天" .. sp + end + + + if self.planelack == 1 then + str = str .. "飞机少带可接完" .. sp + end + if self.threelack == 1 then + str = str .. "三张少带可接完" .. sp + end + if self.threeA == 1 then + str = str .. "三张A算炸弹" .. sp + end + + if self.piao == 0 then + + elseif self.piao == 1 then + str = str .. "飘123" .. sp + elseif self.piao == 2 then + str = str .. "飘235" .. sp + elseif self.piao == 3 then + str = str .. "飘258" .. sp + end + + if self.daniao == 1 then + str = str .. "打鸟+10" .. sp + elseif self.daniao == 2 then + str = str .. "打鸟+20" .. sp + elseif self.daniao == 3 then + str = str .. "打鸟+50" .. sp + end + + return str +end + +function M:GetGameJS() + local gamerulepanel = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/gamerule") + return gamerulepanel +end + +function M:GetGameSMSize() + return 467, 500 +end + +function M:GetGameName() + return "跑得快" +end + +--function M:GetIsShowCardNumber() +-- return self.ShowNumber == 1 +--end + +return M diff --git a/lua_probject/main_project/main/majiang/MJPlayerSelfCardInfoView_jiangxi.lua b/lua_probject/main_project/main/majiang/MJPlayerSelfCardInfoView_jiangxi.lua index 18909e44..c96d1362 100644 --- a/lua_probject/main_project/main/majiang/MJPlayerSelfCardInfoView_jiangxi.lua +++ b/lua_probject/main_project/main/majiang/MJPlayerSelfCardInfoView_jiangxi.lua @@ -94,7 +94,7 @@ function M:UpdateHandCard(getcard, mp) else btn_card = self._view_handCardList:AddItemFromPool() end - self:FillHandCard(i, btn_card, tem_card) + self:FillHandCard(i, btn_card, tem_card, true) -- btn_card.onClick:Set(handler(self, self.__OnClickHandCard)) end @@ -104,134 +104,155 @@ function M:UpdateHandCard(getcard, mp) self._ctr_getCard.selectedIndex = 0 end self._view_handCardList.onClickItem:Set(function(context) - print("lingemng_view_handCardList") self:__OnClickHandCard(context) end) - self._ctr_seletedGet.selectedIndex = 1 - self._view_handCardList.selectedIndex = -1 - self._click_index = self._view_handCardList.selectedIndex + + self:ClearMove() end -function M:FillHandCard(i, btn_card, tem_card) +function M:FillHandCard(i, btn_card, tem_card, event) local handCardName = self._viewText_cardInfo['Hand_Card'] self:fillCard2(btn_card, handCardName, tem_card) local c_v = NewCardView(btn_card, tem_card) c_v.index = i c_v.old_postion = btn_card.xy + c_v.touch_pos = Vector2.New(btn_card.width / 2, btn_card.height / 2) btn_card.data = c_v - btn_card.onTouchBegin:Set(handler(self, self.onTouchBegin)) - btn_card.onTouchMove:Set(handler(self, self.onTouchMove)) - btn_card.onTouchEnd:Set(handler(self, self.__OnDragEnd)) + if event then + btn_card.onTouchBegin:Set(handler(self, self.onTouchBegin)) + btn_card.onTouchMove:Set(handler(self, self.onTouchMove)) + btn_card.onTouchEnd:Set(handler(self, self.__OnDragEnd)) + end end function M:onTouchBegin(context) - -- self.touch = true + self.touch = true local button = context.sender - self._touchPos = button.xy - local card = button.data - self._touchIndex = card.index - - card.touch_pos = Vector2.New(button.width / 2, button.height / 2) - - local xy_event = Vector2.New(context.inputEvent.x, context.inputEvent.y) - local xy_btnCard = self._view_getCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - if self.__OnDragStart then - self:__OnDragStart(button, xy_event, xy_btnCard.x >= 0) - end + self.touchPos = Vector2.New(context.inputEvent.x, context.inputEvent.y) + self:ClearMove() end function M:onTouchMove(context) local button = context.sender + local xy = self._view_handCardList:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + self.touchStart = true + if xy.y <= -35 or self.isMoive then + self.isMoive = true + if self.touch then + if self.ischoose then + if self._ctr_seletedGet.selectedIndex == 0 then + button = self._view_getCard:GetChildAt(0) + else + button = self._view_handCardList:GetChildAt(self._view_handCardList.selectedIndex) + end + end + local xy_event = Vector2.New(context.inputEvent.x, context.inputEvent.y) + local xy_btnCard = self._view_getCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + if self.__OnDragStart then + self:__OnDragStart(button, xy_event) + end + self.touch = false + end + self:outCardMove(context) + else + self.ischoose = true + local touchPos = self._view_handCardList:GetChildAt(0):GlobalToLocal(Vector2.New(context.inputEvent.x, + context.inputEvent.y)) + local cardWidth = button.width; + local grap = self._view_handCardList.columnGap + local chooseIndex = math.floor(touchPos.x / (cardWidth + grap)) - -- if self.touch then - -- local xy_event = Vector2.New(context.inputEvent.x, context.inputEvent.y) - -- local xy_btnCard = self._view_getCard:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - -- if self.__OnDragStart then - -- self:__OnDragStart(button, xy_event, xy_btnCard.x >= 0) - -- end - -- self.touch = false - -- end + if chooseIndex >= self._view_handCardList.numItems then + if touchPos.x > cardWidth + (cardWidth + grap) * (self._view_handCardList.numItems - 1) and self.getcard then + self:ChooseOut() + else + if self._view_handCardList.selectedIndex ~= self._view_handCardList.numItems - 1 then + self:ChooseHand(self._view_handCardList.numItems - 1) + end + end + else + if self._view_handCardList.selectedIndex ~= chooseIndex then + self:ChooseHand(chooseIndex) + end + end + end - local card = button.data - local xy = GRoot.inst:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - button.xy = xy - card.touch_pos + -- local card = button.data + -- local xy = GRoot.inst:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + -- button.xy = xy - card.touch_pos end function M:__OnDragStart(button, xy_event, isGet) - -- self.touchStart = true - local card = button.data + button:GetController('move').selectedIndex = 1 + local card = button.data --复制一个按钮 - if isGet then - local btn_card = self._view_getCard:AddItemFromPool() - - self:FillHandCard(card.index, btn_card, card.card_item) - btn_card:GetController('move').selectedIndex = 1 - self._ctr_seletedGet.selectedIndex = 0 - self._view_handCardList.selectedIndex = -1 - else - local btn_card = self._view_handCardList:GetFromPool("") - - self:FillHandCard(card.index, btn_card, card.card_item) - btn_card:GetController('move').selectedIndex = 1 - self._view_handCardList:AddChildAt(btn_card, card.index) - self._view_handCardList.selectedIndex = card.index - self._ctr_seletedGet.selectedIndex = 1 - end + local btn_card = self._view_getCard:GetFromPool(nil) + self._outCardMove = btn_card + self:FillHandCard(card.index, btn_card, card.card_item, false) local xy = GRoot.inst:GlobalToLocal(xy_event) --将虚影按钮替换移动的按钮 -- GRoot.inst:BringToFront(button) - GRoot.inst:AddChild(button) - button.xy = xy - card.touch_pos + GRoot.inst:AddChild(btn_card) + self._outCardMove.data = card + self._outCardMove.xy = xy - card.touch_pos + --设置弹起 + -- if isGet then + -- self._view_handCardList.selectedIndex = -1 + -- self._ctr_seletedGet.selectedIndex = 0 + -- else + -- self._view_handCardList.selectedIndex = card.index + -- self._ctr_seletedGet.selectedIndex = 1 + -- end end function M:__OnDragEnd(context) - -- if not self.touchStart then - -- return - -- end - -- self.touchStart = false + if not self.touchStart then + return + end local button = context.sender - + if self.ischoose then + if self._ctr_seletedGet.selectedIndex == 0 then + button = self._view_getCard:GetChildAt(0) + else + button = self._view_handCardList:GetChildAt(self._view_handCardList.selectedIndex) + end + end local card = button.data local _room = DataManager.CurrenRoom if not _room or _room:GetReloadStatus() then return end local xy = self._view_handCardList:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) - local buttonHeight = button.height - - local temp_button = self._view_handCardList:GetChildAt(card.index) - - if (xy.y < 0 - buttonHeight and _room.curren_outcard_seat == _room.self_player.seat) then + local cardHeight = button.height + if ((xy.y < -35 or (self.ischoose and self._ctr_seletedGet.selectedIndex == 0) or (context.inputEvent.y - self.touchPos.y < -cardHeight * 0.2)) and _room.curren_outcard_seat == _room.self_player.seat) then self._mainView:OutCard(card.card_item) self.outcard_button = button + self:ClearChoose() else - + button:GetController('move').selectedIndex = 0 end - -- self:UpdateHandCard(self.getcard) - -- if self.getcard then - -- self._ctr_seletedGet.selectedIndex = 0 - -- self._view_handCardList.selectedIndex = -1 - -- self._click_index = self._view_handCardList.selectedIndex - -- else - -- self._ctr_seletedGet.selectedIndex = 1 - -- self._view_handCardList.selectedIndex = card.index - -- self._click_index = self._view_handCardList.selectedIndex - -- end - temp_button:GetController('move').selectedIndex = 0 - button:Dispose() + + if self._outCardMove then + self._outCardMove:Dispose() + end + self.isMoive = false + self.touch = false + self.ischoose = false + self.touchStart = false end function M:outCardMove(context) - + local card = self._outCardMove.data + local xy = GRoot.inst:GlobalToLocal(Vector2.New(context.inputEvent.x, context.inputEvent.y)) + self._outCardMove.xy = xy - card.touch_pos end function M:__OnClickHandCard(context) - print("lingmeng__OnClickHandCard") self._ctr_seletedGet.selectedIndex = 1 self._flag_seletedGet = 0 local button = context.data @@ -240,15 +261,12 @@ function M:__OnClickHandCard(context) if ((Utils.IsDoubleClick(context) or self._click_index == self._view_handCardList.selectedIndex) and _room.curren_outcard_seat == _room.self_player.seat) then local card = button.data self._mainView:OutCard(card.card_item) - self._view_handCardList.selectedIndex = -1 - self._click_index = self._view_handCardList.selectedIndex - self._ctr_seletedGet.selectedIndex = 1 + self:ClearChoose() end self._click_index = self._view_handCardList.selectedIndex end function M:__OnClickGetCard(context, flag) - print("lingmeng__OnClickGetCard") self._view_handCardList.selectedIndex = -1 self._click_index = self._view_handCardList.selectedIndex local button = context.sender @@ -256,48 +274,43 @@ function M:__OnClickGetCard(context, flag) if ((Utils.IsDoubleClick(context) or self._flag_seletedGet == 1) and _room.curren_outcard_seat == _room.self_player.seat) then local card = button.data self._mainView:OutCard(card.card_item) - self._ctr_seletedGet.selectedIndex = 1 - self._flag_seletedGet = 0 + self:ClearChoose() return end self._flag_seletedGet = 1 end --- function M:UpdateFzList(fz, index, show_card) --- -- local FZame = self._viewText_cardInfo['FZ_Card'] --- local FZame = "202_" --- index = index or 0 --- show_card = show_card or nil +function M:ChooseHand(index) + self._click_index = index + self._view_handCardList.selectedIndex = index + self._ctr_seletedGet.selectedIndex = 1 + self._flag_seletedGet = 0 +end --- local outCard +function M:ChooseOut() + self._click_index = -1 + self._view_handCardList.selectedIndex = -1 + self._ctr_seletedGet.selectedIndex = 0 + self._flag_seletedGet = 1 +end --- outCard = self._view_FZList:AddItemFromPool() +function M:ClearChoose() + self._click_index = -1 + self._view_handCardList.selectedIndex = -1 + self._ctr_seletedGet.selectedIndex = 1 + self._flag_seletedGet = 0 +end --- if fz.type == FZType.Chi then --- for i = 1, 3 do --- local FZCard = outCard:GetChild(string.format("Comp_Card%d", i)) --- self:fillCard2(FZCard, FZame, fz.opcard[i]) --- end --- else --- local ctr_Four = outCard:GetController("isFour") --- for i = 1, 3 do --- local FZCard = outCard:GetChild(string.format("Comp_Card%d", i)) --- self:fillCard2(FZCard, FZame, fz.card) --- end --- if fz.type == FZType.Peng then --- ctr_Four.selectedIndex = 0 --- else --- ctr_Four.selectedIndex = 1 --- local FZCard = outCard:GetChild(string.format("Comp_Card%d", 4)) --- self:fillCard2(FZCard, FZame, fz.card) --- if fz.type == FZType.Gang_An then --- self:fillCard2(FZCard, FZame, '00') --- elseif fz.type == FZType.Gang_Peng then --- self._view_FZList:RemoveChildAt(self._view_FZList.numItems - 2) --- end --- end --- end --- end +function M:ClearMove() + self:ClearChoose() + if self._outCardMove then + self._outCardMove:Dispose() + end + self.isMoive = false + self.touch = false + self.ischoose = false + self.touchStart = false +end -- 获取手牌资源位置,可以在扩展中复写 function M:GetCardObjPack() diff --git a/lua_probject/main_project/main/poker2/PKMainView.lua b/lua_probject/main_project/main/poker2/PKMainView.lua new file mode 100644 index 00000000..9bddec8b --- /dev/null +++ b/lua_probject/main_project/main/poker2/PKMainView.lua @@ -0,0 +1,157 @@ +local TableBG = import('Game.Data.TableBG') +local PKSettingView = import('.PKSettingView') +local MainRightPanelView = import('Game.View.MainRightPanelView') + +--- +local M = {} + +setmetatable(M, { __index = MainView }) + +local pk_default_bg = 1 +local pk_bg_config = { + { id = 1, url = 'base/main_poker/bg/bg3', thumb = 'ui://Main_Poker/bg3' }, + { id = 2, url = 'base/main_poker/bg/bg2', thumb = 'ui://Main_Poker/bg2' }, + { id = 3, url = 'base/main_poker/bg/bg1', thumb = 'ui://Main_Poker/bg1' } +} + +-- settingViewType:1跑得快:显示换牌,隐藏返回和解散 2超级拼十:隐藏解散和换牌 3其他:隐藏换牌,根据是否观战显示解散和返回 +-- ex_defaultbg 自定义默认背景编号 +-- ex_bgconfig 自定义的背景 +function M:InitView(url, isHideIpAdds, settingViewType, ex_defaultbg, ex_bgconfig, isHideJiesan, settingUrl) + UIPackage.AddPackage('base/main_poker/ui/Main_Poker') + MainView.InitView(self, url, isHideIpAdds) + + local default_bg = ex_defaultbg or pk_default_bg + local bg_config = ex_bgconfig or pk_bg_config + -- 设置界面初始化方法 + self.NewSettingView = function(self) + -- -- 根据settingViewType和self._state判断界面按钮功能显示 + -- local stype = 0 + -- local room = DataManager.CurrenRoom + -- local ispanguangzhe = room.self_player.seat == 0 + -- if self._state.selectedIndex == 3 then + -- stype = 0 + -- elseif settingViewType < 2 then + -- stype = settingViewType + -- elseif settingViewType == 2 then + -- if (ispanguangzhe or self._state.selectedIndex == 0) then + -- stype = 2 + -- else + -- stype = 3 + -- end + -- elseif settingViewType == 3 then + -- if not ispanguangzhe and self._state.selectedIndex > 0 then + -- stype = 3 + -- else + -- stype = 2 + -- end + -- end--self._root_view + print("lingmengmainview2", self.dismiss_room_cd_time) + local settingView = PKSettingView.new(self, 0, isHideJiesan, settingUrl, + handler(self, self.UpdateCardSize)) + -- 获取MainView界面state控制器选项 + -- settingView.__checkMainViewState = function() + -- return self._state.selectedIndex + -- end + -- -- 设置界面换牌功能回调 + -- if settingViewType == 1 then + -- settingView.__changePokerCallBack = handler(self, self.UpdateCard) + -- settingView.__changePokerSizeCallBack = handler(self, self.UpdateCardSize) + -- end + -- settingView:FillBgSection( + -- function(url) + -- LoadGameBg(url, self._root_view) + -- end, + -- self._room.game_id, + -- default_bg, + -- bg_config + -- ) + return settingView + end + + local _view = self._view + TableBG.LoadTableBG(default_bg, self._room.game_id, self._root_view, bg_config) + local rightpanel = self._view:GetChild('right_panel') + if rightpanel then + self._rightPanelView = MainRightPanelView.new(self, rightpanel) + end + self:InitXiPai() + self:InitXiPai1() +end + +function M:InitXiPai() + self._xipaiPanel = UIPackage.CreateObjectFromURL("ui://Common/panel_handPoke") + self._root_view:AddChild(self._xipaiPanel) + + local offset = get_offset(self._full_offset) + + self._xipaiPanel.width = GRoot.inst.width - (offset * 2) + self._xipaiPanel.height = GRoot.inst.height + self._xipaiPanel.x = offset + + self._xipaiPanel.visible = false + self._handAnimCtr = self._xipaiPanel:GetController("anim") + self._handAnimCtr.selectedIndex = 0 + --self:PlayXiPai() +end + +function M:PlayXiPai(xipaiCallBack) + if self._xipaiPanel then + coroutine.start(function() + self._xipaiPanel.visible = true + self._xipaiPanel:GetTransition("XiPai"):Play() + self._handAnimCtr.selectedIndex = 1 + coroutine.wait(3.5) + self._handAnimCtr.selectedIndex = 0 + self._xipaiPanel.visible = false + if xipaiCallBack then + xipaiCallBack() + end + end) + end +end + +function M:InitXiPai1() + self._xipaiPanel1 = UIPackage.CreateObjectFromURL("ui://Common/panel_handPoke02") + self._root_view:AddChild(self._xipaiPanel1) + + local offset = get_offset(self._full_offset) + + self._xipaiPanel1.width = GRoot.inst.width - (offset * 2) + self._xipaiPanel1.height = GRoot.inst.height + self._xipaiPanel1.x = offset + + self._xipaiPanel1.visible = false + self._handAnimCtr1 = self._xipaiPanel1:GetController("anim") + self._handAnimCtr1.selectedIndex = 0 +end + +function M:PlayXiPai1(xipaiCallBack) + if self._xipaiPanel1 then + coroutine.start(function() + self._xipaiPanel1.visible = true + self._xipaiPanel1:GetTransition("XiPai"):Play() + self._handAnimCtr1.selectedIndex = 1 + coroutine.wait(3.5) + self._handAnimCtr1.selectedIndex = 0 + self._xipaiPanel1.visible = false + if xipaiCallBack then + xipaiCallBack() + end + end) + end +end + +-- 设置界面的换牌回调,需要换牌的玩法settingViewType传1,重写这个方法 +function M:UpdateCard(index) +end + +function M:UpdateCardSize(index) +end + +function M:Destroy() + UIPackage.RemovePackage('base/main_poker/ui/Main_Poker') + MainView.Destroy(self) +end + +return M diff --git a/lua_probject/main_project/main/poker2/PKPlayBackView.lua b/lua_probject/main_project/main/poker2/PKPlayBackView.lua new file mode 100644 index 00000000..6b0727c2 --- /dev/null +++ b/lua_probject/main_project/main/poker2/PKPlayBackView.lua @@ -0,0 +1,135 @@ +local TableBG = import('Game.Data.TableBG') + +local M = {} + +setmetatable(M,{__index = PlayBackView}) + +local pk_default_bg = 1 +local pk_bg_config = { + {id = 1, url = "base/main_poker/bg/bg1", thumb = "ui://Main_Poker/bg1"}, + {id = 2, url = "base/main_poker/bg/bg2", thumb = "ui://Main_Poker/bg2"}, + {id = 3, url = "base/main_poker/bg/bg3", thumb = "ui://Main_Poker/bg3"}, +} + +function M:InitView(url, ex_defaultbg, ex_bgconfig) + UIPackage.AddPackage("base/main_poker/ui/Main_Poker") + PlayBackView.InitView(self,url) + local _view = self._view + + local default_bg = ex_defaultbg or pk_default_bg + local bg_config = ex_bgconfig or pk_bg_config + TableBG.LoadTableBG(default_bg, self._room.game_id, self._root_view, bg_config) + UpdateBeat:Add(self.OnUpdate,self) +end + +function M:NextRecordPlay() + local result = PlayBackView.NextRecordPlay(self) + if not result then return end + self:ChangePlayState(false) + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() +end + +function M:LastRecordPlay() + local result = PlayBackView.LastRecordPlay(self) + if not result then return end + self:ChangePlayState(false) + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() +end + +function M:Play() + self:ChangeAlpha() + self:ChangePlayState(not self._play) + if not self._play then return end + if (self._currentStep == #self.cmdList and self._playFoward) or (self._currentStep == 0 and not self._playFoward) then + self._currentStep = 0 + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + end +end + +function M:ChangePlayState(state) + self._play = state + self:ChangeTextSpeed() + local btn_play = self._view:GetChild("panel_record"):GetChild("btn_play") + if self._play then + btn_play:GetController("state").selectedIndex = 1 + else + btn_play:GetController("state").selectedIndex = 0 + end +end + +function M:ChangeTextSpeed() + local str1 = self._play and self._speed or "" + self._view:GetChild("panel_record"):GetChild("tex_speed").text = str1 + local str2 = not self._play and (self._playFoward and "播放暂停" or "回退暂停") or self._playFoward and (self._speed == 1 and "播放" or "快进") or (self._speed == 1 and "回退" or "快退") + self._view:GetChild("panel_record"):GetChild("tex_2").text = str2 + local str3 = self._play and "倍速度" or "" + self._view:GetChild("panel_record"):GetChild("tex_1").text = str3 +end + +function M:CmdLeftArrows() + self:ChangeAlpha() + self:ChangePlayState(true) + if not self._playFoward then + if self._speed < 16 then + self._speed = self._speed * 2 + else + self._speed = 1 + end + self:ChangeTextSpeed() + else + self._speed = 1 + self._playFoward = false + self:ChangeTextSpeed() + end +end + +function M:CmdRightArrows() + self:ChangeAlpha() + self:ChangePlayState(true) + if self._playFoward then + if self._speed < 16 then + self._speed = self._speed * 2 + else + self._speed = 1 + end + self:ChangeTextSpeed() + else + self._speed = 1 + self._playFoward = true + self:ChangeTextSpeed() + end +end + +function M:OnUpdate() + if self._play then + if (self._currentStep == #self.cmdList and self._playFoward) then + self:ChangePlayState(false) + ViewUtil.ErrorTip(nil,"当前已是录像结尾了,再次点击播放按钮可重新播放") + return + elseif (self._currentStep == 0 and not self._playFoward) then + self:ChangePlayState(false) + ViewUtil.ErrorTip(nil,"当前已是录像开头了,再次点击播放按钮可重新播放") + return + end + self._timer = self._timer + Time.deltaTime + if self._timer >= 1 / self._speed then + self._timer = 0 + local step = self._playFoward and 1 or -1 + self._currentStep = self._currentStep + step + self:ShowStep(self._currentStep) + end + end +end + +function M:Destroy() + UpdateBeat:Remove(self.OnUpdate,self) + PlayBackView.Destroy(self) +end + +return M \ No newline at end of file diff --git a/lua_probject/main_project/main/poker2/PKSettingView.lua b/lua_probject/main_project/main/poker2/PKSettingView.lua new file mode 100644 index 00000000..2a3dda55 --- /dev/null +++ b/lua_probject/main_project/main/poker2/PKSettingView.lua @@ -0,0 +1,175 @@ +--local EXMainView = import(".EXMainView") + +local SettingView = require('Game.View.SettingView') +local PKSettingView = { + __checkMainViewState = nil, + __changePokerCallBack = nil, + __changePokerSizeCallBack = nil, +} +local M = PKSettingView +function PKSettingView.new(blur_view, show_type, isjiesan, url, cardSizeHandle) + setmetatable(SettingView, { __index = BaseWindow }) + setmetatable(M, { __index = SettingView }) + local self = setmetatable({}, { __index = M }) + self.class = 'PKSettingView' + self._currenIndex = 0 + self._blur_view = blur_view + self.onCallback = event('onCallback', true) + self.stateIndex = 0 + self.cd_time = 0 + self._btn_dismiss_room_enable = true + self._close_destroy = true + self._show_type = show_type + self.isjiesan = isjiesan + self.__changePokerSizeCallBack = cardSizeHandle + if url ~= nil then + self:init(url) + else + self:init('ui://Main_Poker/Setting') + end + + return self +end + +function M:init(url) + SettingView.init(self, url) + -- -- show_type:1隐藏所有 2隐藏解散和换牌 3隐藏返回和换牌 + -- -- 设置界面有换牌功能的,需要在mainview中重写方法UpdateCard + -- self._view:GetController('type').selectedIndex = self._show_type + -- -- show_type1玩法的换牌功能 + -- if self._show_type == 1 then + -- local room = DataManager.CurrenRoom + -- local c1 = self._view:GetController('paimian') + -- local user_id = DataManager.SelfUser.account_id + -- local json_data = Utils.LoadLocalFile(user_id .. room.game_id .. 'pai') + -- if json_data == nil then + -- local _gamectr = self._gamectr + -- c1.selectedIndex = 0 + -- else + -- local _data = json.decode(json_data) + -- local pai = _data['pai'] + + -- c1.selectedIndex = pai + -- end + + + -- c1.onChanged:Set( + -- function() + -- if self.__changePokerCallBack then + -- self.__changePokerCallBack(c1.selectedIndex) + -- end + -- --点击换牌按钮后保存当前游戏的牌 + -- local user_id = DataManager.SelfUser.account_id + -- local _data = {} + -- _data['pai'] = c1.selectedIndex + -- local key = user_id .. room.game_id .. 'pai' + -- Utils.SaveLocalFile(key, json.encode(_data)) + -- end + -- ) + + -- local card_size = self._view:GetController('card_size') + -- json_data = Utils.LoadLocalFile(user_id .. room.game_id .. 'cardsize') + -- if json_data == nil then + -- local _gamectr = self._gamectr + -- card_size.selectedIndex = 1 + -- else + -- local _data = json.decode(json_data) + -- local cardsize = _data['cardsize'] + + -- card_size.selectedIndex = cardsize + -- end + + -- card_size.onChanged:Set( + -- function() + -- if self.__changePokerSizeCallBack then + -- self.__changePokerSizeCallBack(card_size.selectedIndex) + -- end + -- --点击换牌按钮后保存当前游戏的牌 + -- local user_id = DataManager.SelfUser.account_id + -- local _data = {} + -- _data['cardsize'] = card_size.selectedIndex + -- local key = user_id .. room.game_id .. 'cardsize' + -- Utils.SaveLocalFile(key, json.encode(_data)) + -- end + -- ) + + -- self._view:GetChild('btn_close').onClick:Add( + -- function(...) + -- self:Destroy() + -- end + -- ) + -- end + -- if self.isjiesan then + -- self._view:GetChild('n82').visible = false + -- end +end + +-- function M:Show() +-- SettingView.Show(self) +-- -- self:showSettingOption() +-- end + +-- 显示设置界面按钮 +function M:showSettingOption() + local btn_back = self._view:GetChild('btn_back') + if btn_back ~= nil then + btn_back.onClick:Set( + function() + local room = DataManager.CurrenRoom + local ispanguangzhe = room.self_player.seat == 0 + local tip_owner = '您是否退出房间?\n(退出房间后房间将解散)' + local tip = '您是否退出房间?' + local tipStr = '' + if room.agent then + tipStr = '您是否返回?' + else + tipStr = + (not ispanguangzhe and room.owner_id == room.self_player.self_user.account_id) and tip_owner or + tip + end + local _curren_msg = MsgWindow.new(self._root_view, tipStr, MsgWindow.MsgMode.OkAndCancel) + _curren_msg.onOk:Add( + function() + -- 如果游戏已经开始,是旁观者发出退出协议,否则的话不能离开 + -- 如果没开始,发出退出协议 + -- 不用考虑回放,回放不会显示返回按钮 + local state = self.__checkMainViewState() + local _gamectr = ControllerManager.GetController(GameController) + if state > 0 and state < 3 then + if ispanguangzhe then + ViewUtil.ShowModalWait(self._root_view) + _gamectr:LevelRoom( + function(res) + ViewUtil.CloseModalWait() + if res.ReturnCode == 0 then + ViewManager.ChangeView(ViewManager.View_Lobby) + else + ViewUtil.ErrorTip(res.ReturnCode) + end + end + ) + else + ViewUtil.ErrorTip(nil, '房间已开始,无法退出游戏。') + end + else + ViewUtil.ShowModalWait(self._root_view) + _gamectr:LevelRoom( + function(res) + ViewUtil.CloseModalWait() + if res.ReturnCode == 0 then + ViewManager.ChangeView(ViewManager.View_Lobby) + else + ViewUtil.ErrorTip(res.ReturnCode) + end + end + ) + end + end + ) + _curren_msg:Show() + end + ) + end +end + +return M diff --git a/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes b/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes index 0bc9cccc..c8afd19c 100644 Binary files a/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes and b/wb_unity_pro/Assets/ART/base/main_majiang/ui/main_majiang_fui.bytes differ