-- 成员列表Layout local ClubPlayerMatchRank = class("ClubPlayerMatchRank" , cc.UIView); local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") --一页30个 local PAGE_COUNT = 20 function ClubPlayerMatchRank:ctor(clubId) ClubPlayerMatchRank.super.ctor(self) self.clubId = clubId --单个茶馆数据 self.clubInfo = app.club_php.clubList[clubId] --只用于是否播放标签页按钮音效 self.touchIdx = 1; self.curPage = 1 self.totolPage = 1 self.tag = ClubDefine.PlayListType.MATCH_RANK --排序: self.sort = true; self:loadUI() end function ClubPlayerMatchRank:loadUI() local ui = loadUI("res/ui/ui_club/ui_club_player_match_rank.ui") self.ui = ui; self:addChild(ui); end function ClubPlayerMatchRank:onEnter() ClubPlayerMatchRank.super.onEnter(self) self:initButton() self.ui.Items.ScrollView_Member:hideAllBar() self:initBindEvent() local playerJson = { clubId = self.clubInfo.clubId, viewType = self.tag, status = self.tag, orderBy = "role", sort = "desc", } app.club_php:requestPlayerList(playerJson) end function ClubPlayerMatchRank:initButton() --关闭 self.ui.Items.Button_close:registerClick(handler(self , self.onClose)) --搜索 self.ui.Items.Button_search:registerClick(handler(self , self.onSearchPlayer)) --翻页 self.ui.Items.Button_page_up:registerClick(handler(self , self.onClickUpPage)) self.ui.Items.Button_page_next:registerClick(handler(self , self.onClickNextPage)) --玩家红花数排序 self.ui.Items.Button_status:registerClick(handler(self , self.onStatuSort)) self.ui.Items.Layout_status:registerClick(handler(self , self.onStatuSort)) self.ui.Items.Button_login:registerClick(handler(self , self.onloginTimeSort)) self.ui.Items.Layout_login:registerClick(handler(self , self.onloginTimeSort)) end --玩家状态排序 function ClubPlayerMatchRank:onStatuSort() playBtnEffect() if self.sort then --升序 self:sortRedNum("asc"); self.sort = false; else --降序 self:sortRedNum("desc"); self.sort = true; end end function ClubPlayerMatchRank:sortRedNum(sortType) if self.clubInfo.players then local playerList = self.lastSortPlayer; if playerList then local lT = {}; for k,v in pairs(playerList) do table.insert(lT,v) end if sortType == "asc" then --升序 local function sortFunc(a,b) return a.changeRedFlower < b.changeRedFlower end table.sort(lT, sortFunc); elseif sortType == "desc" then --降序 local function sortFunc(a,b) return a.changeRedFlower > b.changeRedFlower end table.sort(lT, sortFunc); end self:updatePlayerList(lT) end end end --玩家状态排序 function ClubPlayerMatchRank:onloginTimeSort() playBtnEffect() if self.sort then --升序 self:sortLoginTimeNum("asc"); self.sort = false; else --降序 self:sortLoginTimeNum("desc"); self.sort = true; end end function ClubPlayerMatchRank:sortLoginTimeNum(sortType) if self.clubInfo.players then local playerList = self.lastSortPlayer; if playerList then local lT = {}; for k,v in pairs(playerList) do table.insert(lT,v) end if sortType == "asc" then --升序 local function sortFunc(a,b) return a.loginTime < b.loginTime end table.sort(lT, sortFunc); elseif sortType == "desc" then --降序 local function sortFunc(a,b) return a.loginTime > b.loginTime end table.sort(lT, sortFunc); end self:updatePlayerList(lT) end end end function ClubPlayerMatchRank:initBindEvent() --绑定请求成员列表成功回调事件 self:bindEvent(app.club_php , GAME_EVENT.CLUB_PLAYER_LIST , handler(self , self.onUpdatePlayerListEvent)) --权限发生改变 self:bindEvent(app.club_php , GAME_EVENT.CLUB_CHANGE_ROLE , handler(self , self.onChangeRole)); --绑定比赛开关回调 self:bindEvent(app.club_php , GAME_EVENT.CLUB_SET , handler(self , self.onSetSuccess)); self:bindTextFildTouch() end -- 角色权限修改 function ClubPlayerMatchRank:onChangeRole() self:removeFromParent() end -- 当比赛一关,其他和比赛有关的界面需要关闭 function ClubPlayerMatchRank:onSetSuccess(data) if not data or not data.setType then return end if data.setType == GAME_CLUB_SET_STATE.Math_Switch then self:removeFromParent() end end function ClubPlayerMatchRank:onClose() playBtnCloseEffect() self:removeFromParent() end --下一页 function ClubPlayerMatchRank:onClickNextPage() playBtnEffect() self.curPage = self.curPage + 1 if self.curPage>self.totolPage then self.curPage = self.totolPage end self:updatePlayerList() end --上一页 function ClubPlayerMatchRank:onClickUpPage() playBtnEffect() self.curPage = self.curPage - 1 if self.curPage<1 then self.curPage = 1 end self:updatePlayerList() end function ClubPlayerMatchRank:onUpdatePlayerListEvent(data) if not data or not data.type then return end local mType = data.type local numPlayerM = 0 if mType == self.tag then local players = {} for k,v in pairs(self.clubInfo.players) do if v and v.role ~= ClubDefine.Job.Manager and v.role ~= ClubDefine.Job.Creator then table.insert(players,v) else numPlayerM = numPlayerM + 1 end end --降序 local function sortFunc(a,b) if self.sort then return a.changeRedFlower > b.changeRedFlower else return a.changeRedFlower < b.changeRedFlower end end table.sort(players,sortFunc) self:updatePlayerList(players) self.ui.Items.Text_total_num:setText(tostring(table.nums(players))) end end function ClubPlayerMatchRank:updatePlayerList(data) local mListView = self.ui.Items.ScrollView_Member local className = "luaScript.Views.Club.ClubPlayerMatchRankItem" mListView:getInnerContainer():setAutoSize(true) mListView:removeAllChildren() local players = {} if data then players = data --记录上一次排序后的players数组,点上一页下一页时用 self.lastSortPlayer = players else if self.lastSortPlayer and #self.lastSortPlayer >0 then players = self.lastSortPlayer else for k,v in pairs(self.clubInfo.players) do if v and v.role ~= ClubDefine.Job.Manager and v.role ~= ClubDefine.Job.Creator then table.insert(players,v) end end end end self.totolPage = math.ceil(table.nums(players)/PAGE_COUNT) local startIndex = (self.curPage-1) * PAGE_COUNT + 1 local endIndex = startIndex + PAGE_COUNT - 1 logD("ClubPlayerMatchRank match88888当前页玩家数据:") for i=startIndex,endIndex do local v = players[i] if v then --只打印第一页数据吧 if self.curPage == 1 then logD("ClubPlayerMatchRank match88888"..table.tostring(v)) end item = import(className):new(v,self.clubInfo.clubId,i) mListView:addChild(item.ui) end end logD("ClubPlayerMatchRank match88888当前页玩家数据打印完毕!") mListView:jumpToTopOnSizeChanged() if self.totolPage == 0 then self.ui.Items.Text_Cur_page:setString(0) self.ui.Items.Text_Total_page:setString("/0") else self.ui.Items.Text_Cur_page:setString(self.curPage) self.ui.Items.Text_Total_page:setString("/"..self.totolPage) end end --搜索玩家 function ClubPlayerMatchRank:onSearchPlayer() playBtnEffect() if not self.clubInfo then return end local searchCont = self.ui.Items.TextField_search:getText(); if searchCont == "" then showTooltip("请输入玩家昵称或ID!"); self:updatePlayerList() return; end local mListView = self.ui.Items.ScrollView_Member mListView:removeAllChildren(); self.itemT = {}; if self.lastSortPlayer then local playerList = self.lastSortPlayer if playerList then local searchNameT = {}; local searchIdT = {}; --操作者id local operatorUid = app.user.loginInfo.uid --操作者角色权限 local role = self.clubInfo.role; --创建者id(即管理员id) local creatorUid = self.clubInfo.ownerId; local className = "luaScript.Views.Club.ClubPlayerMatchRankItem" --茶馆id local clubID = self.clubInfo.clubId; local index = 1 for k,playerInfo in pairsByKeys(playerList) do local findNameEnd = string.find(playerInfo.name, searchCont); if findNameEnd then --昵称查找 local playerItem = import(className):new(playerInfo,self.clubInfo.clubId,index) mListView:addChild(playerItem.ui); table.insert(self.itemT, playerItem); else --id查找 local findIdEnd = string.find(playerInfo.uid, searchCont); if findIdEnd then local playerItem = import(className):new(playerInfo,self.clubInfo.clubId,index) mListView:addChild(playerItem.ui); table.insert(self.itemT, playerItem); end end index = index + 1 end local child = mListView:getChildren(); local childSize = table.nums(child); mListView:jumpToTopOnSizeChanged(); end end end function ClubPlayerMatchRank:bindTextFildTouch() local nodeName = self.ui.Items.TextField_search; local function onTouchEnded(touch , event) local searchCont = nodeName:getText(); if searchCont == "" then self:updatePlayerList() return; end self:onSearchPlayer() end nodeName:addEventListener(onTouchEnded) end return ClubPlayerMatchRank