You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

412 lines
13 KiB

  1. local ClubPlayerMatchSetMember = class("ClubPlayerMatchSetMember" , cc.UIView)
  2. local ClubDefine = require("luaScript.Protocol.Club.ClubDefine")
  3. function ClubPlayerMatchSetMember:ctor(clubInfo, player,lastViewType)
  4. ClubPlayerMatchSetMember.super.ctor(self)
  5. local ui = loadUI("res/ui/ui_club/ui_club_player_match_set_member.ui")
  6. self.ui = ui
  7. self:addChild(ui)
  8. --单个亲友圈数据
  9. self.clubInfo = clubInfo
  10. --合伙人
  11. self.player = player
  12. self.pageMaxPlayers = 10
  13. self.copartner = ""
  14. --哪个界面进来的
  15. self.lastViewType = lastViewType
  16. end
  17. function ClubPlayerMatchSetMember:onEnter()
  18. ClubPlayerMatchSetMember.super.onEnter(self)
  19. --右边userId找UI,该属性只能在这里初始化
  20. self.rightUserIdToUI = {}
  21. --刷新右边所有玩家集合
  22. self.rightPlayers = {}
  23. self.ui.Items.Text_Title_Left:setText((app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_NAME or PLN.CLUB_NAME).."成员")
  24. --关闭
  25. self.ui.Items.Button_Close:registerClick(handler(self, self.onClickClose))
  26. --确认
  27. self.ui.Items.Image_Sure:registerClick(handler(self, self.onClickSure))
  28. --查询
  29. self.ui.Items.Image_SearchBtn_Left:registerClick(handler(self, self.onClickSearch))
  30. --上下一页
  31. self.ui.Items.Image_UpPage:registerClick(handler(self, self.onClickUpPage))
  32. self.ui.Items.Image_DownPage:registerClick(handler(self, self.onClickDownPage))
  33. --隐藏Item
  34. self.ui.Items.Layout_PlayerItem:setVisible(false)
  35. self.ui.Items.Layout_addPlayerItem:setVisible(false)
  36. --左侧滚动区域
  37. self.ui.Items.ScrollView_Left:getInnerContainer():setAutoSize(true)
  38. self.ui.Items.ScrollView_Left:jumpToTopOnSizeChanged()
  39. self.ui.Items.ScrollView_Left:hideAllBar()
  40. --右侧滚动区域
  41. self.ui.Items.ScrollView_Right:getInnerContainer():setAutoSize(true)
  42. self.ui.Items.ScrollView_Right:jumpToTopOnSizeChanged()
  43. self.ui.Items.ScrollView_Right:hideAllBar()
  44. self:initBindEvent()
  45. self.viewType = self.player.role == ClubDefine.Job.LevelOneCopartner and ClubDefine.PlayListType.MATCH_LV_1_ADJUST_MEMBER or ClubDefine.PlayListType.MATCH_LV_2_ADJUST_MEMBER
  46. local playerJson = {
  47. clubId = self.clubInfo.clubId,
  48. viewType = self.viewType,
  49. status = ClubDefine.PlayListType.MATCH_ADJUST_MEMBER,
  50. orderBy = "role",
  51. sort = "desc",
  52. muid = self.player.uid
  53. }
  54. self.clubInfo.players = {}
  55. app.club_php:requestPlayerList(playerJson)
  56. end
  57. function ClubPlayerMatchSetMember:initBindEvent()
  58. --绑定请求成员列表成功回调事件
  59. self:bindEvent(app.club_php , GAME_EVENT.CLUB_PLAYER_LIST , handler(self , self.onUpdatePlayerListEvent))
  60. --绑定比赛开关回调
  61. self:bindEvent(app.club_php , GAME_EVENT.CLUB_SET , handler(self , self.onSetSuccess));
  62. self:bindTextFildTouch()
  63. end
  64. -- 当比赛一关,其他和比赛有关的界面需要关闭
  65. function ClubPlayerMatchSetMember:onSetSuccess(data)
  66. if not data or not data.setType then
  67. return
  68. end
  69. if data.setType == GAME_CLUB_SET_STATE.Math_Switch then
  70. self:removeFromParent()
  71. end
  72. end
  73. function ClubPlayerMatchSetMember:onUpdatePlayerListEvent(data)
  74. if not data or not data.type then
  75. return
  76. end
  77. local mType = data.type
  78. if mType == self.viewType then
  79. --刷新左边所有玩家集合
  80. self.leftPlayers = {}
  81. --左边userId找数据
  82. self.leftUserIdToData = {}
  83. for k,v in pairs(self.clubInfo.players) do
  84. if v.viewType == self.viewType and v.role ~= ClubDefine.Job.LevelOneCopartner
  85. and v.role ~= ClubDefine.Job.LevelTwoCopartner and v.role ~= ClubDefine.Job.LevelThreeCopartner then
  86. table.insert(self.leftPlayers,v)
  87. self.leftUserIdToData[v.uid] = v
  88. end
  89. end
  90. local function sortFunc(a, b)
  91. local aRole = tonumber(a.role)
  92. local bRole = tonumber(b.role)
  93. if aRole ~= bRole and (aRole == ClubDefine.Job.Copartner or bRole == ClubDefine.Job.Copartner
  94. or aRole == ClubDefine.Job.LevelOneCopartner or aRole == ClubDefine.Job.LevelTwoCopartner
  95. or bRole == ClubDefine.Job.LevelOneCopartner or bRole == ClubDefine.Job.LevelTwoCopartner) then
  96. if (aRole == ClubDefine.Job.LevelTwoCopartner and bRole == ClubDefine.Job.LevelOneCopartner) or (bRole == ClubDefine.Job.LevelTwoCopartner and aRole == ClubDefine.Job.LevelOneCopartner)then
  97. return aRole < bRole
  98. elseif aRole == ClubDefine.Job.Copartner or aRole == ClubDefine.Job.LevelOneCopartner or aRole == ClubDefine.Job.LevelTwoCopartner then
  99. return bRole ~= ClubDefine.Job.Manager and bRole ~= ClubDefine.Job.Creator
  100. else
  101. return aRole == ClubDefine.Job.Manager or aRole == ClubDefine.Job.Creator
  102. end
  103. end
  104. return aRole > bRole
  105. end
  106. table.sort(self.leftPlayers,sortFunc)
  107. self:initLeftRight()
  108. end
  109. end
  110. function ClubPlayerMatchSetMember:initLeftRight()
  111. self.ui.Items.ScrollView_Left:removeAllChildren()
  112. --当前刷新的开始位置
  113. self.playerIdx = 1
  114. --当前刷新的玩家集合
  115. self.curPlayers = nil
  116. self:changCurPlayers(self.leftPlayers)
  117. self:updateRightMembers()
  118. end
  119. function ClubPlayerMatchSetMember:changCurPlayers(players)
  120. self.playerIdx = 1
  121. self.curPlayers = players
  122. self:updateLeftMembers()
  123. end
  124. function ClubPlayerMatchSetMember:updateLeftMembers()
  125. for idx = 1, self.pageMaxPlayers do
  126. local curPlayerIdx = self.playerIdx + idx - 1
  127. local player = self.ui.Items["Layout_Player_" .. idx]
  128. local memberInfo = self.curPlayers[curPlayerIdx]
  129. if memberInfo then
  130. if not player then
  131. player = self.ui.Items.Layout_PlayerItem:getCopied()
  132. player.Items = getUIItems(player)
  133. self.ui.Items["Layout_Player_" .. idx] = player
  134. self.ui.Items.ScrollView_Left:addChild(player)
  135. end
  136. player:setVisible(true)
  137. self:initMember(player, memberInfo, true)
  138. else
  139. if player then
  140. player:setVisible(false)
  141. else
  142. break
  143. end
  144. end
  145. end
  146. self.ui.Items.ScrollView_Left:getInnerContainer():requestDoLayout()
  147. self.ui.Items.ScrollView_Left:getInnerContainer():doLayout()
  148. self.ui.Items.ScrollView_Left:jumpToTop()
  149. --更新页数
  150. self:updatePage()
  151. end
  152. function ClubPlayerMatchSetMember:onClickUpPage()
  153. playBtnEffect()
  154. self.playerIdx = self.playerIdx - self.pageMaxPlayers
  155. if self.playerIdx < 1 then
  156. self.playerIdx = 1
  157. showTooltip("已经是首页了!")
  158. return
  159. end
  160. self:updateLeftMembers()
  161. end
  162. function ClubPlayerMatchSetMember:onClickDownPage()
  163. playBtnEffect()
  164. self.playerIdx = self.playerIdx + self.pageMaxPlayers
  165. if self.playerIdx > #self.curPlayers then
  166. self.playerIdx = self.playerIdx - self.pageMaxPlayers
  167. showTooltip("已经是最后页了!")
  168. return
  169. end
  170. self:updateLeftMembers()
  171. end
  172. function ClubPlayerMatchSetMember:updatePage()
  173. --当前页数
  174. self.ui.Items.Text_Cur:setText(math.ceil(self.playerIdx / self.pageMaxPlayers))
  175. --总页数(最少一页)
  176. local curPlayerNum = #self.curPlayers
  177. curPlayerNum = curPlayerNum > 0 and curPlayerNum or 1
  178. self.ui.Items.Text_Total:setText(math.ceil(curPlayerNum / self.pageMaxPlayers))
  179. end
  180. function ClubPlayerMatchSetMember:initMember(ui, memberInfo, isLeft)
  181. --头像
  182. local nodeHead = ui.Items.Image_Head
  183. local headSize = nodeHead:getContentSize()
  184. if memberInfo.strHeadUrl and memberInfo.strHeadUrl ~= "" then
  185. setPlayerHeadImage(memberInfo.uid, memberInfo.strHeadUrl, nodeHead, false)
  186. else
  187. setDefaultHeadImg(memberInfo.sex, memberInfo.strHeadUrl, nodeHead, headSize.width, false)
  188. end
  189. --昵称
  190. ui.Items.Text_nickname:setText(memberInfo.name)
  191. --userId
  192. ui.Items.Text_id:setText("ID: " .. memberInfo.uid)
  193. --操作
  194. ui.Items.CheckBox_Check:setVisible(isLeft)
  195. ui.Items.CheckBox_Check:setSelectedState(self.rightUserIdToUI[tostring(memberInfo.uid)] and true or false)
  196. --保存数据
  197. ui.memberUserId = memberInfo.uid
  198. ui.memberInfo = memberInfo
  199. if not ui.isInitClick then
  200. ui.Items.CheckBox_Check:registerClick(function()
  201. if self.rightUserIdToUI[tostring(ui.memberUserId)] then
  202. self:delRightPlayer(ui.memberUserId)
  203. else
  204. table.insert(self.rightPlayers, ui.memberInfo)
  205. end
  206. self:updateRightMembers()
  207. end)
  208. ui.Items.Text_belong:registerClick(function()
  209. local isPlayEffect = true
  210. local txt = ui.Items.Text_belong:getText()
  211. if tonumber(txt) then
  212. --昵称
  213. local name = getShortNameByLength(memberInfo.copartner_nick,3)
  214. ui.Items.Text_belong:setText(name)
  215. else
  216. local id = memberInfo.copartner
  217. if id == 0 then
  218. if txt ~= "/" then
  219. ui.Items.Text_belong:setText(app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_CREATOR_DESC2 or PLN.CLUB_CREATOR_DESC2)
  220. end
  221. isPlayEffect = false
  222. else
  223. ui.Items.Text_belong:setText(tostring(id))
  224. end
  225. end
  226. if isPlayEffect then
  227. playBtnEffect()
  228. end
  229. end)
  230. ui.isInitClick = true
  231. end
  232. --
  233. if memberInfo.copartner_nick then
  234. local name = getShortNameByLength(memberInfo.copartner_nick,3)
  235. if memberInfo.copartner == 0 then
  236. ui.Items.Text_belong:setText(app.club_php:getCestIsOpen(app.club_php.clubID) and PLN.CLUB_CEST_CREATOR_DESC2 or PLN.CLUB_CREATOR_DESC2)
  237. ui.Items.Text_job:setVisible(false)
  238. ui.Items.ImageView_belong:setVisible(false)
  239. else
  240. ui.Items.Text_belong:setText(name)
  241. if memberInfo.copartner_role then
  242. local str = tostring(ClubDefine.Role[toNumber(memberInfo.copartner_role)])
  243. str = string.sub(str,1,6)
  244. ui.Items.Text_job:setText("("..str..")")
  245. end
  246. end
  247. ui.Items.Layout_1:requestDoLayout()
  248. ui.Items.Layout_1:doLayout()
  249. end
  250. end
  251. function ClubPlayerMatchSetMember:initMemberRight(ui, memberInfo, isLeft)
  252. --头像
  253. local nodeHead = ui.Items.Image_Head_1
  254. local headSize = nodeHead:getContentSize()
  255. if memberInfo.strHeadUrl and memberInfo.strHeadUrl ~= "" then
  256. setPlayerHeadImage(memberInfo.uid, memberInfo.strHeadUrl, nodeHead, true)
  257. else
  258. setDefaultHeadImg(memberInfo.sex, memberInfo.strHeadUrl, nodeHead, headSize.width, true)
  259. end
  260. --昵称
  261. ui.Items.Text_nickname_3:setText(memberInfo.name)
  262. --userId
  263. ui.Items.Text_id_1:setText("ID: " .. memberInfo.uid)
  264. --操作
  265. ui.Items.Button_Del:setVisible(not isLeft)
  266. --保存数据
  267. ui.memberUserId = memberInfo.uid
  268. ui.memberInfo = memberInfo
  269. if not ui.isInitClick then
  270. ui.Items.Button_Del:registerClick(function()
  271. self:delRightPlayer(ui.memberUserId)
  272. self:updateRightMembers()
  273. self:updateLeftMembers()
  274. end)
  275. ui.isInitClick = true
  276. end
  277. end
  278. function ClubPlayerMatchSetMember:delRightPlayer(memberUserId)
  279. for idx,v in ipairs(self.rightPlayers) do
  280. if v.uid == memberUserId then
  281. table.remove(self.rightPlayers, idx)
  282. self.rightUserIdToUI[tostring(memberUserId)]:removeFromParent()
  283. self.rightUserIdToUI[tostring(memberUserId)] = nil
  284. end
  285. end
  286. end
  287. function ClubPlayerMatchSetMember:updateRightMembers()
  288. for _,v in ipairs(self.rightPlayers) do
  289. if not self.rightUserIdToUI[tostring(v.uid)] then
  290. local player = self.ui.Items.Layout_addPlayerItem:getCopied()
  291. player.Items = getUIItems(player)
  292. player.uidData = v.uid
  293. self:initMemberRight(player, v, false)
  294. self.ui.Items.ScrollView_Right:addChild(player)
  295. self.rightUserIdToUI[tostring(v.uid)] = player
  296. end
  297. end
  298. for k,v in pairs(self.rightUserIdToUI) do
  299. if not self.leftUserIdToData[tonumber(k)] then
  300. self.rightUserIdToUI[k] = nil
  301. v:removeFromParent()
  302. end
  303. end
  304. self.ui.Items.ScrollView_Right:requestDoLayout()
  305. self.ui.Items.ScrollView_Right:doLayout()
  306. end
  307. function ClubPlayerMatchSetMember:onClickSearch()
  308. playBtnEffect()
  309. local searchText = self.ui.Items.TextField_Search_Left:getText()
  310. if searchText == "" then
  311. self:changCurPlayers(self.leftPlayers)
  312. else
  313. self:onSearchPlayer()
  314. end
  315. end
  316. function ClubPlayerMatchSetMember:onSearchPlayer()
  317. local searchText = self.ui.Items.TextField_Search_Left:getText()
  318. local searchPlayers = {}
  319. for _,v in ipairs(self.leftPlayers) do
  320. if string.find(v.uid, searchText) then
  321. table.insert(searchPlayers, v)
  322. end
  323. end
  324. self:changCurPlayers(searchPlayers)
  325. end
  326. function ClubPlayerMatchSetMember:bindTextFildTouch()
  327. local nodeName = self.ui.Items.TextField_Search_Left;
  328. local function onTouchEnded(touch , event)
  329. local searchCont = nodeName:getText();
  330. if searchCont == "" then
  331. self:changCurPlayers(self.leftPlayers)
  332. return;
  333. end
  334. self:onSearchPlayer()
  335. end
  336. nodeName:addEventListener(onTouchEnded)
  337. end
  338. function ClubPlayerMatchSetMember:onClickSure()
  339. playBtnEffect()
  340. for k,v in ipairs(self.rightPlayers) do
  341. if self.copartner == "" then
  342. self.copartner = self.copartner .. v.uid
  343. else
  344. self.copartner = self.copartner .. "," .. v.uid
  345. end
  346. end
  347. if self.copartner == "" then
  348. showTooltip("未选择玩家!")
  349. return
  350. end
  351. local function callBack()
  352. local function successCallBack()
  353. self:removeFromParent()
  354. end
  355. app.club_php:requestAdjustCopartnerMember(self.clubInfo.clubId, self.player.uid, self.copartner,self.lastViewType,successCallBack,1,self.player.uid)
  356. end
  357. local view = import("luaScript.Views.Club.ClubPlayerWenXinTips"):new(callBack)
  358. view:setAnchorPoint(cc.p(0.5, 0.5))
  359. app:showWaitDialog(view)
  360. end
  361. function ClubPlayerMatchSetMember:onClickClose()
  362. playBtnEffect()
  363. self:removeFromParent()
  364. end
  365. return ClubPlayerMatchSetMember