--快速密聊界面 CecretView = CecretView or BaseClass(BaseView) function CecretView:__init() self.base_file = "chat" self.layout_file = "cecretView" self.layer_name = "UI" self.use_background = true self.click_bg_toClose = true self.model = ChatModel:getInstance() self.memberVo = nil self.friendVo = nil self.cur_selected_index = 0 self.tabbar_list = {} self.cecret_item_list = {} self.load_callback = function () self:LoadSuccess() self:InitEvent() self:SwitchBar(1) end self.destroy_callback = function () self:Clear() end end -- function cecretView:Close() -- BaseView:Close(self) -- end function CecretView:Clear() for i,item in ipairs(self.cecret_item_list) do item:DeleteMe() end self.cecret_item_list = {} if self.member_id then self.model:UnBind(self.member_id) self.member_id = nil end if self.friend_id then self.model:UnBind(self.friend_id) self.friend_id = nil end end function CecretView:LoadSuccess() self.scrollView = self:GetChild("Window/ScrollView") self.scroll_content = self:GetChild("Window/ScrollView/Viewport/Content") self.closeBtn = self:GetChild("Window/winBg/closeBtn").gameObject for i = 1, 2 do table.insert(self.tabbar_list,self:GetChild("Window/tarbarCon/btn"..i).gameObject) end end function CecretView:InitEvent() local function onTarBtnClickHandler(target) local index = string.gsub(target.name,"btn","") self:SwitchBar(tonumber(index)) end for i = 1, 2 do AddClickEvent(self.tabbar_list[i],onTarBtnClickHandler) end local function onBtnClickHandler(target) if target == self.closeBtn then self:Close() end end AddClickEvent(self.closeBtn,onBtnClickHandler) local function onRefreshFriendList(vo) self:SetFriendList(vo) end self.friend_id = self.model:Bind(ChatModel.REFRESH_FRIEND,onRefreshFriendList) local function onRefreshMemberList(vo) self:SetMemberList(vo) end self.member_id = self.model:Bind(ChatModel.REFRESH_MEMBER,onRefreshMemberList) end function CecretView:SwitchBar(index) if self.cur_selected_index == index then return end self.cur_selected_index = index if index == 1 then --获取所有好友信息 --获取关系列表 1好友,2仇人,3黑名单 GlobalEventSystem:Fire(SocialityModel.GET_RELATIONSHIP_LIST,1) elseif index == 2 then --获取所有社团成员信息 --多少个成员(100最大),页号,排序类型,排序标识,成员类型,特殊类型 --40006协议 -- GuildModel:getInstance():Fire(GuildModel.RequestMainViewMemberInfoEvt,100,1,5,0,1,0) end end function CecretView:SetFriendList(vo) -- PrintTable(vo) if not vo then return end if not vo.rela_list then return end self.friendVo = vo self:SetItemList(vo.rela_list) end function CecretView:SetMemberList(vo) -- PrintTable(vo) if not vo then return end if not vo.member_list then return end self.memberVo = vo self:SetItemList(vo.member_list) end function CecretView:SetItemList(list) local item = nil local item_len = #self.cecret_item_list --移除自己和密聊列表已有的人 local tmp_list = {} for i=1,#list do if list[i].role_id ~= RoleManager.Instance:GetMainRoleId() then if self:IsSameInCecretChatList(list[i]) == false then table.insert(tmp_list,list[i]) end end end if item_len > #tmp_list then for i=1,item_len - #tmp_list do local t = self.cecret_item_list[i] t:SetVisible(false) end elseif item_len < #tmp_list then for i=1,#tmp_list - item_len do item = CecretShowItem.New(self.scroll_content) table.insert(self.cecret_item_list,item) end end for i,v in ipairs(tmp_list) do self.cecret_item_list[i]:SetData(i,v) self.cecret_item_list[i]:SetVisible(true) end self.scroll_content.sizeDelta = Vector2(460,math.min(440,#self.cecret_item_list * 100)) end function CecretView:IsSameInCecretChatList(vo) for i,v in ipairs(self.model.cecret_chat_list) do if vo.role_id == v.player_id or vo.role_id == v.key_id then return true end end return false end