源战役客户端
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.

148 lines
3.9 KiB

  1. --快速密聊界面
  2. CecretView = CecretView or BaseClass(BaseView)
  3. function CecretView:__init()
  4. self.base_file = "chat"
  5. self.layout_file = "cecretView"
  6. self.layer_name = "UI"
  7. self.use_background = true
  8. self.click_bg_toClose = true
  9. self.model = ChatModel:getInstance()
  10. self.memberVo = nil
  11. self.friendVo = nil
  12. self.cur_selected_index = 0
  13. self.tabbar_list = {}
  14. self.cecret_item_list = {}
  15. self.load_callback = function ()
  16. self:LoadSuccess()
  17. self:InitEvent()
  18. self:SwitchBar(1)
  19. end
  20. self.destroy_callback = function ()
  21. self:Clear()
  22. end
  23. end
  24. -- function cecretView:Close()
  25. -- BaseView:Close(self)
  26. -- end
  27. function CecretView:Clear()
  28. for i,item in ipairs(self.cecret_item_list) do
  29. item:DeleteMe()
  30. end
  31. self.cecret_item_list = {}
  32. if self.member_id then
  33. self.model:UnBind(self.member_id)
  34. self.member_id = nil
  35. end
  36. if self.friend_id then
  37. self.model:UnBind(self.friend_id)
  38. self.friend_id = nil
  39. end
  40. end
  41. function CecretView:LoadSuccess()
  42. self.scrollView = self:GetChild("Window/ScrollView")
  43. self.scroll_content = self:GetChild("Window/ScrollView/Viewport/Content")
  44. self.closeBtn = self:GetChild("Window/winBg/closeBtn").gameObject
  45. for i = 1, 2 do
  46. table.insert(self.tabbar_list,self:GetChild("Window/tarbarCon/btn"..i).gameObject)
  47. end
  48. end
  49. function CecretView:InitEvent()
  50. local function onTarBtnClickHandler(target)
  51. local index = string.gsub(target.name,"btn","")
  52. self:SwitchBar(tonumber(index))
  53. end
  54. for i = 1, 2 do
  55. AddClickEvent(self.tabbar_list[i],onTarBtnClickHandler)
  56. end
  57. local function onBtnClickHandler(target)
  58. if target == self.closeBtn then
  59. self:Close()
  60. end
  61. end
  62. AddClickEvent(self.closeBtn,onBtnClickHandler)
  63. local function onRefreshFriendList(vo)
  64. self:SetFriendList(vo)
  65. end
  66. self.friend_id = self.model:Bind(ChatModel.REFRESH_FRIEND,onRefreshFriendList)
  67. local function onRefreshMemberList(vo)
  68. self:SetMemberList(vo)
  69. end
  70. self.member_id = self.model:Bind(ChatModel.REFRESH_MEMBER,onRefreshMemberList)
  71. end
  72. function CecretView:SwitchBar(index)
  73. if self.cur_selected_index == index then return end
  74. self.cur_selected_index = index
  75. if index == 1 then
  76. --获取所有好友信息 --获取关系列表 1好友,2仇人,3黑名单
  77. GlobalEventSystem:Fire(SocialityModel.GET_RELATIONSHIP_LIST,1)
  78. elseif index == 2 then
  79. --获取所有社团成员信息 --多少个成员(100最大),页号,排序类型,排序标识,成员类型,特殊类型 --40006协议
  80. -- GuildModel:getInstance():Fire(GuildModel.RequestMainViewMemberInfoEvt,100,1,5,0,1,0)
  81. end
  82. end
  83. function CecretView:SetFriendList(vo)
  84. -- PrintTable(vo)
  85. if not vo then return end
  86. if not vo.rela_list then return end
  87. self.friendVo = vo
  88. self:SetItemList(vo.rela_list)
  89. end
  90. function CecretView:SetMemberList(vo)
  91. -- PrintTable(vo)
  92. if not vo then return end
  93. if not vo.member_list then return end
  94. self.memberVo = vo
  95. self:SetItemList(vo.member_list)
  96. end
  97. function CecretView:SetItemList(list)
  98. local item = nil
  99. local item_len = #self.cecret_item_list
  100. --移除自己和密聊列表已有的人
  101. local tmp_list = {}
  102. for i=1,#list do
  103. if list[i].role_id ~= RoleManager.Instance:GetMainRoleId() then
  104. if self:IsSameInCecretChatList(list[i]) == false then
  105. table.insert(tmp_list,list[i])
  106. end
  107. end
  108. end
  109. if item_len > #tmp_list then
  110. for i=1,item_len - #tmp_list do
  111. local t = self.cecret_item_list[i]
  112. t:SetVisible(false)
  113. end
  114. elseif item_len < #tmp_list then
  115. for i=1,#tmp_list - item_len do
  116. item = CecretShowItem.New(self.scroll_content)
  117. table.insert(self.cecret_item_list,item)
  118. end
  119. end
  120. for i,v in ipairs(tmp_list) do
  121. self.cecret_item_list[i]:SetData(i,v)
  122. self.cecret_item_list[i]:SetVisible(true)
  123. end
  124. self.scroll_content.sizeDelta = Vector2(460,math.min(440,#self.cecret_item_list * 100))
  125. end
  126. function CecretView:IsSameInCecretChatList(vo)
  127. for i,v in ipairs(self.model.cecret_chat_list) do
  128. if vo.role_id == v.player_id or vo.role_id == v.key_id then
  129. return true
  130. end
  131. end
  132. return false
  133. end