diff --git a/lua_probject/base_project/Game/Controller/LoginController.lua b/lua_probject/base_project/Game/Controller/LoginController.lua index e08f819d..8b47f46e 100644 --- a/lua_probject/base_project/Game/Controller/LoginController.lua +++ b/lua_probject/base_project/Game/Controller/LoginController.lua @@ -17,6 +17,7 @@ local _LocalConfigAllGame = { -- 90, -- 22, 66,90 + ,91 } local FilterGame = function(games) diff --git a/lua_probject/base_project/Game/Controller/NewGroupController.lua b/lua_probject/base_project/Game/Controller/NewGroupController.lua index e46f2e64..475ff1de 100644 --- a/lua_probject/base_project/Game/Controller/NewGroupController.lua +++ b/lua_probject/base_project/Game/Controller/NewGroupController.lua @@ -1571,7 +1571,7 @@ function M:FG_StopService(group_id, ban, callback) end) end -function M:FG_AddPlay(group_id, game_id, config_data, name, hpData, hpOnOff, gtype, deskId, callback) +function M:FG_AddPlay(group_id, game_id, config_data, name, hpData, hpOnOff, gtype,pid, deskId, callback) local _client = ControllerManager.GroupClient local _data = {} _data.id = group_id diff --git a/lua_probject/base_project/Game/IGameInfo.lua b/lua_probject/base_project/Game/IGameInfo.lua index e7bd553e..5fa58362 100644 --- a/lua_probject/base_project/Game/IGameInfo.lua +++ b/lua_probject/base_project/Game/IGameInfo.lua @@ -22,7 +22,7 @@ end function M:SelectedConfigData() local data = {} - local com_editSetting = self.gl_view:GetModeData().data._config:GetChild("com_editSetting") + local com_editSetting = self._config:GetChild("com_editSetting") self.cGps = com_editSetting:GetController("cGps") self.cTuoguan = com_editSetting:GetController("cTuoguan") diff --git a/lua_probject/base_project/Game/View/FamilyViewZuo.lua b/lua_probject/base_project/Game/View/FamilyViewZuo.lua index 30b2d435..0faa0ac8 100644 --- a/lua_probject/base_project/Game/View/FamilyViewZuo.lua +++ b/lua_probject/base_project/Game/View/FamilyViewZuo.lua @@ -66,7 +66,12 @@ function M:init(url) --管理页面 view:GetChild('btn_manager').onClick:Set(function() - FamilyManagerView.new({}) + FamilyManagerView.new({pageType=1}) + end) + + --成员页面 + view:GetChild('btn_menber').onClick:Set(function() + FamilyManagerView.new({pageType=2}) end) --新玩法管理 @@ -141,6 +146,7 @@ function M:FamilyTableRenderer(index, obj) obj:GetChild('text_roundNum').text = string.format("(0/%s)", ExtendManager.GetExtendConfig(tmp.gameId):GetGameInfo():LoadConfigOneInfo(tmp.config, tmp.hpData, "maxRound") or 0) + obj.icon = string.format("ui://Family/icon_table%s", (self.localTextDesk[tmp.gameId] or 0) + 1) end --进入亲友圈 @@ -165,6 +171,7 @@ function M:EnterFamily(index_family, only) local view = self._view view:GetChild('text_familyName').text = self._group.name view:GetChild('text_familyid').text = self._group.id + view:GetChild('text_fangka').text = self._group.groupDiamo self._viewList_familyList.selectedIndex = index_family - 1 self:UpdateRoom() end @@ -174,8 +181,8 @@ end --房间处理方法 function M:UpdateRoom() local group = self._group - local playList = self._group.playList - local roomList = self._group.rooms + local playList = group.playList + local roomList = group.rooms self._viewList_tableList.numItems = #playList + #roomList end @@ -240,7 +247,7 @@ function M:ClickTableShowDetail(data) end) detailView:GetChild('btn_delRoom').onClick:Set(function(context) - self:JieSanRomm(self._group.id,data.info.id) + self:JieSanRomm(self._group.id, data.info.id) end) if data.type == 1 then @@ -326,8 +333,10 @@ end ----------------- function M:FillData() + local view = self._view local groups = DataManager.groups.groupList self._viewList_familyList.numItems = #groups + self.localTextDesk = FamilyPlayListView:EncodeDeskType() self:EnterFamily() end diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyGamePlay.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyGamePlay.lua index fff2f2a9..65523290 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/FamilyGamePlay.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyGamePlay.lua @@ -78,7 +78,7 @@ function M:ClickCreate() _data.game_id = info.game_id self.table_color = 0 local functionName = self._data.playInfo and fgCtr.FG_UpdatePlay or fgCtr.FG_AddPlay - functionName(fgCtr, group.id, info.game_id, _data, info.name, hpData, 1, group.type, self.table_color, + functionName(fgCtr, group.id, info.game_id, _data, info.name, hpData, 1,self._data.playInfo.id, group.type, self.table_color, function(res) if self._is_destroy then return diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua index 95b25dd1..8c9642d4 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerTable.lua @@ -1,19 +1,34 @@ local ManagerChild_GamePlayView = import(".ManagerChild_GamePlayView") local ManagerChild_PlayerView = import(".ManagerChild_PlayerView") +--成员 +local ManagerMenberChild_PlayerView = import(".ManagerMenberChild_PlayerView") local FamilyManagerTable = {} local M = FamilyManagerTable M.ManagerTable = { - {id=1,title="成员管理",icon="ui://Family/成员管理",view=ManagerChild_PlayerView}, - {id=2,title="快速组局",icon="ui://Family/快速组局",view=ManagerChild_GamePlayView}, + { id = 1, title = "成员管理", view = ManagerChild_PlayerView }, + { id = 2, title = "快速组局", view = ManagerChild_GamePlayView }, + --成员管理页面 + { id = 3, title = "成员列表", view = ManagerMenberChild_PlayerView } } M.ManagerShow = { - {1,2}, --群主 + { 1, 2 }, --群主 + {}, --代理 + {} --用户 +} + +M.ManagerMenberShow = { + { 3 }, --群主 {}, --代理 {} --用户 } -return M \ No newline at end of file +M.ManagerManger = { + {id=1,url="ui://Family/FamilyManager",table = M.ManagerShow}, + {id=2,url="ui://Family/FamilyManagerMenber",table = M.ManagerMenberShow}, +} + +return M diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerView.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerView.lua index 467552be..3648ca80 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerView.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyManagerView.lua @@ -4,6 +4,8 @@ local FamilyManagerView = {} local M = FamilyManagerView +local MangerURL = {"ui://Family/FamilyManager"} + function FamilyManagerView.new(data,callback) setmetatable(M, { __index = BaseWindow }) local self = setmetatable({}, { __index = M }) @@ -13,12 +15,13 @@ function FamilyManagerView.new(data,callback) self._close_destroy = true self._full = true self._full_offset = false - self:init("ui://Family/FamilyManager") + self:init() return self end -function M:init(url) - getmetatable(M).__index.init(self,url) +function M:init() + self._data.pageType = self._data.pageType or 1 + getmetatable(M).__index.init(self,FamilyManagerTable.ManagerManger[self._data.pageType].url) local view = self._view self._viewList_left = view:GetChild('list_left') @@ -30,13 +33,13 @@ end --管理页面函数组-- function M:ManagerItemRenderer(index,obj) - local viewInfo = FamilyManagerTable.ManagerTable[FamilyManagerTable.ManagerShow[self._data.lev][index+1]] - obj.title = viewInfo.title - obj.icon = viewInfo.icon + local viewInfo = FamilyManagerTable.ManagerTable[FamilyManagerTable.ManagerManger[self._data.pageType].table[self._data.lev][index+1]] + obj:GetChild('text_down').text = viewInfo.title + obj:GetChild('text_up').text = viewInfo.title end function M:ManagerClick(context) - local viewInfo = FamilyManagerTable.ManagerTable[FamilyManagerTable.ManagerShow[self._data.lev][self._viewList_left.selectedIndex+1]] + local viewInfo = FamilyManagerTable.ManagerTable[FamilyManagerTable.ManagerManger[self._data.pageType].table[self._data.lev][self._viewList_left.selectedIndex+1]] viewInfo.view.new({root=self}) end ----------------- diff --git a/lua_probject/base_project/Game/View/FamilyZuo/FamilyPlayListView.lua b/lua_probject/base_project/Game/View/FamilyZuo/FamilyPlayListView.lua index 90f6e90d..63320b86 100644 --- a/lua_probject/base_project/Game/View/FamilyZuo/FamilyPlayListView.lua +++ b/lua_probject/base_project/Game/View/FamilyZuo/FamilyPlayListView.lua @@ -4,7 +4,7 @@ local FamilyPlayListView = {} local M = FamilyPlayListView -function FamilyPlayListView.new(data,callback) +function FamilyPlayListView.new(data, callback) setmetatable(M, { __index = BaseWindow }) local self = setmetatable({}, { __index = M }) self.class = "FamilyPlayListView" @@ -16,22 +16,102 @@ function FamilyPlayListView.new(data,callback) end function M:init(url) - getmetatable(M).__index.init(self,url) + getmetatable(M).__index.init(self, url) local view = self._view - view:GetChild('btn_addPlay').onClick:Set(handler(self,self.AddPlayClick)) - + --控制器 + self._ctr_page = view:GetController('page') + + --跳转到玩法创建 + view:GetChild('btn_addPlay').onClick:Set(handler(self, self.AddPlayClick)) + + --当前玩法列表 + self._viewList_playList = view:GetChild('list_playList') + self._viewList_playList:SetVirtual() + self._viewList_playList.itemRenderer = handler(self, self.PlayListRenderer) + + --改变桌子颜色 + view:GetChild('btn_saveDesk').onClick:Set(handler(self, self.ClickSaveDesk)) + + --重写关闭按钮 + view:GetChild('btn_close').onClick:Set(function() + if self._ctr_page.selectedIndex == 1 then + self._ctr_page.selectedIndex = 0 + else + self:Destroy() + end + end) + self:FillData() end function M:AddPlayClick() - FamilyManagerView.new({frsitIndex=2}) + FamilyManagerView.new({ pageType=1,frsitIndex = 2 }) +end + +--玩法列表渲染 +function M:PlayListRenderer(index, obj) + local info = DataManager.CurrenGroup.playList[index + 1] + obj:GetChild('text_gameName').text = info.name + obj:GetChild('VScrollText').text = ExtendManager.GetExtendConfig(info.gameId):GetGameInfo():LoadConfigToDetail( + info.config, info.hpData) + obj:GetChild('btn_chooseDesk').onClick:Set(function() + self._ctr_page.selectedIndex = 1 + self._data_clickGameId = info.gameId + self._view:GetChild('list_changeDesk').selectedIndex = self.localTextDesk[info.gameId] or 0 + end) + obj.icon = string.format("ui://Family/icon_table%s", (self.localTextDesk[info.gameId] or 0) + 1) +end + +--点击保存玩法 +function M:ClickSaveDesk() + local index = self._view:GetChild('list_changeDesk').selectedIndex + self._ctr_page.selectedIndex = 0 + if self._data_clickGameId == nil then + ViewUtil:ErrorTip("桌子信息保存失败,请重新选择!") + return + end + self.localTextDesk[self._data_clickGameId] = index + self:DecodeDeskType() + self._viewList_playList:RefreshVirtualList() end function M:FillData() + self.localTextDesk = self:EncodeDeskType() + self._viewList_playList.numItems = #DataManager.CurrenGroup.playList + self:Show() end +--格式化本地桌子数据 +function M:EncodeDeskType() + local text = Utils.LoadLocalFile("deskType") + local table1 = split(text, "|") + if not table1 or #table1 == 0 then + return {} + end + local table2 = {} + for i, v in ipairs(table1) do + local tmp = split(v, ",") + table2[tonumber(tmp[1])] = tonumber(tmp[2]) + end + return table2 +end + +--存入桌子数据 +function M:DecodeDeskType() + local text = "" + for k, v in pairs(self.localTextDesk) do + local text1 = string.format("%s,%s", k, v) + if text == "" then + text = text1 + else + text = string.format("%s|%s", text, text1) + end + end + Utils.SaveLocalFile("deskType", text) +end + -- 打开窗口 function M:Show() getmetatable(M).__index.Show(self) diff --git a/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_PlayerView.lua b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_PlayerView.lua new file mode 100644 index 00000000..2c23f347 --- /dev/null +++ b/lua_probject/base_project/Game/View/FamilyZuo/ManagerMenberChild_PlayerView.lua @@ -0,0 +1,60 @@ +local ManagerMenberChild_PlayerView = {} + +local M = ManagerMenberChild_PlayerView + +function ManagerMenberChild_PlayerView.new(data, callback) + local self = setmetatable({}, { __index = M }) + self.class = "ManagerMenberChild_PlayerView" + self._data = data or {} + self._callback = callback + self:init("ui://Family/ManagerMenberChild_Player") + return self +end + +function M:init(url) + local root = self._data.root + if not root then + ViewUtil:ErrorTip("点击太快,请重新打开页面") + return + end + local page = root._view:GetChild('page') + self:LoadPage(page, url, function(view) + self._view = view + end) +end + +--确保页面加载后再渲染初始化数据 +function M:LoadPage(loader, url, callback) + loader.url = url + + if loader.component then + callback(loader.component) + else + FrameTimer.New(function() + if loader.component then + callback(loader.component) + end + end, 1):Start() + end +end + +function M:FillData() + +end + +-- 打开窗口 +function M:Show() + getmetatable(M).__index.Show(self) +end + +-- 关闭窗口 +function M:Close() + getmetatable(M).__index.Close(self) +end + +-- 销毁窗口 +function M:Destroy() + getmetatable(M).__index.Destroy(self) +end + +return M diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXGameInfo.lua b/lua_probject/extend_project/extend/poker/duoduo/EXGameInfo.lua index 062dd7fa..710df0ad 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXGameInfo.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXGameInfo.lua @@ -16,13 +16,13 @@ function EXGameInfo.new(blur_view) end function M:FillData(view, index) - getmetatable(M).__index:FillData(view, index) + getmetatable(M).__index.FillData(self,view, index) self._maxPlayer = 2 -- 默认玩家人数 self._roundChoice = 5 -- 回合选项数 -- if oldGameVersion == 1 then - self._config = UIPackage.CreateObjectFromURL(self:GetPageURL()) + -- self._config = UIPackage.CreateObjectFromURL(self:GetPageURL()) local com_editSetting = self._config:GetChild("com_editSetting") @@ -95,7 +95,7 @@ function M:LoadConfigData(data) pt(data) _config:GetController("round").selectedIndex = data.opt - 1 _config:GetController("handcard").selectedIndex = 2 - data.leaf - _config:GetController("peopleNum").selectedIndex = 3 - data.maxPlayers + _config:GetController("peopleNum").selectedIndex = 1 _config:GetController("showCardNum").selectedIndex = 1 - data.showlength _config:GetController("wanfa1_1").selectedIndex = data.planeNoBelt _config:GetController("wanfa1_2").selectedIndex = data.planelack @@ -164,7 +164,7 @@ function M:LoadConfigData(data) end function M:SelectedConfigData() - local _data = getmetatable(M).__index:SelectedConfigData() + local _data = getmetatable(M).__index.SelectedConfigData(self) local _config = self._config local round = _config:GetController("round").selectedIndex local handcard = _config:GetController("handcard").selectedIndex diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXMainView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXMainView.lua index 1dd08272..19c130f2 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXMainView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXMainView.lua @@ -209,7 +209,6 @@ function M:InitView(url) self._view:GetChild('btn_ready_inClear').onClick:Set(function() if self.result_view and self.result_view._view then self._ctr_inClear.selectedIndex = 0 - self.result_view:ClearReady() else self.result_view = nil local _gamectr = ControllerManager.GetController(GameController) @@ -998,8 +997,7 @@ function M:EventInit() -- end coroutine.wait(2) - self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, - remaincards) + self.result_view = EXResultView.new(self, info, over, win_seat) self.result_view:SetDestroryCallback(function() for i = 1, #self._player_card_info do local card_info = self._player_card_info[i] @@ -1049,7 +1047,7 @@ function M:EventInit() local card_info = self._player_card_info[i] card_info._ctr_time_clock.selectedIndex = 0 end - self.result_view = EXResultView.new(self, info, self._room.room_id, over, winseat, dissolve, nil) + self.result_view = EXResultView.new(self, info, over, winseat) self.result_view:Show() ControllerManager.ChangeController(LoddyController) self:UnmarkSelfTuoguan() @@ -1252,8 +1250,7 @@ function M:ReconnectForClearing() coroutine.start(function() coroutine.wait(0.3) - self.result_view = EXResultView.new(self, self._room.player_list, self._room.room_id, 0, - win_seat, 0, remaincards) + self.result_view = EXResultView.new(self, self._room.player_list, 0, win_seat) self.result_view:SetDestroryCallback(function() for i = 1, #self._player_card_info do local card_info = self._player_card_info[i] diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerBackView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerBackView.lua index e59a728b..7f231310 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXPlayerBackView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXPlayerBackView.lua @@ -285,8 +285,7 @@ function M:ShowStep(index) coroutine.wait(2) - self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, - remaincards) + self.result_view = EXResultView.new(self, info, over, win_seat) self.result_view:SetDestroryCallback(function() for i = 1, #self._player_card_info do local card_info = self._player_card_info[i] @@ -323,8 +322,7 @@ function M:ShowStep(index) 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) + self.result_view = EXResultView.new(self._root_view, Result.info, Result.type, Result.winseat) local num = self._view:GetChildIndex(self._view:GetChild("panel_record")) self._view:AddChildAt(self.result_view._view, num) else diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXResultView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXResultView.lua index 7de29e8c..7154b40f 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXResultView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXResultView.lua @@ -8,7 +8,7 @@ local EXResultView = {} local M = EXResultView -function EXResultView.new(root, data, roomid, over, win_seat, dissolve, remaincards) +function EXResultView.new(root, data, over, win_seat) setmetatable(M, { __index = ResultView }) local self = setmetatable({}, { __index = M }) @@ -17,12 +17,11 @@ function EXResultView.new(root, data, roomid, over, win_seat, dissolve, remainca self._close_zone = false self._root_runFast = root self._gamectr = ControllerManager.GetController(GameController) - self:init("ui://Extend_Poker_DuoDuo/clearing_new", data, roomid, over, win_seat, dissolve, remaincards) - print("=======================lingmengresult", data, roomid, over, win_seat, dissolve, remaincards) + self:init("ui://Extend_Poker_DuoDuo/clearing_new", data, over, win_seat) return self end -function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) +function M:init(url, data, over, win_seat) ResultView.init(self, url, true) local room = DataManager.CurrenRoom @@ -46,36 +45,17 @@ function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) end end - self._view:GetChild('btn_over1Close').onClick:Set(function() - if over == 0 then - self:Close() - else - self._view:GetController('over').selectedIndex = 1 - end - end) - + --下一局 self._view:GetChild('btn_nextRound').onClick:Set(function() if over == 0 then local _gamectr = ControllerManager.GetController(GameController) _gamectr:ConformToNextGame() - -- self._root_runFast._ctr_inClear.selectedIndex = 0 self:Destroy() else self._view:GetController('over').selectedIndex = 1 end end) - self.ClearReady = function() - if over == 0 then - local _gamectr = ControllerManager.GetController(GameController) - _gamectr:ConformToNextGame() - self._root_runFast:ClearOk() - self:Destroy() - else - self._view:GetController('over').selectedIndex = 1 - end - end - self._view:GetChild('btn_closeRound').onClick:Set(function() if room._flag_lobby then ViewManager.ChangeView(ViewManager.View_Lobby) @@ -84,21 +64,27 @@ function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) end end) - self._view:GetController('win').selectedIndex = win_seat == room.self_player.seat and 1 or 0 + --处理win_seat + local temp_win_seat = {} + for i,v in ipairs(win_seat) do + temp_win_seat[v] = 1 + end + win_seat = temp_win_seat + self._view:GetController('win').selectedIndex = win_seat[room.self_player.seat] and 1 or 0 local over0List = self._view:GetChild('list_over0') - over0List:SetVirtual() + table.sort(data,function(a,b) + return a.ranking < b.ranking + end) 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('cardScore').text = info.roundCardScore + obj:GetChild('bompScore').text = info.roundBonusScore obj:GetChild('score').text = info.winscore > 0 and string.format("+%d", info.winscore) or info.winscore - obj:GetController('chuntian').selectedIndex = info.chuntian and 1 or 0 end over0List.numItems = #data - -- self._root_runFast._ctr_inClear.selectedIndex = 1 if over == 1 or (over == 2 and room.curren_round > 0) then local bigSeat = 0 @@ -128,35 +114,35 @@ function M:init(url, data, roomid, over, win_seat, dissolve, remaincards) end - local Btn_Share = self._view:GetChild('btn_shareRecord') - if Btn_Share then - Btn_Share.onClick:Set(function() - self:SaveRenderTextureToPNG() - end) - end + -- local Btn_Share = self._view:GetChild('btn_shareRecord') + -- if Btn_Share then + -- Btn_Share.onClick:Set(function() + -- self:SaveRenderTextureToPNG() + -- end) + -- end - local Btn_Copy = self._view:GetChild('btn_copyRecord') - if Btn_Copy then - Btn_Copy.onClick:Set(function() - local resultStr = "" - if room.group_id ~= 0 then - local group = DataManager.groups:get(room.group_id) - resultStr = string.format("【%s】俱乐部,", group.name) - end - resultStr = string.format("%s%s\n", resultStr, room.game_info.name) - for i = 1, #data do - local info = data[i] - local playerInfo = room:GetPlayerBySeat(info.seat) - resultStr = string.format("%s%s\nID:%s【%s】\n", resultStr, playerInfo.self_user.nick_name, - playerInfo.self_user.account_id, - info.total_score) - end - resultStr = string.format("%s房号:%s 局数:%s/%s局\n结束时间:%s", resultStr, room.room_id, room.curren_round, - room.room_config.Times, os.date("%Y-%m-%d %H:%M:%S", os.time())) - ViewUtil.__openWx() - GameApplication.Instance:CopyToClipboard(resultStr) - end) - end + -- local Btn_Copy = self._view:GetChild('btn_copyRecord') + -- if Btn_Copy then + -- Btn_Copy.onClick:Set(function() + -- local resultStr = "" + -- if room.group_id ~= 0 then + -- local group = DataManager.groups:get(room.group_id) + -- resultStr = string.format("【%s】俱乐部,", group.name) + -- end + -- resultStr = string.format("%s%s\n", resultStr, room.game_info.name) + -- for i = 1, #data do + -- local info = data[i] + -- local playerInfo = room:GetPlayerBySeat(info.seat) + -- resultStr = string.format("%s%s\nID:%s【%s】\n", resultStr, playerInfo.self_user.nick_name, + -- playerInfo.self_user.account_id, + -- info.total_score) + -- end + -- resultStr = string.format("%s房号:%s 局数:%s/%s局\n结束时间:%s", resultStr, room.room_id, room.curren_round, + -- room.room_config.Times, os.date("%Y-%m-%d %H:%M:%S", os.time())) + -- ViewUtil.__openWx() + -- GameApplication.Instance:CopyToClipboard(resultStr) + -- end) + -- end end function M:FillPlayerInfoEnd(view, info, playerInfo, bigWin) diff --git a/lua_probject/extend_project/extend/poker/duoduo/EXWitnessView.lua b/lua_probject/extend_project/extend/poker/duoduo/EXWitnessView.lua index 3bea5aba..1278a9e4 100644 --- a/lua_probject/extend_project/extend/poker/duoduo/EXWitnessView.lua +++ b/lua_probject/extend_project/extend/poker/duoduo/EXWitnessView.lua @@ -146,7 +146,6 @@ function M:InitView(url) self._view:GetChild('btn_ready_inClear').onClick:Set(function() if self.result_view and self.result_view._view then self._ctr_inClear.selectedIndex = 0 - self.result_view:ClearReady() else self.result_view = nil local _gamectr = ControllerManager.GetController(GameController) @@ -629,8 +628,7 @@ function M:EventInit() -- end coroutine.wait(2) - self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, - remaincards) + self.result_view = EXResultView.new(self, info, over, win_seat) self._ctr_inClear.selectedIndex = 0 self.result_view:SetDestroryCallback(function() for i = 1, #self._player_card_info do @@ -695,7 +693,7 @@ function M:EventInit() local card_info = self._player_card_info[i] card_info._ctr_time_clock.selectedIndex = 0 end - self.result_view = EXResultView.new(self, info, self._room.room_id, over, winseat, dissolve, nil) + self.result_view = EXResultView.new(self, info, over, winseat) self.result_view:Show() ControllerManager.ChangeController(LoddyController) self:UnmarkSelfTuoguan() diff --git a/lua_probject/extend_project/extend/poker/sandaha/CardCheck.lua b/lua_probject/extend_project/extend/poker/sandaha/CardCheck.lua new file mode 100644 index 00000000..99a79232 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/CardCheck.lua @@ -0,0 +1,783 @@ +local CardCheck = { + + cardList = {}, + cardListSord = {}, + cardNum = 0, + cardSize = 0, + long = false, + planeNoBelt = false, + threeNoBelt = false, + planelack = false, + threelack = false, + fourDaiThree = false, + fristCard = true, + haveRuleCard = false, + tipCardList = {}, + touchCardSet = {}, + touchCardMao = {} +} + +local CardType = { + one = 1, + long = 2, + dui = 3, + duiLong = 10, + threeAndTwo = 4, + normolPlant = 5, + zha = 6, + onlyThree = 7, + onlyPlant = 8, + zhaAndThreee = 9, + lessThree = 11, + lessPlant = 12 +} + +local M = CardCheck + +function M:InitFlag() + local config = DataManager.CurrenRoom.room_config.config + self.planeNoBelt = config.planeNoBelt == 1 + self.threeNoBelt = config.threeNoBelt == 1 + self.planelack = config.planelack == 1 + self.threelack = config.threelack == 1 + self.fourDaiThree = config.fourDaiThree + self.rule = config.rule + self._flag_fristCard = true + print("==============================lingmengcheckinitFlag") + pt(config) + pt(self) + return self +end + +function M:InitLastCard(cardList, mustPutMaxCard) + self._flag_fristCard = false + self:Clear() + self._flag_mustMax = mustPutMaxCard + self.type = 0 + self.specilCard = {} + self.lastCardNum = #cardList + self._flag_allCards = false + self._flag_checkLst = true + if #cardList == 0 then + self._flag_fristCard = true + return + end + table.sort(cardList) + pt(cardList) + self.lastMinCard = math.floor(cardList[1] / 10) + local temp_long = 0 + for i = 1, #cardList do + local number = math.floor(cardList[i] / 10) + if self.cardList[number] then + self.cardList[number] = self.cardList[number] + 1 + else + self.cardList[number] = 1 + self.cardSize = self.cardSize + 1 + table.insert(self.cardListSord, number) + end + self.cardNum = self.cardNum + 1 + if i == 1 then + temp_long = 1 + elseif temp_long == i - 1 then + if math.abs(math.floor(cardList[i - 1] / 10) - number) == 1 then + temp_long = i + end + end + end + self.long = temp_long == self.cardNum and self.cardNum >= 5 + print("lingmengCheckAloneOrLong2") + if self:CheckAloneOrLong() then + self.type = self:CheckAloneOrLong() + return + end + print("lingmengCheckDuiZi2") + if self:CheckDuiZi() then + self.type = self:CheckDuiZi() + return + end + print("lingmengCheckSanDai2") + + if self:CheckSanDai() then + local a, b, c = self:CheckSanDai() + self.type = a + if b then + self.specilCard = b + end + if c then + self.lastMinCard = c + end + return + end + print("lingmengCheckZha2") + + if self:CheckZha() then + local a, b, c = self:CheckZha() + self.type = a + if b then + self.specilCard = b + end + if c then + self.lastMinCard = c + end + return + end + if self.type == 0 then + -- ViewUtil.ErrorTip(-1, "上一份牌型判断错误") + end +end + +function M:initCards(cardList, data) + print("lingmenginitCards") + pt(cardList) + local temp_long = 0 + data = data or {} + self:Clear() + self._flag_allCards = data.flag_allCards or false + self._flag_ruleCard = data.flag_ruleCard or false + if data.flag then + for i = 1, #cardList do + if cardList[i].card_code_number == 34 then + self.haveRuleCard = true + end + local number = math.floor(cardList[i][1].card_code_number / 10) + if self.cardList[number] then + self.cardList[number] = self.cardList[number] + 1 + else + self.cardList[number] = 1 + self.cardSize = self.cardSize + 1 + table.insert(self.cardListSord, number) + end + self.cardNum = self.cardNum + 1 + if i == 1 then + temp_long = 1 + elseif temp_long == i - 1 then + if math.abs(math.floor(cardList[i - 1][1].card_code_number / 10) - number) == 1 then + temp_long = i + end + end + end + else + for i = 1, #cardList do + if cardList[i].card_code_number == 34 then + self.haveRuleCard = true + end + local number = math.floor(cardList[i].card_code_number / 10) + if self.cardList[number] then + self.cardList[number] = self.cardList[number] + 1 + else + self.cardList[number] = 1 + self.cardSize = self.cardSize + 1 + table.insert(self.cardListSord, number) + end + self.cardNum = self.cardNum + 1 + if i == 1 then + temp_long = 1 + elseif temp_long == i - 1 then + if math.abs(math.floor(cardList[i - 1].card_code_number / 10) - number) == 1 then + temp_long = i + end + end + end + end + + print(self.cardNum, self.cardSize, temp_long) + pt(self.cardList) + self.long = temp_long == self.cardNum and self.cardNum >= 5 +end + +function M:CheckCards() + if self.cardNum ~= 4 and self.cardNum ~= self.lastCardNum and not self._flag_fristCard then + return + end + if self.cardNum == 1 and self._flag_mustMax and self.maxCard ~= self.cardListSord[1] then + return + end + if self.cardNum == 0 then + return + end + if self.rule == 1 and self._flag_ruleCard and DataManager.CurrenRoom.curren_round == 1 and not self.haveRuleCard then + return + end + + print("lingmeng self.lastMinCard", self.lastMinCard) + + print("lingmengCheckAloneOrLong") + if self:CheckAloneOrLong() then + return true + end + print("lingmengCheckDuiZi") + + if self:CheckDuiZi() then + return true + end + print("lingmengCheckSanDai") + if self:CheckSanDai() then + if self._flag_fristCard then + return true + end + local a, b, c = self:CheckSanDai() + self.type = a + if b then + self.specilCard = b + end + if c then + return c > (self.lastMinCard or 0) + end + return true + end + print("lingmengCheckZha") + + if self:CheckZha() then + return true + end + + return false +end + +function M:CheckOutCard(cardList) + print("lingmengCheckOutCard===============") + pt(cardList) + self.tipCardList = {} + self.touchCardSet = {} + self.touchCardMao = {} + local cardMap = {} + local cardSet = {} + local temp_long = 0 + local temp_longList = {} + local longList = {} + local lastCard = -1 + + local flag_threeOrFour = false + for i = 1, #cardList do + local number = math.floor(cardList[i].card_code_number / 10) + if cardMap[number] then + cardMap[number].value = cardMap[number].value + 1 + table.insert(cardMap[number].cardList, cardList[i]) + else + cardMap[number] = {} + cardMap[number].value = 1 + cardMap[number].cardList = {} + table.insert(cardMap[number].cardList, cardList[i]) + table.insert(cardSet, number) + end + if cardMap[number].value >= 3 then + flag_threeOrFour = true + end + if lastCard ~= number then + if lastCard - number ~= 1 then + if temp_long >= 5 then + table.insert(longList, temp_longList) + end + temp_long = 1 + temp_longList = {} + else + temp_long = temp_long + 1 + end + lastCard = number + table.insert(temp_longList, number) + end + end + if temp_long >= 4 then + table.insert(longList, temp_longList) + end + + table.sort(cardSet) + self.maxCard = cardSet[#cardSet] + + if self._flag_fristCard then + if self._flag_mustMax then + self:CheckOutCardGetMustMax(cardSet, cardMap, flag_threeOrFour, longList) + else + self:CheckOutCardGetFristTipList(cardSet, cardMap) + end + return + end + + local cardType, only, longLength = self:CheckOutCardGetType() + + + local tipCardSet = self:CheckOutCardGetTouchSet(cardSet, cardMap, cardType, longLength) + + self:CheckOutCardSetTipList(tipCardSet, longLength, cardMap, cardType) + + if cardType >= 3 and only == 0 then + self:CheckOutCardGetAllCardSetAndMap() + end +end + +function M:CheckOutCardGetAllCardSetAndMap() + self.touchCardSet = {} + self.touchCardMao = {} + for i = 3, 15 do + table.insert(self.touchCardSet, i) + self.touchCardMao[i] = 1 + end +end + +function M:CheckOutCardGetFristTipList(cardSet, cardMap) + for i = 1, #cardSet do + local card = cardSet[i] + table.insert(self.touchCardSet, card) + self.touchCardMao[card] = 1 + local temp = {} + table.insert(temp, cardMap[card].cardList[1]) + table.insert(self.tipCardList, temp) + end +end + +function M:CheckOutCardGetMustMax(cardSet, cardMap, flag_threeOrFour, longList) + if flag_threeOrFour then + for i = 3, 15 do + if cardMap[i] then + if i == cardSet[#cardSet] then + table.insert(self.touchCardSet, i) + self.touchCardMao[i] = 1 + table.insert(self.tipCardList, cardMap[i].cardList) + elseif cardMap[i].value >= 2 then + table.insert(self.touchCardSet, i) + self.touchCardMao[i] = 1 + table.insert(self.tipCardList, cardMap[i].cardList) + else + table.insert(self.touchCardSet, i) + self.touchCardMao[i] = 1 + end + else + table.insert(self.touchCardSet, i) + self.touchCardMao[i] = 1 + end + end + else + for i = 1, #cardSet do + local card = cardSet[i] + if i == #cardSet then + table.insert(self.touchCardSet, card) + self.touchCardMao[card] = 1 + table.insert(self.tipCardList, cardMap[card].cardList) + elseif cardMap[card].value >= 2 then + table.insert(self.touchCardSet, card) + self.touchCardMao[card] = 1 + table.insert(self.tipCardList, cardMap[card].cardList) + end + end + end + ---单数顺另外添加到提示和现实 + for i = 1, #longList do + local tempTipList = {} + for j = 1, #longList[i] do + local card = longList[i][j] + if not self.touchCardMao[card] then + table.insert(self.touchCardSet, card) + self.touchCardMao[card] = 1 + end + table.insert(tempTipList, cardMap[card].cardList[1]) + end + table.insert(self.tipCardList, tempTipList) + end +end + +function M:CheckOutCardGetType() + local cardType = 0 + local only = 0 + local longLength = 1 + if self.type == 0 then + return cardType, only, longLength + end + if self.type == CardType.one or self.type == CardType.long then + cardType = 1 + if self.type == CardType.long then + longLength = self.lastCardNum + end + elseif self.type == CardType.dui or self.type == CardType.duiLong then + cardType = 2 + if self.lastCardNum > 2 then + longLength = self.lastCardNum / 2 + end + elseif self.type == CardType.threeAndTwo or self.type == CardType.onlyThree or self.type == CardType.lessThree or self.type == CardType.normolPlant or self.type == CardType.onlyPlant or self.type == CardType.lessPlant then + cardType = 3 + if self.type == CardType.onlyThree or self.type == CardType.onlyPlant then + only = 1 + if self.type == CardType.onlyPlant then + longLength = self.lastCardNum / 3 + end + end + if self.type == CardType.normolPlant then + longLength = self.lastCardNum / 5 + end + elseif self.type == CardType.zha or self.type == CardType.zhaAndThreee then + cardType = 4 + if self.type == CardType.zha then + only = 1 + end + end + return cardType, only, longLength +end + +function M:CheckOutCardGetTouchSet(cardSet, cardMap, cardType, longLength) + print("lingmengCheckOutCardGetTouchSet", cardType, longLength, self.lastMinCard) + pt(cardSet) + pt(cardMap) + local tempLong = 0 + local lastCard = 0 + local tempCardSet = {} + local tipCardSet = {} + local ZhaCardList = {} + for i = 1, #cardSet do + local card = cardSet[i] + if cardMap[card].value >= cardType and card > self.lastMinCard and cardMap[card].value ~= 4 then + if tempLong == 0 then + tempLong = 1 + else + if lastCard - card == -1 then + tempLong = tempLong + 1 + else + if tempLong >= longLength and (cardType ~= 1 or longLength >= 5 or not self._flag_mustMax) then + for j = 1, tempLong do + table.insert(self.touchCardSet, tempCardSet[j]) + self.touchCardMao[tempCardSet[j]] = 1 + end + end + table.insert(tipCardSet, tempCardSet) + tempLong = 1 + tempCardSet = {} + end + end + table.insert(tempCardSet, card) + lastCard = card + end + if cardMap[card].value == 4 then + table.insert(self.touchCardSet, card) + self.touchCardMao[card] = 1 + table.insert(ZhaCardList, card) + end + end + if tempLong >= longLength then + for j = 1, tempLong do + if cardType ~= 1 or longLength >= 5 or not self._flag_mustMax or j == tempLong then + table.insert(self.touchCardSet, tempCardSet[j]) + self.touchCardMao[tempCardSet[j]] = 1 + end + end + end + table.insert(tipCardSet, tempCardSet) + for i = 1, #ZhaCardList do + table.insert(tipCardSet, ZhaCardList[i]) + end + return tipCardSet +end + +function M:CheckOutCardSetTipList(tipCardSet, longLength, cardMap, cardType) + print("lingmengCheckOutCardSetTipList", longLength, cardMap, cardType) + pt(tipCardSet) + for i = 1, #tipCardSet do + if type(tipCardSet[i]) == 'number' then + table.insert(self.tipCardList, cardMap[tipCardSet[i]].cardList) + else + local tipCardSetLen = #tipCardSet[i] + if tipCardSetLen == longLength then + local tempList = {} + local tempSanDaiCard = {} + for j = 1, tipCardSetLen do + local card = tipCardSet[i][j] + tempSanDaiCard[card] = true + local minNum = Mathf.Min(cardMap[card].value, cardType) + for k = 1, minNum do + if cardType ~= 1 or longLength >= 5 or not self._flag_mustMax or card == self.maxCard then + table.insert(tempList, cardMap[card].cardList[k]) + end + end + end + if #tempList > 0 then + if self.type == 4 or self.type == 5 then + local removeSanDaiList = {} + for k, v in pairs(cardMap) do + if not tempSanDaiCard[k] then + for i, v1 in ipairs(v.cardList) do + table.insert(removeSanDaiList, v1) + end + end + end + if #removeSanDaiList <= longLength * 2 then + table.insert(self.tipCardList, tempList) + else + self:GetSanDaiTips(tempList, longLength * 2, removeSanDaiList) + end + else + table.insert(self.tipCardList, tempList) + end + end + else + for j = 1, tipCardSetLen do + if j + longLength - 1 <= tipCardSetLen then + local tempList = {} + local tempSanDaiCard = {} + for k = j, j + longLength - 1 do + local card = tipCardSet[i][k] + tempSanDaiCard[card] = true + local minNum = Mathf.Min(cardMap[card].value, cardType) + for l = 1, minNum do + if cardType ~= 1 or longLength >= 5 or not self._flag_mustMax or card == self.maxCard then + table.insert(tempList, cardMap[card].cardList[l]) + end + end + end + if #tempList > 0 then + if self.type == 4 or self.type == 5 then + local removeSanDaiList = {} + for k, v in pairs(cardMap) do + if not tempSanDaiCard[k] then + for i, v1 in ipairs(v.cardList) do + table.insert(removeSanDaiList, v1) + end + end + end + if #removeSanDaiList <= longLength * 2 then + table.insert(self.tipCardList, tempList) + else + self:GetSanDaiTips(tempList, longLength * 2, removeSanDaiList) + end + else + table.insert(self.tipCardList, tempList) + end + end + end + end + end + end + end +end + +function M:GetSanDaiTips(tempList, childNum, cardList) + local childIndex = {} + local cardLen = #cardList + for i = 1, childNum do + childIndex[i] = i + end + while childIndex[1] <= cardLen - childNum do + if childIndex[childNum] == cardLen then + for i = childNum - 1, 1, -1 do + if childIndex[i] ~= cardLen + i - childNum then + childIndex[i] = childIndex[i] + 1 + for j = i + 1, childNum do + childIndex[j] = childIndex[j - 1] + 1 + end + end + end + else + childIndex[childNum] = childIndex[childNum] + 1 + end + local tempList_copy = {} + for i, v in ipairs(tempList) do + tempList_copy[i] = v + end + for i = 1, childNum do + table.insert(tempList_copy, cardList[childIndex[i]]) + end + table.insert(self.tipCardList, tempList_copy) + end +end + +function M:CheckAloneOrLong() + if self.cardNum == 1 and M:CheckType(CardType.one) then + return CardType.one + end + if self.long and M:CheckType(CardType.long) then + return CardType.long + end +end + +function M:CheckDuiZi() + if self.cardNum == 2 and self.cardSize == 1 and M:CheckType(CardType.dui) then + return CardType.dui + end + if self.cardNum % 2 == 0 and M:CheckType(CardType.duiLong) then + local last_k + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v == 2 then + if not last_k then + last_k = k + else + if math.abs(last_k - k) ~= 1 then + return + end + last_k = k + end + else + return + end + end + return CardType.duiLong + end +end + +--三带有着不同比大小极致,需要返回是哪些牌三带和最小的三带牌 +function M:CheckSanDai() + --三张 + if self.cardNum == 5 and M:CheckType(CardType.threeAndTwo) then + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v >= 3 then + return CardType.threeAndTwo, { k }, k + end + end + end + + if self.threelack and self.cardNum == 4 and self.cardSize == 2 and M:CheckType(CardType.lessThree) then + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v >= 3 then + return CardType.lessThree, { k }, k + end + end + return CardType.lessThree + end + + if self.threeNoBelt and self.cardNum == 3 and self.cardSize == 1 and M:CheckType(CardType.onlyThree) then + return CardType.onlyThree + end + + + --飞机 + local temp_normol_feiji + if self.cardNum % 5 == 0 then + temp_normol_feiji = self.cardNum / 5 + end + + if temp_normol_feiji and M:CheckType(CardType.normolPlant) then + local last_k + local key_table = {} + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v >= 3 then + table.insert(key_table, k) + if not last_k then + last_k = k + else + if math.abs(last_k - k) ~= 1 then + return + end + last_k = k + end + end + end + if #key_table >= temp_normol_feiji then + return CardType.normolPlant, key_table, key_table[1] + else + return + end + end + + print("liengmengCheckthreelack", self.threelack, self._flag_allCards) + + if self.threelack and M:CheckType(CardType.lessPlant) then + local last_k + local key_table = {} + local num_four = 0 + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v >= 3 then + if v == 4 then + num_four = 1 + end + table.insert(key_table, k) + print("liengmengCheckthreelack2", last_k, k) + + if not last_k then + last_k = k + else + if math.abs(last_k - k) ~= 1 then + return + end + last_k = k + end + end + end + print("liengmengCheckthreelack4", #key_table, self.cardNum - #key_table * 3 < #key_table * 2) + + if self.cardNum - #key_table * 3 < #key_table * 2 and not (self.cardNum == 4 and num_four == 1) then + return CardType.lessPlant, key_table, key_table[1] + else + return + end + end + + print("liengmengCheckplaneNoBelt", self.planeNoBelt, self.cardNum % 3) + + if self.planeNoBelt and self.cardNum % 3 == 0 and M:CheckType(CardType.onlyPlant) then + local last_k + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v == 3 then + if not last_k then + last_k = k + else + if math.abs(last_k - k) ~= 1 then + return + end + last_k = k + end + else + return + end + end + return CardType.onlyPlant + end +end + +function M:CheckZha() + if self.cardNum == 4 and self.cardSize == 1 then + return CardType.zha + end + + if self.fourDaiThree and self.cardNum == 7 and M:CheckType(CardType.zhaAndThreee) then + local flag_four + for i = 1, self.cardSize do + local k = self.cardListSord[i] + local v = self.cardList[k] + if v == 4 then + return CardType.zhaAndThreee, { k }, k + end + end + return + end +end + +function M:CheckType(type) + if type == CardType.duiLong then + return self._flag_checkLst or self._flag_fristCard or (type == self.type and self.cardNum == self.lastCardNum) + elseif type == CardType.lessPlant or type == CardType.lessThree then + return self._flag_checkLst or (self._flag_fristCard and self._flag_allCards) or type == self.type + else + return self._flag_checkLst or self._flag_fristCard or type == self.type + end +end + +function M:GetTipsList() + return self.tipCardList +end + +function M:GetTouchSet() + return self.touchCardSet +end + +function M:GetTouchCardMap() + return self.touchCardMao +end + +function M:Clear() + self.cardList = {} + self.cardListSord = {} + self.cardNum = 0 + self.cardSize = 0 + self.long = false + self._flag_checkLst = false + self.haveRuleCard = false +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXCardType.lua b/lua_probject/extend_project/extend/poker/sandaha/EXCardType.lua new file mode 100644 index 00000000..48c60df3 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXCardType.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 \ No newline at end of file diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXGameController.lua b/lua_probject/extend_project/extend/poker/sandaha/EXGameController.lua new file mode 100644 index 00000000..a3185a0d --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXGameController.lua @@ -0,0 +1,768 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 11:28 +--- + +local EXProtocol = import(".EXProtocol") +local EXGameEvent = import(".EXGameEvent") +local EXCardType = import(".EXCardType") +local EXPutError = { + "必须先出最小的牌", + "出牌不符合规定牌型 ", + "下家报单,请出最大的牌 ", + "炸弹不能拆" +} + +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() + self._eventmap[EXProtocol.EXMing_Card] = self.OnMingCard + self._eventmap[EXProtocol.EXInit_Card] = self.OnInitCard + self._eventmap[EXProtocol.EXOptions] = self.OnOptions + self._eventmap[EXProtocol.EXJiaofen] = self.OnJiaofen + self._eventmap[EXProtocol.EXIndex_Move] = self.OnIndexMove + self._eventmap[EXProtocol.EXPlay_Succ] = self.OnPlaySucc + self._eventmap[EXProtocol.EXPut_Error] = self.OnPutError + self._eventmap[EXProtocol.EXPass_Succ] = self.OnPassSucc + self._eventmap[EXProtocol.EXResult] = self.OnResult + self._eventmap[EXProtocol.EXBomb_Score] = self.OnBombScore + self._eventmap[EXProtocol.EXPiao_Tip] = self.OnPiaoTip + self._eventmap[EXProtocol.EXPiao_Action] = self.OnPiaoAction + self._eventmap[EXProtocol.EXConfirmToNextGameSucc] = self.OnConfrimToNextGameSucc + --self._eventmap[EXProtocol.EXOener] = self.Oener + -- self._eventmap[Protocol.GAME_EVT_PLAYER_JOIN] = self.OnEventPlayerEnter + self._eventmap[EXProtocol.PT_GAMETUOGUAN] = self.Game_TuoGuan + + self._eventmap[EXProtocol.GAME_EVENT_XIPAI] = self.OnEventXiPai + self._eventmap[EXProtocol.GAME_EVENT_NOTIFY_XIPAI] = self.OnEventXiPaiAnim + + self._eventmap[EXProtocol.GAME_EVT_CARDINHAND] = self.OnPlaySuccCheckHandCard + self._eventmap[EXProtocol.EXBomb_Score_New] = self.OnBompScoreNew + self._eventmap[EXProtocol.EXCheckCard_Succ] = self.OnCheckCard +end + +-- function M:Oener(evt_data) +-- local seat = evt_data["owner"] +-- self._cacheEvent:Enqueue(function() + +-- DispatchEvent(self._dispatcher,EXGameEvent.Oener,seat) +-- end) +-- end +-- function M:OnEventPlayerEnter(evt_data) +-- local p = self._room:NewPlayer() +-- local _user + +-- _user = User.new() +-- _user.account_id = evt_data["aid"] +-- _user.host_ip = evt_data["ip"] +-- _user.nick_name = evt_data["nick"] +-- _user.head_url = evt_data["portrait"] +-- _user.sex = evt_data["sex"] +-- _user.location = Location.new(evt_data["pos"] or "") +-- p.seat = evt_data["seat"] +-- p.ready = evt_data["ready"] == 1 and true or false +-- p.self_user = _user +-- p.line_state = 1 +-- p.total_score=evt_data["score"] +-- p.hp_info = evt_data["hp_info"] +-- -- p.total_score=self._room.room_config.energyTab==0 and evt_data["score"] or evt_data["score"]/10 + +-- DataManager.CurrenRoom:AddPlayer(p) +-- DispatchEvent(self._dispatcher,GameEvent.PlayerEnter, p) +-- end + + +function M:SendXiPaiAction(callBack) + local _data = {} + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.GAME_XIPAI, _data) + self.XiPaiCallBack = callBack +end + +function M:OnEventXiPai(evt_data) + if evt_data["result"] == 0 then + if self.XiPaiCallBack then + self.XiPaiCallBack() + end + else + ViewUtil.ErrorTip(1000000, "申请洗牌失败") + end +end + +function M:OnEventXiPaiAnim(evt_data) + printlog("洗牌动画===》》》》") + pt(evt_data) + local playeridList = evt_data["list"] + local my_isXiPai = false + local other_isXiPai = false + if playeridList and #playeridList > 0 then + for i = 1, #playeridList do + local p = self._room:GetPlayerById(playeridList[i]) + if p == self._room.self_player then + my_isXiPai = true + else + other_isXiPai = true + end + end + end + + self._cacheEvent:Enqueue(function() + DispatchEvent(self._dispatcher, EXGameEvent.EventXiPai, my_isXiPai, other_isXiPai) + end) +end + +function M:SendCard(cards, currentCard) + local _data = {} + _data["card"] = cards + _data["all_card"] = currentCard + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXSend_Card, _data) +end + +function M:SendCheckCard() + local _data = {} + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXCheckCard, _data) +end + +function M:SendCheckCardSend(data) + local _data = {} + _data = data + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXCheckCard_Send, _data) +end + +function M:SendPiao(piao) + local _data = {} + _data["id"] = piao + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXSend_Piao, _data) +end + +function M:SendPass() + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXSend_Guo) +end + +function M:SendInitCardEnd() + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXInit_Card_End) +end + +function M:ConformToNextGame() + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXConfirmToNextGame) +end + +function M:SendJiaofen(score) + local _data = {} + _data.callScore = score + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.EXJiaofen_Send, _data) +end + +function M:OnMingCard(evt_data) + if ViewManager.GetCurrenView().dview_class == LobbyView then + self:ReturnToRoom() + return + end + + local card = evt_data["mingpai"] + self._cacheEvent:Enqueue( + function() + self._room.ming_card = card + DispatchEvent(self._dispatcher, EXGameEvent.OnMingCard, card) + end + ) +end + +function M:OnInitCard(evt_data) + if ViewManager.GetCurrenView().dview_class == LobbyView then + self:ReturnToRoom() + return + end + + local cardlist = evt_data["cards"] + local round = evt_data["round"] + local bank_seat = evt_data["bank_seat"] + self._cacheEvent:Enqueue( + function() + for _, player in ipairs(self._room.player_list) do + player:Clear() + player.hand_count = #cardlist + player.hand_list = cardlist + end + + self._room.curren_round = round + self._room.banker_seat = bank_seat + DispatchEvent(self._dispatcher, EXGameEvent.OnInitCard, round, cardlist) + end + ) +end + +function M:OnBombScore(evt_data) + local scoreList = evt_data["gold_list"] + self._cacheEvent:Enqueue( + function() + -- for i = 1, #scoreList do + -- local score = scoreList[i].bom_score + -- local player = self._room:GetPlayerById(scoreList[i].aid) + -- player.total_score = player.total_score + score + -- end + -- DispatchEvent(self._dispatcher, EXGameEvent.OnBombScore, scoreList) + end + ) +end + +function M:OnPlaySucc(evt_data) + if pcall( + self.OnPlaySuccCheck, self, evt_data + ) then + + else + printlog("数据异常OnPlaySucc==>>>") + end +end + +function M:OnPlaySuccCheck(evt_data) + local seat = evt_data["player"] + local card_obj = evt_data["card_obj"] + local cards = card_obj["card_list"] + local remain = evt_data["remain"] -- 报单 + self._cacheEvent:Enqueue( + function() + local otherList = self:GetOtherSeatList(seat) + local player = self._room:GetPlayerBySeat(seat) + local out_card_list = self:ChangeCodeByFrom(cards, true) + player.hand_count = remain + -- if remain ~= 0 then + self._cardCheck:InitLastCard(out_card_list) + -- end + local card_type, number, length, plan_three_count = self:GetCardListInfo(out_card_list) + player.out_card_list = self:GetSortOutCardList(out_card_list, card_type, number, plan_three_count) + DispatchEvent(self._dispatcher, EXGameEvent.OnPlaySucc, player, remain, card_type, number, otherList, + length, out_card_list) + end + ) +end + +function M:OnPlaySuccCheckHandCard(evt_data) + local seat = evt_data["player"] + local cards = evt_data["handCards"] + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnPassSuccCheckCard, seat, cards) + end + ) +end + +function M:OnPassSucc(evt_data) + local seat = evt_data["seat"] + self._cacheEvent:Enqueue( + function() + local p = self._room:GetPlayerBySeat(seat) + p.out_card_list = { 0 } + DispatchEvent(self._dispatcher, EXGameEvent.OnPassSucc, p) + end + ) +end + +function M:OnPutError(evt_data) + local code = evt_data["error"] + self._cacheEvent:Enqueue( + function() + local error_str = self:GetErrorStr(code) + DispatchEvent(self._dispatcher, EXGameEvent.OnErrorTip, error_str) + end + ) +end + +function M:TuoGuan(isTuo) + local _data = {} + _data["tuoguan"] = isTuo + local _client = ControllerManager.GameNetClinet + _client:send(EXProtocol.SEND_TUOGUAN, _data) +end + +function M:Game_TuoGuan(evt_data) + local tuoguan = evt_data["tuoguan"] + local seat = evt_data["seat"] + self._cacheEvent:Enqueue(function() + DispatchEvent(self._dispatcher, EXGameEvent.Game_TuoGuan, tuoguan, seat) + end) +end + +function M:OnIndexMove(evt_data) + local seat = evt_data["index"] + self._cacheEvent:Enqueue( + function() + self._room.curren_turn_seat = seat + self._room.is_new_bout = self:GetIsNewBout(seat) + DispatchEvent(self._dispatcher, EXGameEvent.OnIndexMove, seat) + end + ) +end + +function M:OnOptions(evt_data) + local play = evt_data["play"] + local pass = evt_data["pass"] + + self._cacheEvent:Enqueue( + function() + local lastCardList = self:GetLastCardList(self._room.self_player.seat) + local cardType, cardNum, cardLength = self:GetCardListInfo(lastCardList) + DispatchEvent(self._dispatcher, EXGameEvent.OnOptions, play, cardType, cardNum, cardLength, pass, + lastCardList) + end + ) +end + +function M:OnJiaofen(evt_data) + local seat = evt_data["seat"] + + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnJiaofen, seat) + end + ) +end + +function M:OnPiaoTip(evt_data) + if ViewManager.GetCurrenView().dview_class == LobbyView then + self:ReturnToRoom() + return + end + + local piao = evt_data["piao"] + local reload = evt_data["reload"] + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnPiaoTips, piao, reload) + end + ) +end + +function M:OnPiaoAction(evt_data) + local seat = evt_data["seat"] + local piao = evt_data["piao"] + + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnPiaoAction, seat, piao) + end + ) +end + +function M:OnResult(evt_data) + local result_type = evt_data["type"] + + local info = evt_data["info"] + local winseat = evt_data["winseat"] + local remaincards = evt_data["remaincards"] + DataManager.CurrenRoom.xipaiScore = evt_data["xipai_score"] + --printlog("wwwwwwwwwwwwwwwwwwwww1111111 ",result_type) + --pt(evt_data) + if result_type == 1 then + local over = 1 + ControllerManager.SetGameNetClient(nil, true) + self._cacheEvent:Enqueue( + function() + for i = 1, #info do + local p = self._room:GetPlayerBySeat(info[i]["seat"]) + print("lingmeng log200", info[i]["score"], p.total_score) + info[i].card_score = info[i]["score"] - p.total_score + p.total_score = info[i]["score"] + info[i]["self_user"] = p.self_user + end + + DispatchEvent(self._dispatcher, EXGameEvent.OnResult, over, info, winseat, remaincards) + end + ) + elseif result_type == 0 then + local over = 0 + self._cacheEvent:Enqueue( + function() + for i = 1, #info do + local p = self._room:GetPlayerBySeat(info[i]["seat"]) + print("lingmeng log200", info[i]["score"], p.total_score) + info[i].card_score = info[i]["score"] - p.total_score + p.total_score = info[i]["score"] + info[i]["self_user"] = p.self_user + end + DispatchEvent(self._dispatcher, EXGameEvent.OnResult, over, info, winseat, remaincards) + end + ) + else + local dissolve = 1 + ControllerManager.SetGameNetClient(nil, true) + for i = 1, #info do + local p = self._room:GetPlayerBySeat(info[i]["seat"]) + p.total_score = info[i]["score"] + info[i]["self_user"] = p.self_user + end + -- ControllerManager.ChangeController(LoddyController) + DispatchEvent(self._dispatcher, EXGameEvent.OnResultByDissolve, result_type, info, winseat, dissolve) + end +end + +function M:OnConfrimToNextGameSucc(evt_data) + local aid = evt_data["aid"] + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnConfrimToNextGameSucc, aid) + end + ) +end + +function M:Game_TuoGuan(evt_data) + local tuoguan = evt_data["tuoguan"] + local seat = evt_data["seat"] + self._cacheEvent:Enqueue(function() + DispatchEvent(self._dispatcher, EXGameEvent.Game_TuoGuan, tuoguan, seat) + end) +end + +function M:ChangeCodeByFrom(cardList, isSort) + isSort = isSort or false + local new_card_list = {} + for i = 1, #cardList do + local flower = math.floor(cardList[i] / 100) + local number = cardList[i] % 100 + if number == 2 then + number = 15 + end + local card = number * 10 + flower + new_card_list[#new_card_list + 1] = card + end + return isSort == true and table.sort(new_card_list) or new_card_list +end + +function M:GetOtherSeatList(seat) + local list = {} + for i = 1, self._room.room_config.people_num do + if seat ~= i then + list[#list + 1] = i + end + end + return list +end + +-- +function M:GetIsNewBout(seat) + local passCount = 0 + for i = 1, #self._room.player_list do + local player = self._room.player_list[i] + if seat ~= player.seat then + local isPass = self:GetIsPass(player.out_card_list) + if isPass then + passCount = passCount + 1 + end + end + end + if passCount == self._room.room_config.people_num - 1 then + return true + else + return false + end +end + +function M:GetLastSeat(seat) + local last_seat = seat - 1 + if last_seat < 1 then + last_seat = last_seat + self._room.room_config.people_num + end + return last_seat +end + +function M:GetLastCardList(seat) + local last_seat = self:GetLastSeat(seat) + local player = self._room:GetPlayerBySeat(last_seat) + local isPass = self:GetIsPass(player.out_card_list) + if isPass then + if self._room.room_config.people_num == 2 then + return {} + end + local last_seat_2 = self:GetLastSeat(last_seat) + local player_2 = self._room:GetPlayerBySeat(last_seat_2) + local isPass_2 = self:GetIsPass(player_2.out_card_list) + if isPass_2 then + return {} + else + return player_2.out_card_list + end + else + return player.out_card_list + end +end + +function M:GetErrorStr(code) + return EXPutError[code + 1] +end + +function M:GetSortOutCardList(outCardList, cardType, cardNumber, plan_three_count) + if cardType == 3 or cardType == 5 or cardType == 6 then + local removeList = {} + for i = #outCardList, 1, -1 do + local card = outCardList[i] + if math.floor(card / 10) == cardNumber then + removeList[#removeList + 1] = card + table.remove(outCardList, i) + end + end + for i = 1, #removeList do + table.insert(outCardList, 1, removeList[i]) + end + elseif cardType >= 7 and cardType <= 9 then + local removeList = {} + for i = #outCardList, 1, -1 do + local card = outCardList[i] + if math.floor(card / 10) <= cardNumber and math.floor(card / 10) > cardNumber - plan_three_count then + removeList[#removeList + 1] = card + table.remove(outCardList, i) + end + end + for i = 1, #removeList do + table.insert(outCardList, 1, removeList[i]) + end + end + return outCardList +end + +--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:GetCardListInfo(cardlist) + if #cardlist == 0 then + return 0, 0, 0, 0 + end + -- 检测牌型 + local card_type, card_num, card_length, plan_three_count = EXCardType.None, 0, #cardlist, 0 + local card_map = self:GetCardMapByList(cardlist) + + if #cardlist == 1 then + card_type = EXCardType.OneCard + card_num = math.floor(cardlist[1] / 10) + elseif #cardlist == 2 then + card_type = EXCardType.OnePair + card_num = math.floor(cardlist[1] / 10) + elseif #cardlist == 3 then + card_num = math.floor(cardlist[1] / 10) + if card_num == 14 and DataManager.CurrenRoom.room_config.threeA == 1 then + -- body + card_type = EXCardType.Bomb + else + card_type = EXCardType.Three + end + elseif #cardlist == 4 then + local max_key = 0 + for k, v in pairs(card_map) do + if #v == 4 then + card_type = EXCardType.Bomb + card_num = k + elseif #v == 3 then + card_type = EXCardType.ThreeAndOne + card_num = k + elseif #v == 2 then + if k > max_key then + max_key = k + end + card_type = EXCardType.Pairs + card_num = max_key + end + end + elseif #cardlist == 5 then + local count, max_key = 0, 0 + for k, v in pairs(card_map) do + if #v >= 3 then + card_type = EXCardType.ThreeAndTwo + card_num = k + elseif #v == 1 then + count = count + 1 + if k > max_key then + max_key = k + end + if count == 5 then + card_type = EXCardType.Straight + card_num = max_key + end + end + end + elseif #cardlist == 7 then + local count, max_key = 0, 0 + for k, v in pairs(card_map) do + if #v >= 4 then + card_type = EXCardType.FourAndtThree + card_num = k + elseif #v == 1 then + count = count + 1 + if k > max_key then + max_key = k + end + if count == 7 then + card_type = EXCardType.Straight + card_num = max_key + end + end + end + else + local one_count, two_count, three_count = 0, 0, 0 + local max_one_key, max_two_key, max_three_key = 0, 0, 0 + + for k, v in pairs(card_map) do + if #v == 2 then + if k > max_two_key then + max_two_key = k + end + two_count = two_count + 1 + if two_count == #cardlist / 2 then + card_type = EXCardType.Pairs + card_num = max_two_key + end + elseif #v == 1 then + if k > max_one_key then + max_one_key = k + end + one_count = one_count + 1 + if one_count == #cardlist then + card_type = EXCardType.Straight + card_num = max_one_key + end + elseif #v == 3 then + if max_three_key == 0 then + max_three_key = k + three_count = three_count + 1 + elseif k > max_three_key and k == max_three_key + 1 then + max_three_key = k + three_count = three_count + 1 + elseif k < max_three_key and k == max_three_key - 1 then + max_three_key = k + three_count = three_count + 1 + -- else + -- max_three_key = k + end + + --three_count = three_count + 1 + end + end + -- plan_three_count = three_count + -- if three_count * 5 >= #cardlist then + -- card_type = EXCardType.PlaneAndTwo + -- card_num = max_three_key + -- elseif three_count * 4 >= #cardlist then + -- card_type = EXCardType.PlaneAndOne + -- card_num = max_three_key + -- elseif three_count * 3 >= #cardlist then + -- card_type = EXCardType.Plane + -- card_num = max_three_key + -- end + plan_three_count = three_count + + if three_count * 3 == #cardlist then + card_type = EXCardType.Plane + card_num = max_three_key + elseif three_count * 4 >= #cardlist and #cardlist % 4 == 0 then + card_type = EXCardType.PlaneAndOne + card_num = max_three_key + elseif three_count * 5 >= #cardlist and #cardlist % 5 == 0 then + card_type = EXCardType.PlaneAndTwo + card_num = max_three_key + end + end + + return card_type, card_num, card_length, plan_three_count +end + +function M:GetCardMapByList(cardlist) + local card_map = {} + for i = 1, #cardlist do + local card = cardlist[i] + local card_num = math.floor(cardlist[i] / 10) + if card_map[card_num] == nil then + card_map[card_num] = { card } + else + card_map[card_num][#card_map[card_num] + 1] = card + end + end + return card_map +end + +function M:GetIsPass(cardlist) + if #cardlist == 0 then + return true + end + if cardlist[1] ~= nil and cardlist[1] == 0 then + return true + end + return false +end + +--请求离开房间 +function M:LevelRoom(callBack) + local _client = ControllerManager.GameNetClinet + if not _client then + return + end + _client:send( + Protocol.GAME_EXIT_ROOM, + nil, + function(res) + if res.ReturnCode == 0 then + ControllerManager.ChangeController(LoddyController) + elseif res.ReturnCode == 27 then + ViewUtil.ErrorTip(res.ReturnCode, "退出房间失败!") + end + callBack(res) + end + ) +end + +--炸弹分显示,新协议 +function M:OnBompScoreNew(evt_data) + local scoreList = evt_data["PlayerScoreList"] + self._cacheEvent:Enqueue( + function() + for i = 1, #scoreList do + local score = scoreList[i].pomSore + local player = self._room:GetPlayerBySeat(scoreList[i].seat) + player.total_score = player.total_score + score + end + DispatchEvent(self._dispatcher, EXGameEvent.OnBompScoreNew, scoreList) + end + ) +end + +function M:OnCheckCard(evt_data) + self._cacheEvent:Enqueue( + function() + DispatchEvent(self._dispatcher, EXGameEvent.OnCheckCard, evt_data) + end + ) +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXGameEvent.lua b/lua_probject/extend_project/extend/poker/sandaha/EXGameEvent.lua new file mode 100644 index 00000000..4cb4da63 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXGameEvent.lua @@ -0,0 +1,26 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:55 +--- +local EXGameEvent = { + OnMingCard = "OnMingCard", + OnInitCard = "OnInitCard", + OnOptions = "OnOptions", + OnPiaoTips = "OnPiaoTips", + OnPiaoAction = "OnPiaoAction", + OnBombScore = "OnBombScore", + OnIndexMove = "OnIndexMove", + OnPlaySucc = "OnPlaySucc", + OnErrorTip = "OnErrorTip", + OnPassSucc = "OnPassSucc", + OnResult = "OnResult", + OnResultByDissolve = "OnResultByDissolve", + OnConfrimToNextGameSucc = "OnConfrimToNextGameSucc", + Game_TuoGuan = "Game_TuoGuan", + EventXiPai = "EventXiPai", + OnPassSuccCheckCard = "OnPassSuccCheckCard", + OnBompScoreNew = "OnBompScoreNew", + OnCheckCard = "OnCheckCard", + OnJiaofen = "OnJiaofen" +} +return EXGameEvent diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXGameInfo.lua b/lua_probject/extend_project/extend/poker/sandaha/EXGameInfo.lua new file mode 100644 index 00000000..83b9e298 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXGameInfo.lua @@ -0,0 +1,396 @@ +--- +--- 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/sandaha/ui/Info_Poker_SanDaHa") + return self +end + +function M:FillData(view, index) + self._maxPlayer = 2 -- 默认玩家人数 + self._roundChoice = 5 -- 回合选项数 + + -- if oldGameVersion == 1 then + -- self._config = UIPackage.CreateObjectFromURL(self:GetPageURL()) + + + local com_editSetting = self._config:GetChild("com_editSetting") + + com_editSetting:GetController("cGps").selectedIndex = 2 + + local ctr_round = self._config:GetController("round") + if ctr_round.selectedIndex == 0 then + com_editSetting:GetController("oneRound").selectedIndex = 1 + else + com_editSetting:GetController("oneRound").selectedIndex = 0 + end + self._config:GetController("round").onChanged:Set(function() + if ctr_round.selectedIndex == 0 then + com_editSetting:GetController("oneRound").selectedIndex = 1 + else + com_editSetting:GetController("oneRound").selectedIndex = 0 + end + end) + -- else + -- self._config = UIPackage.CreateObjectFromURL("ui://Info_Poker_SanDaHa/Creat_EXyueyang") + -- end + + + -- self._config:GetChild("people_2").onClick:Set(function() + -- self._config:GetController("rule").selectedIndex = 0 + -- end) + + -- local piao = self._config:GetController("piao") + -- local daniao = self._config:GetController("daniao") + + -- piao.onChanged:Add(function() + -- if piao.selectedIndex ~= 0 then + -- daniao.selectedIndex = 0 + -- end + -- end) + + -- daniao.onChanged:Add(function() + -- if daniao.selectedIndex ~= 0 then + -- piao.selectedIndex = 0 + -- end + -- end) +end + +local _help_url = "ui://Info_Poker_SanDaHa/Com_help" +function M:GetHelpUrl() + return _help_url +end + +local _icon_url = "ui://Info_Poker_SanDaHa/icon" +function M:GetIconUrl() + return "ui://Lobby/paodekuai2", "ui://Lobby/paodekuai1" +end + +local _icon_url1 = "ui://Info_Poker_SanDaHa/icon1" +function M:GetIconUrl1() + return _icon_url1 +end + +function M:GetPageURL() + return "ui://Info_Poker_SanDaHa/Label_Detail_Play" +end + +local _play_list = { "15张玩法", "16张玩法" } +function M:GetPlayList() + return _play_list +end + +function M:LoadConfigData(data) + local _config = self._config + pt(data) + _config:GetController("round").selectedIndex = data.opt - 1 + _config:GetController("handcard").selectedIndex = 2 - data.leaf + _config:GetController("peopleNum").selectedIndex = 3 - data.maxPlayers + _config:GetController("showCardNum").selectedIndex = 1 - data.showlength + _config:GetController("wanfa1_1").selectedIndex = data.planeNoBelt + _config:GetController("wanfa1_2").selectedIndex = data.planelack + _config:GetController("wanfa1_3").selectedIndex = data.fourDaiThree and 1 or 0 + _config:GetController("wanfa1_4").selectedIndex = data.heartten - 1 + _config:GetController("wanfa1_5").selectedIndex = 2 - data.rule + _config:GetController("wanfa2_1").selectedIndex = data.specilAdd + + -- local sandaidan = data.sandaidan + -- if sandaidan ~= nil and sandaidan == 1 then + -- _config:GetChild("sandaidan").selected = true + + -- _config:GetChild("planelack").selected = false + -- _config:GetChild("Threelack").selected = false + -- else + -- _config:GetChild("sandaidan").selected = false + + -- _config:GetChild("planelack").selected = data.planelack == 1 and true or false + -- _config:GetChild("Threelack").selected = data.threelack == 1 and true or false + -- end + + -- local fs = data.fs + -- if fs ~= nil and fs == 1 then + -- _config:GetChild("fan_sprint").selected = true + -- else + -- _config:GetChild("fan_sprint").selected = false + -- end + + -- local ba = data.ba + -- if ba ~= nil and ba == 1 then + -- _config:GetChild("boom_add").selected = true + -- else + -- _config:GetChild("boom_add").selected = false + -- end + + -- _config:GetChild("ThreeA").selected = data.threeA == 1 and true or false + + -- if data.piao ~= nil then + -- _config:GetController("piao").selectedIndex = data.piao + -- end + + -- if data.daniao ~= nil then + -- _config:GetController("daniao").selectedIndex = data.daniao + -- end + + -- if _config:GetChild("fourBeltThree") then + -- _config:GetChild("fourBeltThree").selected = data.fourDaiTwo + -- end + + -- if _config:GetChild("fourBeltTwo") then + -- _config:GetChild("fourBeltTwo").selected = data.fourDaiThree + -- end + + -- if _config:GetChild("xipai") then + -- _config:GetChild("xipai").selected = data.xi_pai + -- end + + + -- if oldGameVersion == 2 then + -- self.xipaiValueText.text = data.xi_pai_score / 1000 + -- self.xipaiValue = data.xi_pai_score / 1000 + + -- self.anchouValueText.text = data.an_chou_score / 1000 + -- self.anchouValue = data.an_chou_score / 1000 + -- end +end + +function M:SelectedConfigData() + local _config = self._config + local round = _config:GetController("round").selectedIndex + local handcard = _config:GetController("handcard").selectedIndex + local peopleNum = _config:GetController("peopleNum").selectedIndex + local showCardNum = _config:GetController("showCardNum").selectedIndex + local wanfa1_1 = _config:GetController("wanfa1_1").selectedIndex + local wanfa1_2 = _config:GetController("wanfa1_2").selectedIndex + local wanfa1_3 = _config:GetController("wanfa1_3").selectedIndex + local wanfa1_4 = _config:GetController("wanfa1_4").selectedIndex + local wanfa1_5 = _config:GetController("wanfa1_5").selectedIndex + local wanfa2_1 = _config:GetController("wanfa2_1").selectedIndex + + -- local rule = _config:GetController("rule").selectedIndex + -- local leaf = _config:GetController("play_list").selectedIndex + -- local willBeOut = _config:GetController("willBeOut").selectedIndex + -- local bombSpring = _config:GetController("bombSpring").selectedIndex + -- local heart10 = _config:GetController("heart10").selectedIndex + -- local player_num = _config:GetController("player_num").selectedIndex + -- local AA = _config:GetController("Cost").selectedIndex + -- local showlength = _config:GetController("showlength").selectedIndex + -- local fourBeltThree = _config:GetController("fourBeltThree").selectedIndex + -- local demolition = _config:GetController("demolition").selectedIndex + -- local fangzuobi = _config:GetController("fangzuobi").selectedIndex + -- local planelack = _config:GetChild("planelack").selected and 1 or 0 + -- local threelack = _config:GetChild("Threelack").selected and 1 or 0 + -- local ThreeA = _config:GetChild("ThreeA").selected and 1 or 0 + -- local piao = _config:GetController("piao").selectedIndex + -- local daniao = _config:GetController("daniao").selectedIndex + -- local sandaidan = _config:GetController("sandaidan").selectedIndex + -- local ba = _config:GetChild("boom_add").selected and 1 or 0 + -- local fs = _config:GetChild("fan_sprint").selected and 1 or 0 + + ----- + local fourDaiTwo = false + if _config:GetChild("fourBeltThree") then + fourDaiTwo = _config:GetChild("fourBeltThree").selected + end + + local fourDaiThree = false + if _config:GetChild("fourBeltTwo") then + fourDaiThree = _config:GetChild("fourBeltTwo").selected + end + + local xi_pai = false + if _config:GetChild("xipai") then + xi_pai = _config:GetChild("xipai").selected + end + + ---- + local _data = {} + _data["account_id"] = DataManager.SelfUser.Id + -- _data["AA"] = AA + -- _data["willBeOut"] = willBeOut + 1 + -- _data["minboom"] = (willBeOut == 0 and leaf == 1 and player_num == 1) and bombSpring + 1 or 2 + -- _data["fourBeltThree"] = fourBeltThree + -- _data["demolition"] = demolition + -- _data["fangzuobi"] = fangzuobi + -- _data["threeA"] = ThreeA + -- _data["piao"] = piao + -- _data["daniao"] = daniao + -- _data["sandaidan"] = sandaidan + -- _data["ba"] = ba + -- _data["fs"] = fs + + _data["fourDaiTwo"] = fourDaiTwo + + -----------------------lingmeng---------------------------- + + _data["AA"] = 0 + _data["willBeOut"] = 1 + _data["minboom"] = 2 + _data["fourBeltThree"] = 0 + _data["demolition"] = 0 + _data["fangzuobi"] = 0 + _data["threeA"] = 0 + _data["piao"] = 0 + _data["daniao"] = 0 + _data["sandaidan"] = 0 + _data["ba"] = 0 + _data["fs"] = 0 + + + _data["leaf"] = handcard == 0 and 2 or handcard --手牌 1是15张,2是16张 + _data["opt"] = round + 1 --局数 1是10局 2是15局 3是20局 ("未知") + _data["maxPlayers"] = peopleNum == 1 and 4 or 3 --人数 2是2人 3是三人 + _data["rule"] = wanfa1_5 == 0 and 2 or 1 --黑桃3必出 2是选择了该玩法 1是没有该玩法 + _data["showlength"] = (showCardNum + 1) % 2 --显示手牌数量 0是不显示 1是显示 + _data["planeNoBelt"] = wanfa1_1 --飞机不带 + _data["threeNoBelt"] = wanfa1_1 --三张不带 + _data["planelack"] = wanfa1_2 --飞机可少带接完 + _data["threelack"] = wanfa1_2 --三张可少带接完 + _data["fourDaiThree"] = false --四带三 false没有该玩法 true有该玩法 + if wanfa1_3 == 1 then + _data["fourDaiThree"] = true + end + _data["heartten"] = wanfa1_4 + 1 --红桃扎鸟 1没有该玩法 2有该玩法 似乎说的是红桃10分数翻倍,具体要问江西那边 + _data["specilAdd"] = wanfa2_1 --特殊加分规则:只出一张加扣10分,出2-3张加扣5分 0没有该玩法 1有该玩法 + + + + + ----------------------------------------------------------- + + + -- if willBeOut == 1 then + -- -- body + -- _data["planelack"] = 0 + -- _data["threelack"] = 0 + -- else + -- if sandaidan == 1 then + -- _data["planelack"] = 0 + -- _data["threelack"] = 0 + -- else + -- _data["planelack"] = planelack + -- _data["threelack"] = threelack + -- end + -- end + + _data['xi_pai'] = xi_pai + + local xi_pai_score = 1 + local an_chou_score = 1 + + -- if oldGameVersion == 2 then + -- xi_pai_score = self.xipaiValue + -- an_chou_score = self.anchouValue + -- end + + _data['xi_pai_score'] = xi_pai_score * 1000 + _data['an_chou_score'] = an_chou_score * 1000 + + return _data +end + +function M:OnChangeOption(ctype, pay_obj) + IGameInfo.OnChangeOption(self, ctype, pay_obj) + local peopleNum = self._config:GetController("peopleNum") + peopleNum.onChanged:Set(function() + self._maxPlayer = peopleNum.selectedIndex == 1 and 2 or 3 + self:ShowVariablePrice(ctype, pay_obj) + end) +end + +function M:LoadConfigToDetail(data, hpdata) + local configData = data + if type(data) == 'string' then + configData = json.decode(data) + end + + local hpData = configData.hpData or hpdata + if type(hpData) == 'string' then + if hpData == "null" then + hpData = nil + else + hpData = json.decode(hpData) + end + end + local returnString = "" + + if hpData then + returnString = string.format("%s倍,", hpData.times / 1000) + end + + returnString = string.format("%s人数%s人", returnString, configData.maxPlayers) + + if hpData then + returnString = string.format("%s %s局", returnString, hpData.maxRound) + end + if configData.leaf then + returnString = string.format("%s,%s", returnString, configData.leaf == 1 and "15张手牌" or "16张手牌") + end + if configData.showlength then + returnString = string.format("%s,%s", returnString, configData.showlength == 0 and "不显示牌数" or "显示牌数") + end + if configData.planeNoBelt and configData.threeNoBelt then + if configData.planeNoBelt == 0 and configData.threeNoBelt == 0 then + returnString = string.format("%s,%s", returnString, "三张、飞机必带") + elseif configData.planeNoBelt == 0 then + returnString = string.format("%s,%s", returnString, "三张必带、飞机可不带") + elseif configData.threeNoBelt == 0 then + returnString = string.format("%s,%s", returnString, "三张可不带、飞机必带") + else + returnString = string.format("%s,%s", returnString, "三张、飞机可不带") + end + else + if configData.planeNoBelt then + returnString = string.format("%s%s", returnString, configData.planeNoBelt == 0 and "" or ",飞机可不带") + end + if configData.threeNoBelt then + returnString = string.format("%s%s", returnString, configData.threeNoBelt == 0 and "" or ",三张可不带") + end + end + + if configData.planelack and configData.threelack then + if configData.planelack == 0 and configData.threelack == 0 then + returnString = string.format("%s,%s", returnString, "三张、飞机不可少带接完") + elseif configData.planelack == 0 then + returnString = string.format("%s,%s", returnString, "三张不可少带接完、飞机可少带接完") + elseif configData.threelack == 0 then + returnString = string.format("%s,%s", returnString, "三张可少带接完、飞机不可少带接完") + else + returnString = string.format("%s,%s", returnString, "三张、飞机可少带接完") + end + else + if configData.planelack then + returnString = string.format("%s%s", returnString, configData.planelack == 0 and "" or ",飞机可少带") + end + if configData.threelack then + returnString = string.format("%s%s", returnString, configData.threelack == 0 and "" or ",三张可少带") + end + end + if configData.fourDaiThree then + returnString = string.format("%s%s", returnString, configData.fourDaiThree and ",四带三" or "") + end + if configData.heartten then + returnString = string.format("%s%s", returnString, configData.heartten == 1 and "" or ",红桃10扎鸟") + end + if configData.rule then + returnString = string.format("%s%s", returnString, + configData.rule == 1 and ",首局黑桃三必出" or "") + end + if configData.specilAdd then + returnString = string.format("%s%s", returnString, configData.specilAdd == 0 and "" or ",只出一张加扣10分,出2-3张加扣5分") + end + + returnString = returnString .. IGameInfo.LoadConfigToDetail(self, configData, hpData) + + return returnString +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXMainView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXMainView.lua new file mode 100644 index 00000000..59201477 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXMainView.lua @@ -0,0 +1,1685 @@ +--- +--- 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 EXCardCheck = import(".CardCheck") +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/sandaha/bg/bg1', thumb = 'ui://Extend_Poker_SanDaHa/table_bg1' }, + { id = 2, url = 'extend/poker/sandaha/bg/bg2', thumb = 'ui://Extend_Poker_SanDaHa/table_bg2' }, + { id = 3, url = 'extend/poker/sandaha/bg/bg3', thumb = 'ui://Extend_Poker_SanDaHa/table_bg3' } +} + +function M:InitView(url) + local room = self._room + self._full = true + UIPackage.AddPackage("extend/poker/sandaha/ui/Extend_Poker_SanDaHa") + PKMainView.InitView(self, "ui://Extend_Poker_SanDaHa/EXNew_" .. 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.CloseModalWait2() + 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._view_click = self._view:GetChild('click') + if self._view_click then + self._view_click.onClick:Set(function() + self._gamectr:SendCheckCard() + end) + 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._cardCheck = EXCardCheck:InitFlag() + self._gamectr._cardCheck = self._cardCheck + self:UpdateRound(self._room.curren_round or 0) + + self._view:GetChild('text_roomId').text = self._room.room_id + self._ctr_inClear = self._view:GetController('Inclear') + self._view:GetChild('btn_ready_inClear').onClick:Set(function() + if self.result_view and self.result_view._view then + self._ctr_inClear.selectedIndex = 0 + self.result_view:ClearReady() + else + self.result_view = nil + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:ConformToNextGame() + self:ClearOk() + end + end) + ---------------------------------------------------- + --闹钟倒计时报时 + self._leftTime_xiangling = 5 + self._leftTime_bianhong = true + + local btn_witness = self._view:GetChild('btn_pangGuang') + if btn_witness then + btn_witness.onClick:Set(function() + self._view:GetController('witness').selectedIndex = 1 + end) + end + ----------屏幕大小发生变化 + GRoot.inst.onSizeChanged:Set(function() + for _, player in ipairs(self._room.player_list) do + local player_card_info = self._player_card_info[self:GetPos(player.seat)] + + if player.seat == self._room.self_player.seat then + player_card_info:InitPoker(player.hand_list, false) + else + end + end + 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(...) + ViewUtil.PlaySound("SanDaHa_PK", "base/main_majiang/sound/user_enter.mp3") + 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(...) + ViewUtil.PlaySound("SanDaHa_PK", "base/main_majiang/sound/user_ready.mp3") + 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(...) + ViewUtil.PlaySound("SanDaHa_PK", "base/main_majiang/sound/user_leave.mp3") + 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").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.CloseModalWait2() + 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 + -- if self._room.room_config.people_num == 3 then + -- self:PlayCardEff(403) + -- end + end) + + _gamectr:AddEventListener(EXGameEvent.OnInitCard, function(...) + local arg = { ... } + local round = arg[1] + local cardlist = arg[2] + self._popEvent = false + + if self.destory_win ~= nil then + coroutine.stop(self.destory_win) + end + 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._ctr_inClear.selectedIndex = 0 + self:UpdateRound(round) + -- ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/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").text = p.hand_count + end + -- p:Clear() + head_info:MarkBank(p.seat == _room.banker_seat) + 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 + + if self._room.room_config.people_num == 3 and round == 1 then + local effect = self._view:GetTransition(string.format('to_%s', self:GetPos(self._room.banker_seat))) + effect:Play(1, 0, function() + self._popEvent = true + end) + else + self._popEvent = true + 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] + -- if self.MypokerList ~= nil then + -- -- body + -- card_info:Clear() + -- card_info:InitPoker(self.MypokerList, false) + -- self.MypokerList = nil + -- end + -- end + self._leftClock_continue = coroutine.start(function() + coroutine.wait(0.02) + card_info:SetOutCardInfo(nil, false) + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + if i == index then + card_info._ctr_time_clock.selectedIndex = 1 + self._tex_leftTime = card_info._view_comp_clock + else + card_info._ctr_time_clock.selectedIndex = 0 + end + -- if self._room.is_new_bout then + -- card_info.ctr_outpoker.selectedIndex = 0 + -- end + end + if self._left_time and self._left_time < 15 then + self._left_time = 15 + end + end) + + + 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(...) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/playcard_chup.mp3") + -- self._popEvent = false + 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] + local lastCardList = arg[7] + self.ctr_time.selectedIndex = 0 + local index = self:GetPos(p.seat) + if index == 1 then + self.caozuo = 0 + end + coroutine.stop(self._leftClock_continue) + + 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").text = card_number + end + end + head_info:SetBaoDan(card_number == 1) + local card_info = self._player_card_info[index] + card_info:SetOutCardInfo(p.out_card_list, false, true) + card_info._ctr_time_clock.selectedIndex = 0 + + 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 + -- self:_Effect(cardstype, p) + -- else + -- if cardstype == 11 and cardstype ~= 12 then + -- self:_Effect(cardstype, p) + -- end + -- end + self:_Effect(self._cardCheck.type, p) + print("lingmeng end _Effect", self._cardCheck.type) + self:PlaySound(p.self_user.sex, + self:GetSoundFileName(self._cardCheck.type, num, self._room.is_new_bout)) + -- 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() + self:PlaySound(p.self_user.sex, "card_1") + end) + end + end) + _gamectr:AddEventListener(EXGameEvent.OnCheckCard, function(...) + local arg = { ... } + local evt_data = arg[1] + local list = self._view:GetChild('comp_checkCard'):GetChild('list') + list:RemoveChildrenToPool() + for k, v in pairs(evt_data) do + local obj = list:AddItemFromPool() + table.sort(v, function(a, b) + if a % 100 == b % 100 then + return math.floor(a / 100) > math.floor(b / 100) + else + return a % 100 > b % 100 + end + end) + local titleText = "" + if k == "first" then + titleText = "手牌1:" + elseif k == "second" then + titleText = "手牌2:" + elseif k == "three" then + titleText = "手牌3:" + end + obj.text = titleText + obj:GetChild('click').onClick:Set(function() + evt_data.choic = k + self._gamectr:SendCheckCardSend(evt_data) + self._view:GetController('check').selectedIndex = 0 + end) + obj:GetChild('List_Out').itemRenderer = function(index, obj) + local code = v[index + 1] + if code % 100 == 15 then + code = math.floor(code / 100) * 100 + 2 + end + obj:GetChild('icon').url = string.format("ui://Main_Poker/%s", code) + end + obj:GetChild('List_Out').numItems = #v + end + self._view:GetController('check').selectedIndex = 1 + 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(...) + self._popEvent = false + 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 + coroutine.stop(self._leftClock_continue) + card_info._ctr_time_clock.selectedIndex = 0 + card_info:SetOutCardInfo(nil, true) + self:PlaySound(p.self_user.sex, "pass_" .. math.random(1, 4)) + coroutine.start(function() + coroutine.wait(1) + self._popEvent = true + end) + 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 lastCardList = arg[6] + 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]._cardCheck:InitLastCard(lastCardList) + -- self._player_card_info[1]:ShowOutCardOption(ctr_number, card_type, card_number, card_length, m, play, zdts) + card_info:ShowOutCardOption2(lastCardList, ctr_number, m) + 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.dismissWin ~= nil then + self.dismissWin:Destroy() + end + self.dismissWin = nil + 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() + if win_seat == self._room.self_player.seat then + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + else + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/lose_music.mp3") + end + coroutine.stop(self._leftClock_continue) + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info._ctr_time_clock.selectedIndex = 0 + self._left_time = 0 + end + -- -- print("11111111111111") + -- 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_SanDaHa/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("SanDaHa_PK", "base/common/sound/win new.mp3") + -- end + -- -- local url = #sprint_seat_list > 0 and "ui://Extend_Poker_SanDaHa/Spring" or "ui://Extend_Poker_SanDaHa/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_SanDaHa/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)] + head_info:SetBaoDan(false) + + head_info._view:GetChild('text_jifen').text = player.score + -- head_info:PlayScore(player.winscore, win_seat == player.seat) + head_info:PlayScore(player.card_score, win_seat == player.seat) + 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.seat ~= win_seat then + card_info.ctr_outpoker.selectedIndex = 0 + end + if player.seat ~= self._room.self_player.seat then + local oneTime = 7 / 60 + + -- card_info:UpdateHandPoker(player.cards, false, true) + + card_info._view_resultOut:RemoveChildrenToPool() + card_info._ctr_resultOut.selectedIndex = 1 + for i = 1, #player.handCards do + local child_card = card_info._view_resultOut:AddItemFromPool() + card_info:FillPoker(child_card, "", nil, player.handCards[i]) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/fanCard.mp3") + printlog("lingmeng oneTime", oneTime) + coroutine.wait(oneTime) + 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 + coroutine.wait(2) + + self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, + remaincards) + self.result_view:SetDestroryCallback(function() + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info.ctr_outpoker.selectedIndex = 0 + if card_info._ctr_resultOut then + card_info._ctr_resultOut.selectedIndex = 0 + end + end + end) + 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 + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + 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] + if self.dismissWin ~= nil then + self.dismissWin:Destroy() + end + self.dismissWin = nil + if _room.curren_round > 0 then + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + end + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info._ctr_time_clock.selectedIndex = 0 + end + self.result_view = EXResultView.new(self, 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) + + _gamectr:AddEventListener(EXGameEvent.OnBompScoreNew, function(...) + local arg = { ... } + self._popEvent = false + local scoreList = arg[1] + for i = 1, #scoreList do + local score = scoreList[i].pomSore + local player = self._room:GetPlayerBySeat(scoreList[i].seat) + local head_info = self._player_info[self:GetPos(scoreList[i].seat)] + head_info:PlayScore(score, true) + head_info:UpdateScore(player.total_score) + end + coroutine.start(function() + coroutine.wait(1) + self._popEvent = true + end) + end) + + _gamectr:AddEventListener( + GameEvent.PlayerState, + function(...) + printlog("lingmeng OnEventOnlineState") + local arg = { ... } + local p = arg[1] + local info = self._player_info[self:GetPos(p.seat)] + info._ctr_offline.selectedIndex = p.line_state == 0 and 1 or 0 + end + ) + _gamectr:AddEventListener(EXGameEvent.OnJiaofen, function(...) + local arg = { ... } + local seat = arg[1] + local info = self._player_card_info[self:GetPos(seat)] + info._ctr_jiaofen.selectedIndex = 1 + 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) + + head_info:UpdateScore(player.total_score) + head_info:UpdateLineState(player.line_state) + head_info:UpdatePiao(player.piao) + head_info:SetBaoDan(player.hand_count == 1) + head_info:MarkBank(player.seat == self._room.banker_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").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) + player_card_info._ctr_time_clock.selectedIndex = 1 + self._tex_leftTime = player_card_info._view_comp_clock + self._left_time = 15 + -- 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_jifen').text = '+' .. d2ad(player.hp_info.total_hp) + else + head_info._view:GetController('text_color').selectedIndex = 1 + head_info._view:GetChild('text_jifen').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) + head_info:MarkBank(player.seat == self._room.banker_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").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, self._room.player_list, self._room.room_id, 0, + win_seat, 0, remaincards) + self.result_view:SetDestroryCallback(function() + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info.ctr_outpoker.selectedIndex = 0 + if card_info._ctr_resultOut then + card_info._ctr_resultOut.selectedIndex = 0 + end + end + end) + 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_SanDaHa", "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_SanDaHa/" .. 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_SanDaHa/" .. 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_SanDaHa/rank_eff") + self._view:AddChild(self.rank_view) + self.rank_view:Center() + self.rank_view:GetTransition("t0"):Play() +end + +function M:_Effect(type1, player) + if type1 == 1 or type1 == 3 or type1 == 7 then + self._popEvent = true + return + end + local info = self._player_card_info[self:GetPos(player.seat)] + info:PlayEffect(type1, function() + self._popEvent = true + end) +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_SanDaHa/eff_" .. eff_code) +-- -- local effect = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/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_SanDaHa/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:OnTupGuanOpen(...) + ---- print("刷新托管数据=====") + local arg = { ... } + local p = arg[1] + local player_card_info = self._player_card_info[self:GetPos(p.seat)] + self._tex_leftTime = player_card_info._view_comp_clock + self._left_time = tonumber(arg[3]) or 0 +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:InitPlayerInfoView() +-- self._player_info = {} +-- local _player_info = self._player_info +-- for i = 1, self._room.room_config.people_num do +-- local tem = self._view:GetChild(string.format("player_info%d_%d", i, (self._state.selectedIndex % 2) + 1)) +-- _player_info[i] = PlayerInfoView.new(tem, self) +-- tem.visible = false +-- end +-- 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:GetSoundFileName(type, num, isNewBout) + local fileName + if type == 1 or type == 3 or type == 7 then + local num = self._cardCheck.lastMinCard + if type == 1 then + fileName = string.format("1_%d", num) + elseif type == 3 then + fileName = string.format("2_%d", num) + elseif type == 7 then + fileName = string.format("3_%d", num) + end + else + if not isNewBout and type ~= 6 then + local r = math.random(1, 3) + fileName = "dani_" .. r + else + if type == 8 or type == 12 then + fileName = 5 + else + fileName = type + end + 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_SanDaHa/" .. 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:ClearOk() + for i = 1, #self._player_card_info do + self._player_card_info[i]:Clear() + end +end + +function M:PlaySound(sex, path) + local sex_path = ViewUtil.Sex_Chat[sex] -- 1 男 2 女 + local sound_path = string.format("extend/poker/sandaha/sound/%s/%s.mp3", sex_path, path) + ViewUtil.PlaySound("SanDaHa_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("SanDaHa_PK", string.format("extend/poker/sandaha/sound/bgm%d.mp3", 1)) +end + +function M:OnPlayerEnter(...) + ViewUtil.PlaySound("SanDaHa_PK", "base/main_majiang/sound/user_enter.mp3") + 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.CloseModalWait2() + 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 + GRoot.inst.onSizeChanged:Set(function() + + end) + PKMainView.Destroy(self) + UIPackage.RemovePackage("extend/poker/sandaha/ui/Extend_Poker_SanDaHa") +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXPlayer.lua b/lua_probject/extend_project/extend/poker/sandaha/EXPlayer.lua new file mode 100644 index 00000000..19d812c6 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXPlayer.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 \ No newline at end of file diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXPlayerBackView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerBackView.lua new file mode 100644 index 00000000..429dfe8a --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerBackView.lua @@ -0,0 +1,584 @@ +--- +--- 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 EXCardCheck = import(".CardCheck") + +local M = {} + +local EXRecord_Event = { + Evt_OutCard = 'OutCard', + Evt_Pass = 'pass', + Evt_NewRound = 'newindex', + Evt_result = 'result', + Evt_Result = 'Result', + Evt_Opt = 'prompt' +} + +local default_bg = 1 +local bg_config = { + { id = 1, url = 'extend/poker/sandaha/bg/bg1', thumb = 'ui://Extend_Poker_SanDaHa/table_bg1' }, + { id = 2, url = 'extend/poker/sandaha/bg/bg2', thumb = 'ui://Extend_Poker_SanDaHa/table_bg2' }, + { id = 3, url = 'extend/poker/sandaha/bg/bg3', thumb = 'ui://Extend_Poker_SanDaHa/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/sandaha/ui/Extend_Poker_SanDaHa') + PKPlayBackView.InitView(self, "ui://Extend_Poker_SanDaHa/EXNew_" .. 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._ctr_inClear = self._view:GetController('Inclear') + + + self._cardCheck = EXCardCheck:InitFlag() + self._gamectr._cardCheck = self._cardCheck + + 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_Opt] = self.CmdOpt +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 + self._room = DataManager.CurrenRoom + local _player_card_info = self._player_card_info + local roominfo_panel = self._view:GetChild('roominfo_panel1') + self._room.pai = 0 + + 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_jifen').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._room.curren_round) + + self:GenerateAllStepData(data) + self:ShowStep(1) + self:Play() +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 + --开始时,隐藏显示结算界面 + if state then + if self.destory_win ~= nil then + coroutine.stop(self.destory_win) + end + + self.destory_win = nil + if self.result_view then + self.result_view._root_view:RemoveFromParent() + self.result_view:Destroy() + self._ctr_inClear.selectedIndex = 0 + end + self.result_view = nil + end +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 step.cmd == EXRecord_Event.Evt_Opt and step.seat == p.seat then + info._view:GetController('out_card_option2').selectedIndex = 1 + else + info._view:GetController('out_card_option2').selectedIndex = 0 + end + + if p.seat ~= self._room.self_player.seat then + info:UpdateHandPoker(p.hand_list, false, true) + else + info:InitPoker(p.hand_list, false) + end + info:SetOutCardInfo(nil, false) + 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) + + self._cardCheck:InitLastCard(card_list) + self:_Effect(self._cardCheck.type, p) + + self:PlaySound(p.self_user.sex, + self:GetSoundFileName(self._cardCheck.type, num, self:GetIsNewBout(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 data = step.data + local over = 0 + local info = data.win.info + local win_seat = data.win.winseat + local remaincards = {} + -- 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.dismissWin ~= nil then + self.dismissWin:Destroy() + end + self.dismissWin = nil + 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.destory_win ~= nil then + coroutine.stop(self.destory_win) + end + + self.destory_win = nil + self.destory_win = coroutine.start(function() + if win_seat == self._room.self_player.seat then + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + else + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/lose_music.mp3") + end + coroutine.stop(self._leftClock_continue) + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info._ctr_time_clock.selectedIndex = 0 + self._left_time = 0 + 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)] + head_info:SetBaoDan(false) + + head_info._view:GetChild('text_jifen').text = player.score + head_info:PlayScore(player.winscore, win_seat == player.seat) + end + + coroutine.wait(2) + + self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, + remaincards) + self.result_view:SetDestroryCallback(function() + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info.ctr_outpoker.selectedIndex = 0 + if card_info._ctr_resultOut then + card_info._ctr_resultOut.selectedIndex = 0 + end + end + end) + self.result_view:Show() + self.result_view._root_view:RemoveFromParent() + self._view:AddChildAt(self.result_view._root_view, + self._view:GetChildIndex(self._view:GetChild('mask_tips')) - 1) + 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 + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + end) + if over == 1 then + -- body + self:UnmarkSelfTuoguan() + ControllerManager.ChangeController(LoddyController) + 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.data = cmd.data +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:CmdOpt(cmd, index) + local data = self:CopyLastStep(index) + data.cmd = cmd.cmd + data.seat = cmd.seat +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(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: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:_Effect(type1, player) + if type1 == 1 or type1 == 3 or type1 == 7 then + self._popEvent = true + return + end + local info = self._player_card_info[self:GetPos(player.seat)] + info:PlayEffect(type1, function() + self._popEvent = true + end) +end + +function M:GetSoundFileName(type, num, isNewBout) + local fileName + if type == 1 or type == 3 or type == 7 then + local num = self._cardCheck.lastMinCard + if type == 1 then + fileName = string.format("1_%d", num) + elseif type == 3 then + fileName = string.format("2_%d", num) + elseif type == 7 then + fileName = string.format("3_%d", num) + end + else + if not isNewBout and type ~= 6 then + local r = math.random(1, 3) + fileName = "dani_" .. r + else + if type == 8 or type == 12 then + fileName = 5 + else + fileName = type + end + end + end + + return fileName +end + +function M:PlaySound(sex, path) + local sex_path = ViewUtil.Sex_Chat[sex] -- 1 男 2 女 + local sound_path = string.format("extend/poker/sandaha/sound/%s/%s.mp3", sex_path, path) + ViewUtil.PlaySound("SanDaHa_PK", sound_path) +end + +function M:GetIsNewBout(seat) + local passCount = 0 + for i = 1, #self._room.player_list do + local player = self._room.player_list[i] + if seat ~= player.seat then + local isPass = self:GetIsPass(player.out_card_list) + if isPass then + passCount = passCount + 1 + end + end + end + if passCount == self._room.room_config.people_num - 1 then + return true + else + return false + end +end + +function M:GetIsPass(cardlist) + if #cardlist == 0 then + return true + end + if cardlist[1] ~= nil and cardlist[1] == 0 then + return true + end + return false +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/poker/sandaha/EXPlayerInfoView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerInfoView.lua new file mode 100644 index 00000000..a186cc02 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerInfoView.lua @@ -0,0 +1,70 @@ +local PlayerInfoView = require("Game.View.PlayerInfoView2") + +local M = {} + +function M.new(view, mainView, flag_witness) + setmetatable(M, { __index = PlayerInfoView }) + local self = setmetatable({}, { __index = M }) + self._view = view + self._main_view = mainView + self:init(flag_witness) + return self +end + +function M:init(flag_witness) + getmetatable(M).__index.init(self) + + --互动表情的父类 + self._hudon = self._view:GetChild('comp_hudon') + PlayerInfoView.init(self, flag_witness) +end + +function M:FillData(player) + PlayerInfoView.FillData(self, player) + -- if player.cur_hp ~= nil then + -- self:UpdateScore(d2ad(player.cur_hp)) + -- else + -- local rt = 1 + -- if self._main_view._room.hpOnOff == 1 then + -- rt = self._main_view._room.score_times + -- end + -- self:UpdateScore(player.total_score * rt) + -- end +end + +function M:SetBaoDan(flag) + self._view:GetController('baodan').selectedIndex = flag and 1 or 0 +end + +function M:PlayScore(score) + if score >= 0 then + self._view:GetController('piaoWin').selectedIndex = 1 + self._view:GetChild('text_piaoScoreAdd').text = "+" .. score + else + self._view:GetController('piaoWin').selectedIndex = 0 + self._view:GetChild('text_piaoScoreLess').text = score + end + self._view:GetTransition('piaoScore'):Play(1, 0, function() + + end) +end + +function M:UpdatePiao(piao) + if piao == nil or piao == -1 then + self._view:GetChild("piao").text = "" + elseif piao == 0 then + self._view:GetChild("piao").text = "不飘" + elseif piao == 1 then + self._view:GetChild("piao").text = "飘1分" + elseif piao == 2 then + self._view:GetChild("piao").text = "飘2分" + elseif piao == 3 then + self._view:GetChild("piao").text = "飘3分" + elseif piao == 5 then + self._view:GetChild("piao").text = "飘5分" + elseif piao == 8 then + self._view:GetChild("piao").text = "飘8分" + end +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXPlayerPokerInfoView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerPokerInfoView.lua new file mode 100644 index 00000000..a1cd8208 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerPokerInfoView.lua @@ -0,0 +1,541 @@ +--- +--- 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) + + self.item_data = json.decode(self._view:GetChild("area_mask").text) + self.out_card_data = self.item_data["outcard_list"] + self._mask_liangpai = view:GetChild("mask_liangpai") + self.ctr_outpoker = view:GetController("output") + self.outpoker_list = view:GetChild(self.out_card_data["parent"]) + + -- self.hand_card_list = view:GetChild("hand_card_list") + self.hand_card_list = view:GetChild("list_backHand") + + self.ctr_one_card = view:GetController("one_card") + self.eff_one_card = view:GetChild("one_card_eff"):GetTransition("t0") + + self.text_bomb_score = view:GetChild("Score") + self.ani_bomb_score = view:GetTransition("score") + self.ani_result_score = view:GetTransition("score_1") + + ------------------------------lingmeng------------------------ + + self._view_Out = self._view:GetChild('List_Out') + self._view_resultOut = self._view:GetChild('list_resultOut') + self._ctr_resultOut = self._view:GetController('resultOut') + self._ctr_time_clock = self._view:GetController('time_clock') + self._view_comp_clock = self._view:GetChild('Comp_Clock') + -------------------------------------------------------------- +end + +-- function M:SetOutCardInfo(cardlist, isPass, isAnim) +-- self.outpoker_list:RemoveChildren(0, -1, true) +-- if cardlist == nil then +-- if isPass == true then +-- self.ctr_outpoker.selectedIndex = 2 +-- else +-- self.ctr_outpoker.selectedIndex = 0 +-- end +-- else +-- if isAnim then +-- 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 poker_item = UIPackage.CreateObject("Extend_Poker_SanDaHa", "poker7") +-- local code = self:ChangeCodeByTo(cardlist[i]) +-- -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/"..code) +-- -- local card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") +-- 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_SanDaHa/" .. code .. "_1") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code) +-- end +-- else +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. 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 +-- poker_item:AddChild(card_code_obj) +-- --local poker = self:CreatPoker(cardlist[i],0.7) +-- self.outpoker_list:AddChild(poker_item) +-- poker_item.xy = Vector2.New(self.out_card_data["start_x"], self.out_card_data["start_y"]) +-- poker_item:TweenMove( +-- self:GetOutCardEndPokerPos(i, #cardlist, self.outpoker_list, poker_item, self.out_card_data +-- ["maxcount_x"], 1.5), time) +-- --card_code_obj +-- -- self.tween = TweenUtils.TweenFloat(1,0.7,time,function(x) +-- -- card_code_obj:SetScale(x,x) +-- -- end) +-- card_code_obj:SetScale(1.5, 1.5) +-- end +-- self.move_cor = coroutine.start(function() +-- coroutine.wait(0.1) +-- ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/chupai.mp3") +-- end) +-- else +-- for i = 1, #cardlist do +-- local poker_item = UIPackage.CreateObject("Extend_Poker_SanDaHa", "poker7") +-- local code = self:ChangeCodeByTo(cardlist[i]) +-- local card_code_obj +-- 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_SanDaHa/" .. code .. "_1") +-- else +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code) +-- end +-- else +-- if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then +-- -- body +-- card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. 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.outpoker_list:AddChild(poker_item) +-- poker_item.xy = self:GetOutCardEndPokerPos(i, #cardlist, self.outpoker_list, poker_item, +-- self.out_card_data["maxcount_x"], 1.5) +-- end +-- end +-- --self.ctr_outpoker.selectedIndex = 1 +-- end +-- end + +function M:SetOutCardInfo(cardlist, isPass, isAnim) + self._view_Out:RemoveChildren(0, -1, true) + if cardlist == nil then + if isPass == true then + self.ctr_outpoker.selectedIndex = 2 + else + self.ctr_outpoker.selectedIndex = 0 + end + else + self.ctr_outpoker.selectedIndex = 1 + if isAnim then + if self.move_cor then + coroutine.stop(self.move_cor) + self.move_cor = nil + end + for i = 1, #cardlist do + local poker_item = self._view_Out:AddItemFromPool() + local code = self:ChangeCodeByTo(cardlist[i]) + + self:FillPoker(poker_item, "", cardlist[i]) + end + self.move_cor = coroutine.start(function() + coroutine.wait(0.1) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/chupai.mp3") + end) + else + for i = 1, #cardlist do + local poker_item = self._view_Out:AddItemFromPool() + + local code = self:ChangeCodeByTo(cardlist[i]) + + self:FillPoker(poker_item, "", cardlist[i]) + end + end + end +end + +function M:SetOutCardBlack() + for i = 0, self.outpoker_list.numChildren - 1 do + self.outpoker_list:GetChildAt(i):GetChildAt(0):GetChildAt(0):GetChildAt(0).color = Color(0.7, 0.7, 0.7) + end +end + +-- 12 -61 --11 58 --10 55 --46 +function M:GetOffSet(cardLength) -- 15 -70 + if cardLength > 8 then + return 52 --40 + else + return -cardLength * -10 + 60 + end +end + +function M:GetOutCardEndFirstPokerPos(count, parent_com, poker_obj, max_count, scale) + local parent_width, parent_height = parent_com.width, parent_com.height + local poker_width, poker_height = poker_obj.width * scale, poker_obj.height * scale + local offset = self:GetOffSet(count) + local x, y = 0, 0 + --local length = (count - 1) * (poker_width + offset) + poker_width + --if length <= parent_width then + -- x = (parent_width - length) / 2 + -- y = (parent_height - poker_height) / 2 + --end + if count <= max_count then + local length = (count - 1) * offset + poker_width + x = (parent_width - length) / 2 + y = ((parent_height - poker_height) / 2) + end + return Vector2.New(x, y) +end + +function M:GetOutCardEndPokerPos(index, count, parent_com, poker_obj, max_count, scale) + local offset_x, offset_y = self:GetOffSet(count), -100 + local start_pos = self:GetOutCardEndFirstPokerPos(count, parent_com, poker_obj, max_count, scale) + local poker_width, poker_height = poker_obj.width * scale, poker_obj.height * scale + local parent_width, parent_height = parent_com.width, parent_com.height + local pos_x, pos_y = start_pos.x + (index - 1) * offset_x, start_pos.y + if index > max_count then + pos_x = (index - max_count - 1) * offset_x + pos_y = pos_y + poker_height + offset_y + end + + return Vector2.New(pos_x, pos_y) +end + +-- function M:PlayCardTypeEff(type1) +-- 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 = 1 +-- end +-- if self.cro_type_eff ~= nil then +-- coroutine.stop(self.cro_type_eff) +-- end +-- self.cro_type_eff = nil +-- self.cro_type_eff = coroutine.start(function() +-- self.type_eff_view = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFast/eff_"..eff_code) +-- if self.type_eff_view == nil then return end +-- self._view:AddChild(self.type_eff_view) +-- self.type_eff_view:SetXY((self._view.width - self.type_eff_view.width) / 2,self.outpoker_list.y) +-- self.type_eff_view:GetTransition("t0"):Play() +-- coroutine.wait(1.5) +-- if self.type_eff_view ~= nil then +-- self.type_eff_view:Dispose() +-- self.type_eff_view = nil +-- end +-- end) +-- end + +function M:PlayScore(score, isBomb, isWin) + if score == nil then + self.text_bomb_score.alpha = 0 + return + end + if isBomb then + self.text_bomb_score.text = score >= 0 and "+" .. score or tostring(score) + self.text_bomb_score.grayed = score < 0 + self.ani_bomb_score:Play() + else + if score < 0 then + self.text_bomb_score.text = tostring(score) + self.text_bomb_score.grayed = true + elseif score > 0 then + self.text_bomb_score.text = "+" .. score + self.text_bomb_score.grayed = false + else + local str = isWin and "+" or "-" + self.text_bomb_score.text = str .. score + self.text_bomb_score.grayed = not isWin + end + self.ani_result_score:Play() + end +end + +function M:UpdateHandPoker(cardList, isPlayAni, isMing) + if self.cor_init_poker ~= nil then + coroutine.stop(self.cor_init_poker) + end + self.cor_init_poker = nil + self.card_list = {} + self.hand_card_list:RemoveChildren(0, -1, true) + local card_length + local new_card_list + if isMing == true then + new_card_list = self._gameCtr:ChangeCodeByFrom(cardList, true) + card_length = #cardList + else + card_length = cardList + end + if isPlayAni == true then + self.cor_init_poker = coroutine.start(function() + for i = card_length, 1, -1 do + local code = isMing == true and new_card_list[i] or 0 + coroutine.wait(0.01) + local poker = self:CreatPoker1(code, 0.4) + self.hand_card_list:AddChild(poker) + end + end) + else + for i = card_length, 1, -1 do + local code = isMing == true and new_card_list[i] or 0 + local card_number_code = self:ChangeOneCodeByFrom(cardList[i]) + local btn_card = self.hand_card_list:AddItemFromPool() + self:FillPoker(btn_card, "", card_number_code) + end + end +end + +function M:SetRemainCardNumber(isPlay) + if isPlay then + self.ctr_one_card.selectedIndex = 1 + self.eff_one_card:Play(-1, 0, nil) + else + self.ctr_one_card.selectedIndex = 0 + end + --if self.card_number then + -- self.card_number.visible = show + -- self.card_number.text = string.format("剩余:%d",number) + --end +end + +function M:PlayEffect(type, callback) + Timer.New(function() + local fristCard = self._view_Out:GetChildAt(0) + local lastCard = self._view_Out:GetChildAt(self._view_Out.numItems - 1) + local fristXy = self._view_Out:GlobalToLocal(fristCard:LocalToGlobal(Vector2.New( + fristCard.width * 0, + fristCard.height * 0.5))) + local lastXy = self._view_Out:GlobalToLocal(lastCard:LocalToGlobal( + Vector2.New(lastCard.width * 1, + lastCard.height * 0.5))) + local effect = "" + local y = 0 + local x = 0 + local width = 0 + if type == 10 then + effect = "te_liandui" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 4 then + effect = "te_sandaidui" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 11 then + effect = "te_sandaidan" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 2 then + effect = "te_shunzi" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + width = (lastXy.x - fristXy.x) / 1.5 + elseif type == 5 or type == 8 or type == 12 then + effect = "te_feiji" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + width = (lastXy.x - fristXy.x) / 1.5 + elseif type == 6 then + effect = "te_zhadan" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + elseif type == 9 then + effect = "te_sidaisab" + y = self._view_Out.y + fristXy.y + x = self._view_Out.x + (lastXy.x + fristXy.x) / 2 + end + if #effect > 0 then + local obj = UIPackage.CreateObjectFromURL(string.format("ui://Extend_Poker_SanDaHa/%s", effect)) + obj.visible = false + self._view:AddChild(obj) + obj:SetScale(1.3, 1.3) + if y ~= 0 then + obj.y = y + end + if x ~= 0 then + obj.x = x + end + if width ~= 0 then + obj.width = width + end + obj.visible = true + if type == 2 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:GetChild('n11'):TweenMoveX(width * 1.03, 0.3):OnComplete(function() + obj:Dispose() + callback() + end) + obj:GetChild('n12'):TweenMoveX(width * 1.03 - 121, 0.3) + obj:GetChild('n11'):TweenFade(0, 0.3) + obj:GetChild('n12'):TweenFade(0, 0.3) + end) + elseif type == 5 or type == 8 or type == 12 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:GetChild('n13'):TweenMoveX(width * 0.7, 0.4):OnComplete(function() + obj:Dispose() + callback() + end) + obj:GetChild('n14'):TweenMoveX(width * 0.7 - 120, 0.4) + obj:GetChild('n13'):TweenFade(1, 0.2):OnComplete(function() + obj:GetChild('n13'):TweenFade(0, 0.4) + obj:GetChild('n14'):TweenFade(0, 0.4) + end) + end) + elseif type == 6 then + obj:GetTransition('t0'):Play(1, 0, function() + obj:Dispose() + end) + callback() + else + obj:GetTransition('t0'):Play(1, 0, function() + obj:Dispose() + callback() + end) + end + else + callback() + end + end, Time.deltaTime, 1, false):Start() +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:FillPoker(poker, prefix, num, code) + if num ~= nil then + code = self:ChangeCodeByTo(num) + end + local suffix = code == 310 and + (DataManager.CurrenRoom.pai == 0 and (DataManager.CurrenRoom.room_config.Heart10 == 2 and "_1" or "") or "_2") or + "" + code = code == 1 and "00" or code + if not poker.icon then + poker:GetChild('icon').url = string.format("ui://Main_Poker/%s%s%s", prefix, code, suffix) + else + poker.icon = string.format("ui://Main_Poker/%s%s%s", prefix, code, suffix) + end +end + +function M:CreatPoker1(poker, scale, bank) + local poker_item = UIPackage.CreateObject("Extend_Poker_SanDaHa", "poker" .. scale * 10) + local code = self:ChangeCodeByTo(poker) + local card_code_obj + + 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_SanDaHa/" .. code .. "_1") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code .. "_2") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + end + end + if card_code_obj == nil or bank == 1 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") + end + + card_code_obj:SetScale(scale, scale) + poker_item:AddChild(card_code_obj) + + return poker_item +end + +function M:CreatPoker(poker, scale, bank) + local poker_item = UIPackage.CreateObject("Extend_Poker_SanDaHa", "poker" .. 12.5) + local code = self:ChangeCodeByTo(poker) + local card_code_obj + 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_SanDaHa/" .. code .. "_1") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_SanDaHa/" .. code .. "_2") + else + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/" .. code .. "_2") + end + end + if card_code_obj == nil or bank == 1 then + card_code_obj = UIPackage.CreateObjectFromURL("ui://Main_Poker/00") + end + card_code_obj:SetScale(scale, scale) + poker_item:AddChild(card_code_obj) + + return poker_item +end + +function M:ChangeCodeByTo(card) + local flower = card % 10 + local number = math.floor(card / 10) + if number == 15 then + number = 2 + end + return flower * 100 + number +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/poker/sandaha/EXPlayerSelfPokerInfoView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerSelfPokerInfoView.lua new file mode 100644 index 00000000..0dbb1573 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXPlayerSelfPokerInfoView.lua @@ -0,0 +1,1377 @@ +--- +--- 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() + self._ctr_time_clock = self._view:GetController('time_clock') + self._view_comp_clock = self._view:GetChild('Comp_Clock') + -------------------------------------------------------------- + self._ctr_jiaofen = self._view:GetController('jiaofen') + self._ctr_jiaozhu = self._view:GetController('jiaozhu') + self._btn_bujiao = self._view:GetChild('btn_bujiao') + self._viewList_jiaofen = self._view:GetChild('List_jiaofen') + self._viewList_jiaozhu = self._view:GetChild('List_jiaozhu') + + self._viewList_jiaofen.onClickItem:Set(function(context) + self.gameCtr:SendJiaofen(tonumber(context.sender.title)) + self._ctr_jiaofen.selectedIndex = 0 + end) + self._btn_bujiao.onClick:Set(function() + self.gameCtr:SendJiaofen(0) + self._ctr_jiaofen.selectedIndex = 0 + 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._ctr_canSendCard.selectedIndex = 0 + self._flag_ruleCard = false + 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 + if pokerList[i] == 403 then + self._flag_ruleCard = true + end + 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) + btn_card.alpha = 0 + btn_card.touchable = false + local card_view = NewCardView(btn_card, card_number_code, card_flower_code) + self.card_list[#self.card_list + 1] = card_view + btn_card.data = 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 + local card_view = self.card_list[j] + card_view.index = j + + 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 + if pokerList[i] == 403 then + self._flag_ruleCard = true + end + 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 + btn_card.data = card_view + btn_card.width = (GRoot.inst.width * 0.8 - self._view_handCard.columnGap * 20) / 21 + 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] + 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: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) + 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() --智障选牌 + -- 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._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._view_handCard.numItems do + local card = self._view_handCard:GetChildAt(i - 1).data + 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._view_handCard.numItems do + local card = self._view_handCard:GetChildAt(k - 1).data + 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("SanDaHa_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('SanDaHa_PK', 'extend/poker/sandaha/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) + send_card = #xuan_card > 0 and xuan_card or send_card + self._cardCheck:initCards(send_card, + { + flag = #xuan_card > 0, + flag_allCards = #send_card == self._view_handCard.numItems, + flag_ruleCard = self + ._flag_ruleCard + }) + + 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:ShowOutCardOption2(lastCardList, ctr_select, mustPutMaxCard) + self._cardCheck:InitLastCard(lastCardList, mustPutMaxCard) + self._cardCheck:CheckOutCard(self.card_list) + self.tips_card_list = self._cardCheck:GetTipsList() + self.touchCardSet = self._cardCheck:GetTouchSet() + self.touchCardMap = self._cardCheck:GetTouchCardMap() + self.tips_click_count = 0 + + print("lingmengShowOutCardOption2", #self.touchCardSet) + pt(self.touchCardSet) + pt(self.touchCardMap) + -- body --在这个方法里添加判断抬起牌是否符合出牌类型(少跑一次手牌循环) + self:UpdateHandCardsColor() + + if #self.tips_card_list == 1 then + self:ShowTipsCard(1) + end + + self.ctr_put_card_option.selectedIndex = ctr_select +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) + self._ctr_canSendCard.selectedIndex = 0 + + 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._view_Out:RemoveChildren(0, -1, true) + if cardlist == nil then + if isPass == true then + self.ctr_outpoker.selectedIndex = 2 + else + self.ctr_outpoker.selectedIndex = 0 + end + else + self.ctr_outpoker.selectedIndex = 1 + if isAnim then + if self.move_cor then + coroutine.stop(self.move_cor) + self.move_cor = nil + end + + for i = 1, #cardlist do + local poker_item = self._view_Out:AddItemFromPool() + local code = self:ChangeCodeByTo(cardlist[i]) + + self:FillPoker(poker_item, "", cardlist[i]) + end + self.move_cor = coroutine.start(function() + coroutine.wait(0.1) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/chupai.mp3") + end) + else + for i = 1, #cardlist do + local poker_item = self._view_Out:AddItemFromPool() + + local code = self:ChangeCodeByTo(cardlist[i]) + + self:FillPoker(poker_item, "", cardlist[i]) + end + 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('SanDaHa_PK', 'extend/poker/sandaha/sound/chupai.mp3') + end + ) + else + for i = 1, #cardlist do + local poker_item = UIPackage.CreateObject('Extend_Poker_SanDaHa', '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_SanDaHa/' .. code .. '_1') + else + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_SanDaHa/' .. code) + end + else + if code == 310 and DataManager.CurrenRoom.room_config.Heart10 == 2 then + -- body + card_code_obj = UIPackage.CreateObjectFromURL('ui://Extend_Poker_SanDaHa/' .. 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() +-- local send_card = {} +-- 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) +-- if card_view.btn_card.selected and card_view.btn_card.touchable then +-- table.insert(send_card, card_view) +-- end +-- end +-- if #send_card > 0 then +-- table.sort(send_card, tableSortNumber) +-- self._cardCheck:initCards(send_card, false, #send_card == self._view_handCard.numItems) +-- self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 +-- else +-- self._ctr_canSendCard.selectedIndex = 0 +-- end +-- end + +function M:UpdateHandCardsColor() + local send_card = {} + for i = 1, #self.card_list do + local card_view = self.card_list[i] + if self.touchCardMap[math.floor(card_view.card_code_number / 10)] or #self.touchCardSet == 0 then + card_view.btn_card.touchable = true + self:SetBtnCardColor(card_view, 0) + else + card_view.btn_card.touchable = false + card_view.btn_card.selected = false + self:SetBtnCardColor(card_view, 1) + end + if card_view.btn_card.selected and card_view.btn_card.touchable then + table.insert(send_card, card_view) + end + end + if #send_card > 0 then + table.sort(send_card, tableSortNumber) + self._cardCheck:initCards(send_card, { flag = false, flag_allCards = #send_card == self._view_handCard.numItems }) + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 + else + self._ctr_canSendCard.selectedIndex = 0 + 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) + 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) + print("lingmengShowTipsCard") + 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 + pt(item) + self._cardCheck:initCards(item) + self._ctr_canSendCard.selectedIndex = self._cardCheck:CheckCards() and 1 or 0 +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: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._flag_ruleCard = false + -- 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/poker/sandaha/EXProtocol.lua b/lua_probject/extend_project/extend/poker/sandaha/EXProtocol.lua new file mode 100644 index 00000000..82633804 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXProtocol.lua @@ -0,0 +1,51 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:51 +--- +local EXProtocol = { + EXConfirmToNextGame = "1003", + + EXSend_Card = "1013", + + EXSend_Guo = "1014", + + EXSend_Piao = "1015", + + EXMing_Card = "2117", + + EXInit_Card = "2011", + + EXOptions = "2004", + + EXIndex_Move = "2016", + + EXPlay_Succ = "2021", + + EXPass_Succ = "2030", + + EXPut_Error = "2111", + + EXBomb_Score = "2118", + EXBomb_Score_New = "2110", + + EXResult = "2007", + EXPiao_Tip = "2031", + EXPiao_Action = "2032", + + EXConfirmToNextGameSucc = "2010", + PT_GAMETUOGUAN = "2029", --托管 + SEND_TUOGUAN = "1018", --托管 + GAME_XIPAI = "20836", + GAME_EVENT_XIPAI = "20837", + GAME_EVENT_NOTIFY_XIPAI = "20838", + GAME_EVT_CARDINHAND = "202022", + + EXCheckCard = "8881", + EXCheckCard_Succ = "8882", + EXCheckCard_Send = "888", + + EXJiaofen = "2005", + EXJiaofen_Send = "1016", +} + +return EXProtocol diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXResultView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXResultView.lua new file mode 100644 index 00000000..f1820556 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXResultView.lua @@ -0,0 +1,199 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/19 11:05 +--- +require("Game.View.ResultView") + +local EXResultView = {} + +local M = EXResultView + +function EXResultView.new(root, 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._root_runFast = root + self._gamectr = ControllerManager.GetController(GameController) + self:init("ui://Extend_Poker_SanDaHa/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 + + if over == 2 and room.curren_round <= 0 then + if room._flag_lobby then + ViewManager.ChangeView(ViewManager.View_Lobby) + else + ViewManager.ChangeView(ViewManager.View_Family) + end + end + ------------------ + + --只有一人直接退,有两人才进正常结算 + if not over and #data == 1 then + if room._flag_lobby then + ViewManager.ChangeView(ViewManager.View_Lobby) + else + ViewManager.ChangeView(ViewManager.View_Family) + end + end + + self._view:GetChild('btn_over1Close').onClick:Set(function() + if over == 0 then + self:Close() + else + self._view:GetController('over').selectedIndex = 1 + end + end) + + self._view:GetChild('btn_nextRound').onClick:Set(function() + if over == 0 then + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:ConformToNextGame() + self._root_runFast._ctr_inClear.selectedIndex = 0 + self:Destroy() + else + self._view:GetController('over').selectedIndex = 1 + end + end) + + self.ClearReady = function() + if over == 0 then + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:ConformToNextGame() + self._root_runFast:ClearOk() + self:Destroy() + else + self._view:GetController('over').selectedIndex = 1 + end + end + + self._view:GetChild('btn_closeRound').onClick:Set(function() + if room._flag_lobby then + ViewManager.ChangeView(ViewManager.View_Lobby) + else + ViewManager.ChangeView(ViewManager.View_Family) + end + 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 + obj:GetController('chuntian').selectedIndex = info.chuntian and 1 or 0 + end + over0List.numItems = #data + self._root_runFast._ctr_inClear.selectedIndex = 1 + + if over == 1 or (over == 2 and room.curren_round > 0) then + local bigSeat = 0 + local bigScore = 0 + for i = 1, #data do + if data[i].total_score > bigScore then + bigSeat = i + bigScore = data[i].total_score + end + end + 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 + self._view:GetController('num').selectedIndex = #data == 2 and 0 or 1 + self._view:GetController('isgroup').selectedIndex = room.group_id ~= 0 and 1 or 0 + for i = 1, #data do + local info = data[i] + local playerInfo = room:GetPlayerBySeat(info.seat) + printlog("lingmeng clear", playerInfo.nick_name, info.total_score, i == bigSeat) + self:FillPlayerInfoEnd(self._view:GetChild(string.format("comp_playerInfo%d_over1", i)), info, playerInfo, + i == bigSeat) + end + coroutine.start(function() + coroutine.wait(2) + self._view:GetController('over').selectedIndex = 1 + end) + end + + + local Btn_Share = self._view:GetChild('btn_shareRecord') + if Btn_Share then + Btn_Share.onClick:Set(function() + self:SaveRenderTextureToPNG() + end) + end + + local Btn_Copy = self._view:GetChild('btn_copyRecord') + if Btn_Copy then + Btn_Copy.onClick:Set(function() + local resultStr = "" + if room.group_id ~= 0 then + local group = DataManager.groups:get(room.group_id) + resultStr = string.format("【%s】俱乐部,", group.name) + end + resultStr = string.format("%s%s\n", resultStr, room.game_info.name) + for i = 1, #data do + local info = data[i] + local playerInfo = room:GetPlayerBySeat(info.seat) + resultStr = string.format("%s%s\nID:%s【%s】\n", resultStr, playerInfo.self_user.nick_name, + playerInfo.self_user.account_id, + info.total_score) + end + resultStr = string.format("%s房号:%s 局数:%s/%s局\n结束时间:%s", resultStr, room.room_id, room.curren_round, + room.room_config.Times, os.date("%Y-%m-%d %H:%M:%S", os.time())) + ViewUtil.__openWx() + GameApplication.Instance:CopyToClipboard(resultStr) + end) + end +end + +function M:FillPlayerInfoEnd(view, info, playerInfo, bigWin) + local room = DataManager.CurrenRoom + + self:FillPlayerHead(view:GetChild('comp_playerInfo'), playerInfo, bigWin) + + local detailList = view:GetChild('list_detail') + + self:FillDetailChild(detailList:AddItemFromPool(), 0, info.settle_log.maxscore) + self:FillDetailChild(detailList:AddItemFromPool(), 1, info.settle_log.boomnum) + self:FillDetailChild(detailList:AddItemFromPool(), 2, + string.format("%d赢%d输", info.settle_log.winnum, room.room_config.Times - info.settle_log.winnum)) + self:FillDetailChild(detailList:AddItemFromPool(), 3, info.total_score) +end + +function M:FillPlayerHead(view, playerInfo, bigWin) + ImageLoad.Load(playerInfo.self_user.head_url, view:GetChild('btn_head')._iconObject) + view:GetChild('text_name').text = ViewUtil.stringEllipsis(playerInfo.self_user.nick_name) + view:GetChild('text|_ID').text = playerInfo.self_user.account_id + view:GetController('bigWin').selectedIndex = bigWin and 1 or 0 +end + +function M:FillDetailChild(view, index, value) + view:GetController('ShowTitle').selectedIndex = index + view:GetChild('text_value').text = value +end + +function M:SetDestroryCallback(fct) + self._destoryCallback = fct +end + +function M:Destroy() + if self._destoryCallback then + self._destoryCallback() + end + getmetatable(M).__index.Destroy(self) +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXRightPanelView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXRightPanelView.lua new file mode 100644 index 00000000..21ac172d --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXRightPanelView.lua @@ -0,0 +1,93 @@ +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() + 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/poker/sandaha/EXRoom.lua b/lua_probject/extend_project/extend/poker/sandaha/EXRoom.lua new file mode 100644 index 00000000..775958a8 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXRoom.lua @@ -0,0 +1,26 @@ +--- +--- 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 \ No newline at end of file diff --git a/lua_probject/extend_project/extend/poker/sandaha/EXRoomConfig.lua b/lua_probject/extend_project/extend/poker/sandaha/EXRoomConfig.lua new file mode 100644 index 00000000..ec4b9be8 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXRoomConfig.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_SanDaHa/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/extend_project/extend/poker/sandaha/EXWitnessView.lua b/lua_probject/extend_project/extend/poker/sandaha/EXWitnessView.lua new file mode 100644 index 00000000..ebf4fdff --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/EXWitnessView.lua @@ -0,0 +1,829 @@ +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 WitnessView = require("main.poker.PKWitnessView") +local EXCardCheck = import(".CardCheck") + +local M = {} + +function M.new() + setmetatable(M, { __index = WitnessView }) + local self = setmetatable({}, { __index = M }) + self.class = "EXMJWitness" + self:init() + + self._gamectr = ControllerManager.GetController(GameController) + return self +end + +function M:InitView(url) + local _room = DataManager.CurrenRoom + local room = DataManager.CurrenRoom + self._full = true + UIPackage.AddPackage("extend/poker/sandaha/ui/Extend_Poker_SanDaHa") + getmetatable(M).__index.InitView(self, + "ui://Extend_Poker_SanDaHa/EXNew_" .. _room.room_config.people_num) + 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 + + 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, true) + 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 + + 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.CloseModalWait2() + NetResetConnectWindow.CloseNetReset() + ControllerManager.ChangeController(LoddyController) + ViewManager.ChangeView(ViewManager.View_Lobby) + end) + end) + end + end + + self.ctr_state = self._view:GetController("state") + self._ctr_action = self._view:GetController("action") + self.ctr_time = self._view:GetController("time") + 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 + + 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 + self._state.selectedIndex = 4 + + 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) + + self:ChangeBgmMusic() + self:EventInit() + UpdateBeat:Add(self.OnUpdate, self) + + self._text_currenRound = self._view:GetChild('Text_CurrenRound') + self._text_maxRound = self._view:GetChild('Text_MaxMaxRound') + + self._cardCheck = EXCardCheck:InitFlag() + self._gamectr._cardCheck = self._cardCheck + self:UpdateRound(0) + + --按钮功能全部未开放 + -- self._view:GetChild('Btn_Spectator').onClick:Set(function() + -- ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + -- end) + self._view:GetChild('btn_invite').onClick:Set(function() + ViewUtil.ErrorMsg(self._view, "", "该功能还未开放") + end) + + self._view:GetChild('text_roomId').text = self._room.room_id + self._ctr_inClear = self._view:GetController('Inclear') + self._view:GetChild('btn_ready_inClear').onClick:Set(function() + if self.result_view and self.result_view._view then + self._ctr_inClear.selectedIndex = 0 + self.result_view:ClearReady() + else + self.result_view = nil + local _gamectr = ControllerManager.GetController(GameController) + _gamectr:ConformToNextGame() + end + end) + ---------------------------------------------------- + --闹钟倒计时报时 + self._leftTime_xiangling = 5 + self._leftTime_bianhong = true + + -----------如果进入观战时,已经开始游戏,则渲染画面------------ + if _room.curren_round > 0 then + self:UpdateRound(_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)] + 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").text = p.hand_count + end + p:Clear() + head_info:MarkBank(p.seat == _room.banker_seat) + head_info:FillData(p) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:Clear() + head_info:Ready(false) + end + end + ----------- + local rightpanel = self._view:GetChild("right_panel") + if self._rightPanelView ~= nil then + self._rightPanelView:Destroy() + end + + self._rightPanelView = EXRightPanelView.new(self, rightpanel) + + local viewList_witness = self._view:GetChild('comp_witness'):GetChild('list_players') + viewList_witness:SetVirtual() + viewList_witness.itemRenderer = function(index, obj) + obj:GetChild('title').text = room.witness_player_list[index + 1].nick + ImageLoad.Load(room.witness_player_list[index + 1].portrait, obj:GetChild('btn_head')._iconObject) + end + + local btn_witness = self._view:GetChild('btn_pangGuang') + if btn_witness then + btn_witness.onClick:Set(function() + self._view:GetController('witness').selectedIndex = 1 + end) + end + + --直接渲染观战人员 + if room.witness_player_list then + if viewList_witness.numItems == #room.witness_player_list then + viewList_witness:RefreshVirtualList() + else + viewList_witness.numItems = #room.witness_player_list + end + end +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("SanDaHa_PK", string.format("extend/poker/sandaha/sound/bgm%d.mp3", 1)) +end + +function M:EventInit() + local _gamectr = ControllerManager.GetController(GameController) + getmetatable(M).__index.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(...) + printlog("lingmeng pkwitness EventXiPai") + end) + + _gamectr:AddEventListener(EXGameEvent.OnMingCard, function(...) + printlog("lingmeng pkwitness OnMingCard") + 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_card_eff.selectedIndex = 0 + if self.rank_view ~= nil then + self.rank_view:Dispose() + self.rank_view = nil + end + self._ctr_inClear.selectedIndex = 0 + self:UpdateRound(round) + -- ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/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").text = p.hand_count + end + p:Clear() + head_info:MarkBank(p.seat == _room.banker_seat) + head_info:FillData(p) + local card_info = self._player_card_info[self:GetPos(p.seat)] + card_info:Clear() + head_info:Ready(false) + end + 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] + -- if self.MypokerList ~= nil then + -- -- body + -- card_info:Clear() + -- card_info:InitPoker(self.MypokerList, false) + -- self.MypokerList = nil + -- end + -- end + self._leftClock_continue = coroutine.start(function() + coroutine.wait(0.02) + card_info:SetOutCardInfo(nil, false) + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + if i == index then + card_info._ctr_time_clock.selectedIndex = 1 + self._tex_leftTime = card_info._view_comp_clock + else + card_info._ctr_time_clock.selectedIndex = 0 + end + -- if self._room.is_new_bout then + -- card_info.ctr_outpoker.selectedIndex = 0 + -- end + end + if self._left_time and self._left_time < 15 then + self._left_time = 15 + end + end) + + + 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(...) + printlog("lingmeng pkwitness OnBombScore") + end) + + _gamectr:AddEventListener(EXGameEvent.OnPlaySucc, function(...) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/playcard_chup.mp3") + -- self._popEvent = false + 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] + local lastCardList = arg[7] + 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").text = card_number + end + end + head_info:SetBaoDan(card_number == 1) + local card_info = self._player_card_info[index] + card_info:SetOutCardInfo(p.out_card_list, false, true) + card_info._ctr_time_clock.selectedIndex = 0 + + 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 + -- self:_Effect(cardstype, p) + -- else + -- if cardstype == 11 and cardstype ~= 12 then + -- self:_Effect(cardstype, p) + -- end + -- end + self:_Effect(self._cardCheck.type, p) + + self:PlaySound(p.self_user.sex, + self:GetSoundFileName(self._cardCheck.type, num, self._room.is_new_bout)) + -- 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() + 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) + end + + self._popEvent = true + end) + + _gamectr:AddEventListener(EXGameEvent.OnPassSucc, function(...) + self._popEvent = false + 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 + coroutine.stop(self._leftClock_continue) + card_info._ctr_time_clock.selectedIndex = 0 + card_info:SetOutCardInfo(nil, true) + self:PlaySound(p.self_user.sex, "pass_" .. math.random(1, 4)) + coroutine.start(function() + coroutine.wait(1) + self._popEvent = true + end) + end) + + _gamectr:AddEventListener(EXGameEvent.OnErrorTip, function(...) + local arg = { ... } + local error_str = arg[1] + self._player_card_info[1]:ErrorTip(error_str) + end) + + _gamectr:AddEventListener(EXGameEvent.OnPiaoTips, function(...) + printlog("lingmeng pkwitness OnPiaoTips") + end) + + _gamectr:AddEventListener(EXGameEvent.OnPiaoAction, function(...) + printlog("lingmeng pkwitness OnPiaoAction") + end) + + _gamectr:AddEventListener(EXGameEvent.OnOptions, function(...) + printlog("lingmeng pkwitness OnOptions") + end) + -- 托管 + _gamectr:AddEventListener(EXGameEvent.Game_TuoGuan, function(...) + printlog("lingmeng pkwitness Game_TuoGuan") + 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.dismissWin ~= nil then + self.dismissWin:Destroy() + end + self.dismissWin = nil + 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() + if win_seat == self._room.self_player.seat then + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + else + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/lose_music.mp3") + end + coroutine.stop(self._leftClock_continue) + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info._ctr_time_clock.selectedIndex = 0 + self._left_time = 0 + end + -- -- print("11111111111111") + -- 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_SanDaHa/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("SanDaHa_PK", "base/common/sound/win new.mp3") + -- end + -- -- local url = #sprint_seat_list > 0 and "ui://Extend_Poker_SanDaHa/Spring" or "ui://Extend_Poker_SanDaHa/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_SanDaHa/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)] + head_info:SetBaoDan(false) + + head_info._view:GetChild('text_jifen').text = player.score + -- head_info:PlayScore(player.winscore, win_seat == player.seat) + head_info:PlayScore(player.card_score, win_seat == player.seat) + 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.seat ~= win_seat then + card_info.ctr_outpoker.selectedIndex = 0 + end + if player.seat ~= self._room.self_player.seat then + local oneTime = 7 / 60 + + -- card_info:UpdateHandPoker(player.cards, false, true) + + card_info._view_resultOut:RemoveChildrenToPool() + card_info._ctr_resultOut.selectedIndex = 1 + for i = 1, #player.handCards do + local child_card = card_info._view_resultOut:AddItemFromPool() + card_info:FillPoker(child_card, "", nil, player.handCards[i]) + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/fanCard.mp3") + printlog("lingmeng oneTime", oneTime) + coroutine.wait(oneTime) + 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 + coroutine.wait(2) + + self.result_view = EXResultView.new(self, info, self._room.room_id, over, win_seat, 0, + remaincards) + self._ctr_inClear.selectedIndex = 0 + self.result_view:SetDestroryCallback(function() + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info.ctr_outpoker.selectedIndex = 0 + if card_info._ctr_resultOut then + card_info._ctr_resultOut.selectedIndex = 0 + end + end + end) + 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 + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + -- 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] + if self.dismissWin ~= nil then + self.dismissWin:Destroy() + end + self.dismissWin = nil + if _room.curren_round > 0 then + ViewUtil.PlaySound("SanDaHa_PK", "extend/poker/sandaha/sound/end_music.mp3") + end + for i = 1, #self._player_card_info do + local card_info = self._player_card_info[i] + card_info._ctr_time_clock.selectedIndex = 0 + end + self.result_view = EXResultView.new(self, 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) + + _gamectr:AddEventListener(EXGameEvent.OnBompScoreNew, function(...) + local arg = { ... } + local scoreList = arg[1] + for i = 1, #scoreList do + local score = scoreList[i].pomSore + local player = self._room:GetPlayerBySeat(scoreList[i].seat) + local head_info = self._player_info[self:GetPos(scoreList[i].seat)] + head_info:PlayScore(score, true) + head_info:UpdateScore(player.total_score) + end + end) + + --覆盖原始闹钟,原始闹钟仅限麻将使用 + _gamectr:AddEventListener( + GameEvent.TupGuanOpen, + function(...) + ---- print("刷新托管数据=====") + local arg = { ... } + local p = arg[1] + local player_card_info = self._player_card_info[self:GetPos(p.seat)] + self._tex_leftTime = player_card_info._view_comp_clock + self._left_time = tonumber(arg[3]) or 0 + end + ) +end + +function M:NewPlayerCardInfoView(tem, index) + if index == 1 then + return EXPlayerSelfPokerInfoView.new(tem, self) + end + return EXPlayerPokerInfoView.new(tem, self) +end + +function M:GetPos(seat) + return ViewUtil.GetPos(self._room.self_player.seat, seat, self._room.room_config.people_num) +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:_Effect(type1, player) + if type1 == 1 or type1 == 3 or type1 == 7 then + self._popEvent = true + return + end + local info = self._player_card_info[self:GetPos(player.seat)] + info:PlayEffect(type1, function() + self._popEvent = true + end) +end + +function M:GetSoundFileName(type, num, isNewBout) + local fileName + if type == 1 or type == 3 or type == 7 then + local num = self._cardCheck.lastMinCard + if type == 1 then + fileName = string.format("1_%d", num) + elseif type == 3 then + fileName = string.format("2_%d", num) + elseif type == 7 then + fileName = string.format("3_%d", num) + end + else + if not isNewBout and type ~= 6 then + local r = math.random(1, 3) + fileName = "dani_" .. r + else + if type == 8 or type == 12 then + fileName = 5 + else + fileName = type + end + end + end + + return fileName +end + +function M:PlaySound(sex, path) + local sex_path = ViewUtil.Sex_Chat[sex] -- 1 男 2 女 + local sound_path = string.format("extend/poker/sandaha/sound/%s/%s.mp3", sex_path, path) + ViewUtil.PlaySound("SanDaHa_PK", sound_path) +end + +return M diff --git a/lua_probject/extend_project/extend/poker/sandaha/ExtendConfig.lua b/lua_probject/extend_project/extend/poker/sandaha/ExtendConfig.lua new file mode 100644 index 00000000..fabf4020 --- /dev/null +++ b/lua_probject/extend_project/extend/poker/sandaha/ExtendConfig.lua @@ -0,0 +1,318 @@ +--- +--- Created by 谌建军. +--- DateTime: 2017/12/13 10:57 +--- + +local EXTEND_MODEL_NAME = ... +local EXGameInfo = import(".EXGameInfo") +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 EXWitnessView = import(".EXWitnessView") + +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 + self._viewMap[ViewManager.View_Witness] = EXWitnessView + + return self +end + +--卸载资源 +function M:UnAllAssets() + UIPackage.RemovePackage("extend/poker/sandaha/ui/Info_Poker_SanDaHa") + self:UnAssets() +end + +function M:UnAssets() + UIPackage.RemovePackage("extend/poker/sandaha/ui/Extend_Poker_SanDaHa") + 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:GetGameRule() + return EXRuleView.new() +end + +function M:GetIconUrl() + return "ui://Lobby/paodekuai2", "ui://Lobby/paodekuai1" +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 + room.witness_player_list = _tableInfo["playerSpectatorData"] + room._flag_updateWitness = true + 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 bank_seat = reloadInfo["banker_seat"] + room.banker_seat = bank_seat + 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:FillWitnessData(pd_data) + print("==========================FillWitnessData1") + local room = DataManager.CurrenRoom + pt(room) + if _ctr_game == nil then + self:GetGameController() + end + + local _tableInfo = pd_data["tableInfo"] + room.xipaiScore = _tableInfo["xipai_score"] + + local _config = _tableInfo["config"] + room.room_config = EXRoomConfig.new(_config) + + room.curren_round = _tableInfo["round"] + + room.witness_player_list = _tableInfo["playerSpectatorData"] + 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 p.seat == 1 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"] + 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 = pd_data["owner"] + room.owner_id = owner + room.game_status = 0 +end + +function M:LoadConfigToDetail(data) + return data +end + +return M diff --git a/wb_new_ui/assets/Common/buttons/Btn_Bg1WithText1.xml b/wb_new_ui/assets/Common/buttons/Btn_Bg1WithText1.xml index 1251ac2c..392b2194 100644 --- a/wb_new_ui/assets/Common/buttons/Btn_Bg1WithText1.xml +++ b/wb_new_ui/assets/Common/buttons/Btn_Bg1WithText1.xml @@ -5,7 +5,7 @@ - + diff --git a/wb_new_ui/assets/Common/images/btn_bg1WithText.png b/wb_new_ui/assets/Common/images/btn_bg1WithText.png index 6d1f7cd4..9727cd7c 100644 Binary files a/wb_new_ui/assets/Common/images/btn_bg1WithText.png and b/wb_new_ui/assets/Common/images/btn_bg1WithText.png differ diff --git a/wb_new_ui/assets/Common/package.xml b/wb_new_ui/assets/Common/package.xml index d9ab4837..287819cf 100644 --- a/wb_new_ui/assets/Common/package.xml +++ b/wb_new_ui/assets/Common/package.xml @@ -2244,7 +2244,7 @@ - + diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Component/Comp_playerOver0Info.xml b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Component/Comp_playerOver0Info.xml index 60ef4f1a..87d4f31d 100644 --- a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Component/Comp_playerOver0Info.xml +++ b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Component/Comp_playerOver0Info.xml @@ -1,24 +1,10 @@ - - - - - - - - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/bg_over0.png b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/bg_over0.png new file mode 100644 index 00000000..8fb0a5af Binary files /dev/null and b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/bg_over0.png differ diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_confirm_poker.png b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_confirm_poker.png new file mode 100644 index 00000000..29669742 Binary files /dev/null and b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_confirm_poker.png differ diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_return_poker.png b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_return_poker.png new file mode 100644 index 00000000..71bf914a Binary files /dev/null and b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/btn_return_poker.png differ diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_lose.png b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_lose.png new file mode 100644 index 00000000..c7b81b63 Binary files /dev/null and b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_lose.png differ diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_win.png b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_win.png new file mode 100644 index 00000000..5890dbfc Binary files /dev/null and b/wb_new_ui/assets/Extend_Poker_DuoDuo/Clearing/Image/icon_poker_lab_win.png differ diff --git a/wb_new_ui/assets/Extend_Poker_DuoDuo/clearing_new.xml b/wb_new_ui/assets/Extend_Poker_DuoDuo/clearing_new.xml index 64186c77..c7893210 100644 --- a/wb_new_ui/assets/Extend_Poker_DuoDuo/clearing_new.xml +++ b/wb_new_ui/assets/Extend_Poker_DuoDuo/clearing_new.xml @@ -1,29 +1,34 @@ - + - - - + + + + + + + + + + + + + - - - - - - - - - + +