local ClubPlayerMatchSetMember = class("ClubPlayerMatchSetMember" , cc.UIView) local ClubDefine = require("luaScript.Protocol.Club.ClubDefine") function ClubPlayerMatchSetMember:ctor(clubInfo, player,lastViewType) ClubPlayerMatchSetMember.super.ctor(self) local ui = loadUI("res/ui/ui_club/ui_club_player_match_set_member.ui") self.ui = ui self:addChild(ui) --单个亲友圈数据 self.clubInfo = clubInfo --合伙人 self.player = player self.pageMaxPlayers = 10 self.copartner = "" --哪个界面进来的 self.lastViewType = lastViewType end function ClubPlayerMatchSetMember:onEnter() ClubPlayerMatchSetMember.super.onEnter(self) --右边userId找UI,该属性只能在这里初始化 self.rightUserIdToUI = {} --刷新右边所有玩家集合 self.rightPlayers = {} self.ui.Items.Text_Title_Left:setText((app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_NAME or PLN.CLUB_NAME).."成员") --关闭 self.ui.Items.Button_Close:registerClick(handler(self, self.onClickClose)) --确认 self.ui.Items.Image_Sure:registerClick(handler(self, self.onClickSure)) --查询 self.ui.Items.Image_SearchBtn_Left:registerClick(handler(self, self.onClickSearch)) --上下一页 self.ui.Items.Image_UpPage:registerClick(handler(self, self.onClickUpPage)) self.ui.Items.Image_DownPage:registerClick(handler(self, self.onClickDownPage)) --隐藏Item self.ui.Items.Layout_PlayerItem:setVisible(false) self.ui.Items.Layout_addPlayerItem:setVisible(false) --左侧滚动区域 self.ui.Items.ScrollView_Left:getInnerContainer():setAutoSize(true) self.ui.Items.ScrollView_Left:jumpToTopOnSizeChanged() self.ui.Items.ScrollView_Left:hideAllBar() --右侧滚动区域 self.ui.Items.ScrollView_Right:getInnerContainer():setAutoSize(true) self.ui.Items.ScrollView_Right:jumpToTopOnSizeChanged() self.ui.Items.ScrollView_Right:hideAllBar() self:initBindEvent() self.viewType = self.player.role == ClubDefine.Job.LevelOneCopartner and ClubDefine.PlayListType.MATCH_LV_1_ADJUST_MEMBER or ClubDefine.PlayListType.MATCH_LV_2_ADJUST_MEMBER local playerJson = { clubId = self.clubInfo.clubId, viewType = self.viewType, status = ClubDefine.PlayListType.MATCH_ADJUST_MEMBER, orderBy = "role", sort = "desc", muid = self.player.uid } self.clubInfo.players = {} app.club_php:requestPlayerList(playerJson) end function ClubPlayerMatchSetMember:initBindEvent() --绑定请求成员列表成功回调事件 self:bindEvent(app.club_php , GAME_EVENT.CLUB_PLAYER_LIST , handler(self , self.onUpdatePlayerListEvent)) --绑定比赛开关回调 self:bindEvent(app.club_php , GAME_EVENT.CLUB_SET , handler(self , self.onSetSuccess)); self:bindTextFildTouch() end -- 当比赛一关,其他和比赛有关的界面需要关闭 function ClubPlayerMatchSetMember: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 ClubPlayerMatchSetMember:onUpdatePlayerListEvent(data) if not data or not data.type then return end local mType = data.type if mType == self.viewType then --刷新左边所有玩家集合 self.leftPlayers = {} --左边userId找数据 self.leftUserIdToData = {} for k,v in pairs(self.clubInfo.players) do if v.viewType == self.viewType and v.role ~= ClubDefine.Job.LevelOneCopartner and v.role ~= ClubDefine.Job.LevelTwoCopartner and v.role ~= ClubDefine.Job.LevelThreeCopartner then table.insert(self.leftPlayers,v) self.leftUserIdToData[v.uid] = v end end local function sortFunc(a, b) local aRole = tonumber(a.role) local bRole = tonumber(b.role) if aRole ~= bRole and (aRole == ClubDefine.Job.Copartner or bRole == ClubDefine.Job.Copartner or aRole == ClubDefine.Job.LevelOneCopartner or aRole == ClubDefine.Job.LevelTwoCopartner or bRole == ClubDefine.Job.LevelOneCopartner or bRole == ClubDefine.Job.LevelTwoCopartner) then if (aRole == ClubDefine.Job.LevelTwoCopartner and bRole == ClubDefine.Job.LevelOneCopartner) or (bRole == ClubDefine.Job.LevelTwoCopartner and aRole == ClubDefine.Job.LevelOneCopartner)then return aRole < bRole elseif aRole == ClubDefine.Job.Copartner or aRole == ClubDefine.Job.LevelOneCopartner or aRole == ClubDefine.Job.LevelTwoCopartner then return bRole ~= ClubDefine.Job.Manager and bRole ~= ClubDefine.Job.Creator else return aRole == ClubDefine.Job.Manager or aRole == ClubDefine.Job.Creator end end return aRole > bRole end table.sort(self.leftPlayers,sortFunc) self:initLeftRight() end end function ClubPlayerMatchSetMember:initLeftRight() self.ui.Items.ScrollView_Left:removeAllChildren() --当前刷新的开始位置 self.playerIdx = 1 --当前刷新的玩家集合 self.curPlayers = nil self:changCurPlayers(self.leftPlayers) self:updateRightMembers() end function ClubPlayerMatchSetMember:changCurPlayers(players) self.playerIdx = 1 self.curPlayers = players self:updateLeftMembers() end function ClubPlayerMatchSetMember:updateLeftMembers() for idx = 1, self.pageMaxPlayers do local curPlayerIdx = self.playerIdx + idx - 1 local player = self.ui.Items["Layout_Player_" .. idx] local memberInfo = self.curPlayers[curPlayerIdx] if memberInfo then if not player then player = self.ui.Items.Layout_PlayerItem:getCopied() player.Items = getUIItems(player) self.ui.Items["Layout_Player_" .. idx] = player self.ui.Items.ScrollView_Left:addChild(player) end player:setVisible(true) self:initMember(player, memberInfo, true) else if player then player:setVisible(false) else break end end end self.ui.Items.ScrollView_Left:getInnerContainer():requestDoLayout() self.ui.Items.ScrollView_Left:getInnerContainer():doLayout() self.ui.Items.ScrollView_Left:jumpToTop() --更新页数 self:updatePage() end function ClubPlayerMatchSetMember:onClickUpPage() playBtnEffect() self.playerIdx = self.playerIdx - self.pageMaxPlayers if self.playerIdx < 1 then self.playerIdx = 1 showTooltip("已经是首页了!") return end self:updateLeftMembers() end function ClubPlayerMatchSetMember:onClickDownPage() playBtnEffect() self.playerIdx = self.playerIdx + self.pageMaxPlayers if self.playerIdx > #self.curPlayers then self.playerIdx = self.playerIdx - self.pageMaxPlayers showTooltip("已经是最后页了!") return end self:updateLeftMembers() end function ClubPlayerMatchSetMember:updatePage() --当前页数 self.ui.Items.Text_Cur:setText(math.ceil(self.playerIdx / self.pageMaxPlayers)) --总页数(最少一页) local curPlayerNum = #self.curPlayers curPlayerNum = curPlayerNum > 0 and curPlayerNum or 1 self.ui.Items.Text_Total:setText(math.ceil(curPlayerNum / self.pageMaxPlayers)) end function ClubPlayerMatchSetMember:initMember(ui, memberInfo, isLeft) --头像 local nodeHead = ui.Items.Image_Head local headSize = nodeHead:getContentSize() if memberInfo.strHeadUrl and memberInfo.strHeadUrl ~= "" then setPlayerHeadImage(memberInfo.uid, memberInfo.strHeadUrl, nodeHead, false) else setDefaultHeadImg(memberInfo.sex, memberInfo.strHeadUrl, nodeHead, headSize.width, false) end --昵称 ui.Items.Text_nickname:setText(memberInfo.name) --userId ui.Items.Text_id:setText("ID: " .. memberInfo.uid) --操作 ui.Items.CheckBox_Check:setVisible(isLeft) ui.Items.CheckBox_Check:setSelectedState(self.rightUserIdToUI[tostring(memberInfo.uid)] and true or false) --保存数据 ui.memberUserId = memberInfo.uid ui.memberInfo = memberInfo if not ui.isInitClick then ui.Items.CheckBox_Check:registerClick(function() if self.rightUserIdToUI[tostring(ui.memberUserId)] then self:delRightPlayer(ui.memberUserId) else table.insert(self.rightPlayers, ui.memberInfo) end self:updateRightMembers() end) ui.Items.Text_belong:registerClick(function() local isPlayEffect = true local txt = ui.Items.Text_belong:getText() if tonumber(txt) then --昵称 local name = getShortNameByLength(memberInfo.copartner_nick,3) ui.Items.Text_belong:setText(name) else local id = memberInfo.copartner if id == 0 then if txt ~= "/" then ui.Items.Text_belong:setText(app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_CREATOR_DESC2 or PLN.CLUB_CREATOR_DESC2) end isPlayEffect = false else ui.Items.Text_belong:setText(tostring(id)) end end if isPlayEffect then playBtnEffect() end end) ui.isInitClick = true end -- if memberInfo.copartner_nick then local name = getShortNameByLength(memberInfo.copartner_nick,3) if memberInfo.copartner == 0 then ui.Items.Text_belong:setText(app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_CREATOR_DESC2 or PLN.CLUB_CREATOR_DESC2) ui.Items.Text_job:setVisible(false) ui.Items.ImageView_belong:setVisible(false) else ui.Items.Text_belong:setText(name) if memberInfo.copartner_role then local str = tostring(ClubDefine.Role[toNumber(memberInfo.copartner_role)]) str = string.sub(str,1,6) ui.Items.Text_job:setText("("..str..")") end end ui.Items.Layout_1:requestDoLayout() ui.Items.Layout_1:doLayout() end end function ClubPlayerMatchSetMember:initMemberRight(ui, memberInfo, isLeft) --头像 local nodeHead = ui.Items.Image_Head_1 local headSize = nodeHead:getContentSize() if memberInfo.strHeadUrl and memberInfo.strHeadUrl ~= "" then setPlayerHeadImage(memberInfo.uid, memberInfo.strHeadUrl, nodeHead, true) else setDefaultHeadImg(memberInfo.sex, memberInfo.strHeadUrl, nodeHead, headSize.width, true) end --昵称 ui.Items.Text_nickname_3:setText(memberInfo.name) --userId ui.Items.Text_id_1:setText("ID: " .. memberInfo.uid) --操作 ui.Items.Button_Del:setVisible(not isLeft) --保存数据 ui.memberUserId = memberInfo.uid ui.memberInfo = memberInfo if not ui.isInitClick then ui.Items.Button_Del:registerClick(function() self:delRightPlayer(ui.memberUserId) self:updateRightMembers() self:updateLeftMembers() end) ui.isInitClick = true end end function ClubPlayerMatchSetMember:delRightPlayer(memberUserId) for idx,v in ipairs(self.rightPlayers) do if v.uid == memberUserId then table.remove(self.rightPlayers, idx) self.rightUserIdToUI[tostring(memberUserId)]:removeFromParent() self.rightUserIdToUI[tostring(memberUserId)] = nil end end end function ClubPlayerMatchSetMember:updateRightMembers() for _,v in ipairs(self.rightPlayers) do if not self.rightUserIdToUI[tostring(v.uid)] then local player = self.ui.Items.Layout_addPlayerItem:getCopied() player.Items = getUIItems(player) player.uidData = v.uid self:initMemberRight(player, v, false) self.ui.Items.ScrollView_Right:addChild(player) self.rightUserIdToUI[tostring(v.uid)] = player end end for k,v in pairs(self.rightUserIdToUI) do if not self.leftUserIdToData[tonumber(k)] then self.rightUserIdToUI[k] = nil v:removeFromParent() end end self.ui.Items.ScrollView_Right:requestDoLayout() self.ui.Items.ScrollView_Right:doLayout() end function ClubPlayerMatchSetMember:onClickSearch() playBtnEffect() local searchText = self.ui.Items.TextField_Search_Left:getText() if searchText == "" then self:changCurPlayers(self.leftPlayers) else self:onSearchPlayer() end end function ClubPlayerMatchSetMember:onSearchPlayer() local searchText = self.ui.Items.TextField_Search_Left:getText() local searchPlayers = {} for _,v in ipairs(self.leftPlayers) do if string.find(v.uid, searchText) then table.insert(searchPlayers, v) end end self:changCurPlayers(searchPlayers) end function ClubPlayerMatchSetMember:bindTextFildTouch() local nodeName = self.ui.Items.TextField_Search_Left; local function onTouchEnded(touch , event) local searchCont = nodeName:getText(); if searchCont == "" then self:changCurPlayers(self.leftPlayers) return; end self:onSearchPlayer() end nodeName:addEventListener(onTouchEnded) end function ClubPlayerMatchSetMember:onClickSure() playBtnEffect() for k,v in ipairs(self.rightPlayers) do if self.copartner == "" then self.copartner = self.copartner .. v.uid else self.copartner = self.copartner .. "," .. v.uid end end if self.copartner == "" then showTooltip("未选择玩家!") return end local function callBack() local function successCallBack() self:removeFromParent() end app.club_php:requestAdjustCopartnerMember(self.clubInfo.clubId, self.player.uid, self.copartner,self.lastViewType,successCallBack,1,self.player.uid) end local view = import("luaScript.Views.Club.ClubPlayerWenXinTips"):new(callBack) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) end function ClubPlayerMatchSetMember:onClickClose() playBtnEffect() self:removeFromParent() end return ClubPlayerMatchSetMember