local FamilyInviteFamilyView = import('.Family.FamilyInviteFamilyView') local CreatePlayView = import('.Family.CreatePlayView') local GroupGameSettingView = import(".NewGroup.MngView.GroupGameSettingView_jaingxi") local LobbyShopView = import(".Lobby.LobbyShopView") local FamilAllRank = import(".Family.FamilAllRank") local FamilyNumberRecord = import(".Family.FamilyNumberRecord") local FamilyRecord = import(".Family.FamilyRecord") local FamilyMsgDiamond = import(".Family.FamilyMsgDiamond") ---无窗口 local FamilyAllNumbers = import(".Family.FamilyAllNumbers") local FamilyAuditNumber = import(".Family.FamilyAuditNumber") local FamilyJoinAndCreate = import(".Family.FamilyJoinAndCreate") local FamilyEventView = import(".Family.FamilyEventView") local FamilyBanDesk = import(".Family.FamilyBanDesk") local FamilyMyFamily = import(".Family.FamilyMyFamily") local FamilyRoomCard = import(".Family.FamilyRoomCard") local FamilyMyfamilyList = import(".Family.FamilyMyfamilyList") local FamilyChatRoom = import(".Family.FamilyChatRoom") local FamilyMsgRecord = import(".Family.FamilyMsgRecord") local PlayEditView = import(".Family.PlayEditView") --- FamilyView = {} local M = FamilyView local function FamilyOnline(groupId, self) self._mgr_ctr:FG_Get_Online_Member(groupId, function(res) end) end local function FamilyOffline(groupId, self) self._mgr_ctr:FG_Get_Offline_Member(groupId, function(res) end) end -- 刷新申请的红点 local function ReflashJoinsRedPoint(self) if self._group == nil then return end local btn_myfamily = self._view:GetChild("btn_myfamily") local btn_myfamilycRedPoint = btn_myfamily:GetController("cRedPoint") local btn_myfamilyRedPointText = btn_myfamily:GetChild("tex_redPoint") local _joins = 0 for _, group in pairs(DataManager.groups.groupList) do local player = group.memberMap[DataManager.SelfUser.account_id] --[[ if player.lev ~= 3 then _joins = _joins + group.joins return end ]] _joins = _joins + group.joins end btn_myfamilycRedPoint.selectedIndex = 0 if _joins > 0 then btn_myfamilycRedPoint.selectedIndex = 1 end local RpTex = _joins if _joins > 99 then RpTex = "99+" end btn_myfamilyRedPointText.text = RpTex self:ChangeOther() end local function SortMembers(Members) local re = {} local online = {} local playing = {} local offline = {} for _, player in pairs(Members) do -- 在线 绿色状态 if player.online == 1 and player.playing ~= "startPlaying" then online[#online + 1] = player end -- 在线游戏中 红色状态 if player.online == 1 and player.playing == "startPlaying" then playing[#playing + 1] = player end -- 离线 if player.online == 0 then offline[#offline + 1] = player end end for _, player in pairs(online) do re[#re + 1] = player end for _, player in pairs(playing) do re[#re + 1] = player end for _, player in pairs(offline) do re[#re + 1] = player end return re end function FamilyView.new() --print("刘海屏Rect position:%s, height:%s, width:%s", Screen.safeArea.position, Screen.safeArea.height,Screen.safeArea.width) UIPackage.AddPackage("base/Family/ui/Family") setmetatable(M, { __index = BaseView }) local self = setmetatable({}, { __index = M }) self.class = 'FamilyMainView' self._full = true -- self._close_destroy = false self._fristRoom = true self:init('ui://Family/Main') return self end function M:init(url) BaseView.InitView(self, url) -- self._close_destroy = false self._full_offset = false local view = self._view self.lastTime = os.time() --self.n393 = self._view:GetChild("n393") --self.n393.text = "无信息" --self.n393.text = string.format("刘海屏Rect position:%s, height:%s, width:%s", Screen.safeArea.position, Screen.safeArea.height, Screen.safeArea.width) --self._child_familyAuditNumber = FamilyAuditNumber.new(self) self.com_FamilyChatRoom = FamilyChatRoom:Init(view:GetChild('com_chatRoom'), self) local fgCtr = ControllerManager.GetController(NewGroupController) self.familyType = view:GetController('familyType') self.btn_close = view:GetChild('btn_close') self.btn_myFamilyList = view:GetChild("btn_myFamilyList") self.btn_creatFamily = view:GetChild("btn_creatFamily") self.btn_joinFamily = view:GetChild("btn_joinFamily") self._mgr_ctr = ControllerManager.GetController(GroupMgrController) self.cMyfamilyList = view:GetController("cMyfamilyList") self.btn_quitMyfamilyTab = view:GetChild("btn_quitMyfamilyTab") self.btn_chatRoom = view:GetChild("btn_chatRoom") self.list_family = view:GetChild("list_family") self.cChatRoomRedPoint = self.btn_chatRoom:GetController("cRedPoint") self:InitCloseClick() --[[ fgCtr:FG_GroupList(function(res) print("获取所有圈信息") pt(res) local groups = res.Data.groups if #groups > 0 then self.familyType.selectedIndex = 1 self:ConnetFamily(1, groups, true) else self:JoinFamily(true) self.btn_chatRoom.visible = false end end) ]] -------绑定成员战绩按钮 view:GetChild('btn_family_record').onClick:Set(function() self._child_familyNumberRecord = FamilyNumberRecord.New(self, 1) self.lastType = 1 end) view:GetChild('btn_person_record').onClick:Set(function() self._child_familyNumberRecord = FamilyNumberRecord.New(self, 2) self.lastType = 1 end) if FamilyEventView then self._familyEventView = FamilyEventView.new(self) self._familyEventView:_evtAddPlay() end -------绑定我的亲友圈按钮 view:GetChild('btn_myfamily').onClick:Set(function() self.cMyfamilyList.selectedIndex = 1 end) self.btn_myFamilyList.onClick:Set(function() self.cMyfamilyList.selectedIndex = 0 --FamilyMyFamily:TryShow(self) FamilyMyfamilyList:TryShow(self) end) self.btn_creatFamily.onClick:Set(function() self.cMyfamilyList.selectedIndex = 0 self:CreateFamily() end) self.btn_joinFamily.onClick:Set(function() self.cMyfamilyList.selectedIndex = 0 self:CreateFamily() end) self.btn_quitMyfamilyTab.onClick:Set(function() self.cMyfamilyList.selectedIndex = 0 end) self.btn_chatRoom.onClick:Set(function() --local view = FamilyChatRoom.New() --view:Show() --FamilyChatRoom:Show(self.ChatRoomData) self.com_FamilyChatRoom:Show() end) self.list_family.itemRenderer = function(i, obj) local j = i + 1 local group = DataManager.groups.groupList[j] obj:GetChild("title").emojies = EmojiDitc.EmojiesDitc obj.text = Utils.TextOmit(group.name, 6, "...") obj.onClick:Add(function() if self._group ~= nil and group.id == self._group.id then --ViewUtil.ShowBannerOnScreenCenter("已在家族中") return end self.curGroupIndex = j self:ConnetFamily(j, DataManager.groups.groupList) end) end self.familyType.selectedIndex = 1 end function M:Reflash() local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_GroupList(function(res) print("获取所有圈信息") pt(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode) end local groups = res.Data.groups if #groups > 0 then --self:ConnetFamily(1, groups) self.list_family.numItems = #DataManager.groups.groupList local chooseIndex = 1 local lastID = Utils.LoadLocalFile("Family_lastID" .. DataManager.SelfUser.account_id) if lastID then lastID = tonumber(lastID) for i = 1, #DataManager.groups.groupList do if lastID == DataManager.groups.groupList[i].id then chooseIndex = i end end end local btn = self.list_family:GetChildAt(chooseIndex - 1) btn.onClick:Call() else self:JoinFamily(true) self.btn_chatRoom.visible = false end end) end function M:InitCloseClick() self.btn_close.onClick:Set(function() print("lingmeng InitCloseClick", self.lastType, self.familyType.selectedIndex) if not self.lastType or self.familyType.selectedIndex == 1 then if self._group then FamilyOffline(self._group.id, self) end self._mgr_ctr:disconnect() ControllerManager.ChangeController(LoddyController) ViewManager.ChangeView(ViewManager.View_Lobby) else self.familyType.selectedIndex = self.lastType if self.lastType == 3 then self.lastType = 1 end end end) end function M:ShareWx() local familyInviteFamilyView = FamilyInviteFamilyView.new() familyInviteFamilyView:Show() end function M:MsgView() local view = FamilyMsgRecord.New() view:Show(self._group.id) end function M:MsgDiamondView() local view = FamilyMsgDiamond.New({ groupId = self._group.id }) view:Show() end function M:SetIsOpenChatRoom() local mgr_ctr = ControllerManager.GetController(GroupMgrController) if self._group.isOpenChatRoom == 1 then mgr_ctr:FG_CLOSE_ISOPEN_CHATROOM(self._group.id, function(res) print("不允许成员可以查看聊天室") pt(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode) return end self._group.isOpenChatRoom = 0 self:RefalshMoreBtn() end) elseif self._group.isOpenChatRoom == 0 then mgr_ctr:FG_OPEN_ISOPEN_CHATROOM(self._group.id, function(res) print("允许成员可以查看聊天室") pt(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode) return end self._group.isOpenChatRoom = 1 self:RefalshMoreBtn() end) end end function M:SetCanWatch() local value = 1 if self._group.isWatch == 1 then value = 0 elseif self._group.isWatch == 0 then value = 1 end local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:SetCanWatch(self._group.id, value, function(res) print("设置是否观战") pt(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode) return end self._group.isWatch = value self:RefalshMoreBtn() -- local fgCtr = ControllerManager.GetController(NewGroupController) self:UpdateFamilyRoom(fgCtr, self._group.id) end) end function M:FamilyRecord() if not self._ViewChild_Record or not self._ViewChild_Record.ShouRanks then self._ViewChild_Record = FamilyRecord.New(self, self._group.id) return end self._ViewChild_Record:ShouRanks() end function M:CreateFamily(frist) self.familyType.selectedIndex = 3 if type(frist) ~= "boolean" or not frist then self.lastType = 1 end self._view:GetController('createOrJoin').selectedIndex = 0 self._child_familyJoinAndCreate = FamilyJoinAndCreate:init(self) end function M:JoinFamily(frist) self.familyType.selectedIndex = 3 if type(frist) ~= "boolean" or not frist then self.lastType = 1 end self._view:GetController('createOrJoin').selectedIndex = 1 self._child_familyJoinAndCreate = FamilyJoinAndCreate:init(self) end function M:PlayEdit() --self.familyType.selectedIndex = 2 --self.lastType = 1 local view = PlayEditView.New() view:Show(self._group.id) end function M:OpenMyFamily(groupId) FamilyMyFamily:TryShow(groupId, self) end function M:AllNumber() local view = FamilyAllNumbers.new() view:Show(self._group) end function M:AuditNumber() local view = FamilyAuditNumber.new(self) view:Show(self._group) --self.lastType = 1 --self._child_familyAuditNumber:Show() --self._child_familyAuditNumber = FamilyAuditNumber.new(self) end function M:UpdataRedPointAuditNumber(obj) if self._group.joins == nil or self._group.joins <= 0 then obj:GetController("cRedPoint").selectedIndex = 0 return end local redPointNum = self._group.joins if redPointNum > 99 then redPointNum = "99+" end obj:GetController("cRedPoint").selectedIndex = 1 obj:GetChild("tex_redPoint").text = redPointNum end function M:ShowShop() --self._child_familyLobbyShopView = LobbyShopView.new(self, self._group.id) --self._child_familyLobbyShopView:Show() FamilyRoomCard:TryShow(self._group.id) end function M:ShowAllRank() if not self._ViewChild_AllRank or not self._ViewChild_AllRank.ShouRanks then self._ViewChild_AllRank = FamilAllRank.New(self, self._group.id) return end self._ViewChild_AllRank:ShouRanks() end function M:OpenAllNumber(group) local view = FamilyAllNumbers.new() view:Show(group) end function M:MoreBtn() local ctr_more = self._view:GetController('moreBtn') self._view:GetChild('bg_moreBtnBack').onClick:Set(function() ctr_more.selectedIndex = 0 end) ctr_more.selectedIndex = 1 self:ChangeMore() self:RefalshMoreBtn() end function M:BanFamily() local fgCtr = ControllerManager.GetController(NewGroupController) local data = { id = self._group.id, ban = not self._group.ban } fgCtr:FG_UpdateGroupInfo(data, function(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "一键打样失败") else self:ReflashBan() self:RefalshMoreBtn() end end) end function M:ReflashBan() self._view:GetController('familyBan').selectedIndex = self._group.ban and 1 or 0 end function M:BanDeskmate() self.FamilyBanDesk = FamilyBanDesk:TryShow(self) end function M:ReflashMember() self.members = SortMembers(self._group.members) local list_familyNumber = self._view:GetChild('list_familyNumber') if list_familyNumber.itemRenderer == nil then return end if list_familyNumber.numItems == #self._group.members then list_familyNumber:RefreshVirtualList() else list_familyNumber.numItems = #self._group.members end end function M:ChangeNumber(fgCtr, group_id, limit, num, minus_only, sort_type) local list_familyNumber = self._view:GetChild('list_familyNumber') list_familyNumber:SetVirtual() fgCtr:FG_GroupMembers12(group_id, limit, num, 2, 2, function(res) self.members = SortMembers(self._group.members) --local members = self._group.members print("FG_GroupMembers12") pt(self._group.members) --ViewUtil:CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败") else list_familyNumber.itemRenderer = function(index, obj) local player = self.members[index + 1] obj:GetChild('title').emojies = EmojiDitc.EmojiesDitc obj:GetChild('title').text = Utils.TextOmit(player.nick, 5, "...") local state = 0 if player.online == 1 and player.playing == "startPlaying" then state = 2 elseif player.online == 1 and player.playing ~= "startPlaying" then state = 1 elseif player.online == 0 then state = 0 end obj:GetController('type').selectedIndex = state local loader_icon = obj:GetChild("btn_head"):GetChild("icon") ImageLoad.Load(player.portrait, loader_icon) end --list_familyNumber.numItems = #self._group.members list_familyNumber.numItems = #self.members self:ChangeOther() return 1 end end) return 0 end function M:EnterGroup(fgCtr, id) fgCtr:FG_EnterGroup(id, function(res) ViewUtil:CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取房间列表列表失败") else self:OnEnterGroupCallBack() return 1 end end) return 0 end function M:OnEnterGroupCallBack() local fgCtr = ControllerManager.GetController(NewGroupController) self._view:GetController('familyBan').selectedIndex = self._group.ban and 1 or 0 FamilyOnline(self._group.id, self) ViewUtil.ShowModalWait(self._root_view, "正在加载成员列表中......") self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num, false, 1) ViewUtil.ShowModalWait(self._root_view, "正在加载房间列表中......") self:UpdateFamilyRoom(fgCtr, self._group.id) --ViewUtil.ShowModalWait(self._root_view, "正在加载亲友圈权限中......") --self:ChangeOther() ViewUtil.CloseModalWait() self:ReflashChatRoomRedPoint() ReflashJoinsRedPoint(self) self:ReflashChatRoomBtn() fgCtr:FG_Get_Online_Member(self._group.id, function(res) end) fgCtr:FG_Get_Apply_Count(function(res) print("收到获得申请列表的数量") pt(res) if res.ReturnCode ~= 0 then return end self:ChangeOther() end) end function M:UpdateFamilyRoom(fgCtr, id) local list_room = self._view:GetChild('list_room') list_room:SetVirtual() --local list_gamePlay = self._view:GetChild('list_gamePlay') --list_gamePlay:SetVirtual() local playList = self._group.playList local roomList = self._group.rooms self._view:GetChild('n364').text = string.format("已开启%s桌游戏", #roomList) local roomCtr = ControllerManager.GetController(RoomController) --先对房间进行一波分类 local readyRoom = {} local startRoom = {} for k, v in pairs(roomList) do table.insert(v.status == 0 and readyRoom or startRoom, v) end local all_num = #playList + #roomList list_room.itemRenderer = function(index, obj) if index < #readyRoom then local newIndex = index + 1 local playInfo = self._group:getPlay(roomList[newIndex].pid) self:FillSameRoomInfo(obj, 1, playInfo) local plist = readyRoom[newIndex].plist local insertName = "" for i = 1, 4 do if i <= #plist then ImageLoad.Load(plist[i].portrait, obj:GetChild(string.format("player%d", i))._iconObject) insertName = string.format("%s、%s", plist[i].nick, insertName) else local btn = obj:GetChild(string.format("player%d", i)) btn:GetChild("icon").url = "ui://Family/btn_mainGameNumberHead" end end obj:GetChild('Label_joinPlayers').text = insertName obj:GetChild('text_playerNum').text = string.format("%s/%s", #plist, playInfo.maxPlayers) obj:GetChild('btn_joinGame').onClick:Set(function() roomCtr:PublicJoinRoom( Protocol.WEB_FG_JOIN_ROOM, readyRoom[newIndex].id, id, function(response) if (response.ReturnCode == -1) then ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1') -- RestartGame() return end if response.ReturnCode ~= 0 then if response.ReturnCode == 10 then self:EnterWitnesss(id, roomList[newIndex].id, playInfo.gameId, roomList[newIndex].pid) return end ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败') -- ViewManager.ChangeView(ViewManager.View_Lobby) else UpdateBeat:Remove(self.OnUpdate, self) FamilyView.lastId = self._group.id ViewManager.ChangeView(ViewManager.View_Main, playInfo.gameId, { _flag_showTip = true }) end end, id, readyRoom[newIndex].pid ) end) obj:GetChild('btn_watch').onClick:Set(function() self:EnterWitnesss(id, readyRoom[newIndex].id, playInfo.gameId, readyRoom[newIndex].pid) end) obj:GetChild('btn_jiesan').onClick:Set(function() self:JieSanRomm(id, readyRoom[newIndex].id) end) elseif index >= all_num - #startRoom then local newIndex = index - #readyRoom - #playList + 1 local playInfo = self._group:getPlay(startRoom[newIndex].pid) self:FillSameRoomInfo(obj, 2, playInfo) local plist = startRoom[newIndex].plist local insertName = "" for i = 1, #plist do ImageLoad.Load(plist[i].portrait, obj:GetChild(string.format("player%d", i))._iconObject) insertName = string.format("%s、%s", plist[i].nick, insertName) end obj:GetChild('Label_joinPlayers').text = insertName obj:GetChild('text_playerNum').text = string.format("%s/%s", playInfo.maxPlayers, playInfo.maxPlayers) obj:GetChild('text_roundNum').text = string.format("%s/%s", startRoom[newIndex].round, startRoom[newIndex].times) obj:GetChild('btn_joinGame').onClick:Clear() obj:GetChild('btn_watch').onClick:Set(function() self:EnterWitnesss(id, startRoom[newIndex].id, playInfo.gameId, startRoom[newIndex].pid) end) obj:GetChild('btn_jiesan').onClick:Set(function() self:JieSanRomm(id, readyRoom[newIndex].id) end) else local newIndex = index - #readyRoom + 1 local playInfo = playList[newIndex] self:FillSameRoomInfo(obj, 0, playInfo) obj:GetChild('Label_joinPlayers').text = "" for i = 1, 4 do local btn = obj:GetChild(string.format("player%d", i)) btn:GetChild("icon").url = "ui://Family/btn_mainGameNumberHead" --ImageLoad.Load("ui://Family/btn_mainGameNumberHead", obj:GetChild(string.format("player%d", i))._iconObject) end obj:GetChild('btn_joinGame').onClick:Set(function() roomCtr:PublicJoinRoom( Protocol.WEB_FG_MATCH_ROOM, "", true, function(response) if (response.ReturnCode == -1) then ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1') -- RestartGame() return end if response.ReturnCode ~= 0 then ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败') -- ViewManager.ChangeView(ViewManager.View_Lobby) return else UpdateBeat:Remove(self.OnUpdate, self) FamilyView.lastId = self._group.id ViewManager.ChangeView(ViewManager.View_Main, playList[newIndex].gameId, { _flag_showTip = true }) end end, id, playList[newIndex].id ) end) obj:GetChild('btn_watch').onClick:Clear() obj:GetChild('btn_jiesan').onClick:Clear() end end -- print("=================================================list_room", list_room, list_room.numItems, all_num) print("游戏中的房间") pt(roomList) --list_room.numItems = all_num if list_room.numItems == all_num then list_room:RefreshVirtualList() else list_room.numItems = all_num end end --房间渲染 function M:FillSameRoomInfo(obj, type, playInfo) local gameId = playInfo.gameId local config = ExtendManager.GetExtendConfig(gameId) local mode = config:GetGameInfo() local gamePlay = mode:LoadConfigToDetail(playInfo.config, playInfo.hpData) obj:GetChild('Label_gameRule').title = gamePlay local roomName = playInfo.name roomName = Utils.TextOmit(roomName, 6, "") obj:GetChild('game_type').emojies = EmojiDitc.EmojiesDitc obj:GetChild('game_type').text = string.format("(%s)%s", playInfo.game_name, roomName) obj:GetChild('btn_joinGame'):GetController('type').selectedIndex = type obj:GetChild('btn_watch').visible = self._group.isWatch and self._group.isWatch == 1 obj:GetChild('btn_jiesan').visible = self._group.lev < 3 obj:GetController('type').selectedIndex = type obj:GetController('num').selectedIndex = playInfo.maxPlayers - 2 end --点击进入观战 function M:EnterWitnesss(groupId, roomId, gameId, pid) local roomCtr = ControllerManager.GetController(RoomController) roomCtr:PublicWitnessRoom( Protocol.WEB_FG_Witness_ROOM, roomId, groupId, function(response) if (response.ReturnCode == -1) then ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1') -- RestartGame() return end if response.ReturnCode ~= 0 then ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败') -- ViewManager.ChangeView(ViewManager.View_Lobby) return else UpdateBeat:Remove(self.OnUpdate, self) FamilyView.lastId = self._group.id ViewManager.ChangeView(ViewManager.View_Witness, gameId) end end, gameId, pid ) end --点击解散房间 function M:JieSanRomm(groupId, roomId) local _curren_msg = MsgWindow.new( self._root_view, '确定要解散该房间吗?', MsgWindow.MsgMode.OkAndCancel ) _curren_msg.onOk:Add( function() ViewUtil.ShowModalWait(self._root_view) local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_RemoveRoom( groupId, roomId, function(res) if self._is_destroy then return end ViewUtil.CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, '删除房间失败!') return end end ) end ) _curren_msg:Show() end function M:ReflashFamilyList() local list_family = self._view:GetChild('list_family') list_family.numItems = #DataManager.groups.groupList end function M:ConnetFamily(index, groups) if self._group then FamilyOffline(self._group.id, self) end UpdateBeat:Remove(self.OnUpdate, self) ViewUtil:CloseModalWait() self._group = DataManager.groups:get(groups[index].id) DataManager.CurrenGroup = self._group self._view:GetChild('text_familyId').text = self._group.id self._view:GetController('lev').selectedIndex = self._group.lev - 1 print("===================================self._group") pt(self._group) self._roomNum = self._group.room_num local fgCtr = ControllerManager.GetController(NewGroupController) ViewUtil.ShowModalWait(self._root_view, "正在进入亲友圈......") Utils.SaveLocalFile("Family_lastID" .. DataManager.SelfUser.account_id, self._group.id) self:EnterGroup(fgCtr, self._group.id) --[[ ViewUtil.ShowModalWait(self._root_view, "正在加载亲友圈权限中......") self:ChangeOther(tonumber(self._group.lev) + 1) allLoad = 1 ViewUtil.ShowModalWait(self._root_view, "正在加载成员列表中......") allLoad = allLoad + self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num, false, 1) ViewUtil.ShowModalWait(self._root_view, "正在加载房间列表中......") allLoad = allLoad + self:EnterGroup(fgCtr, self._group.id) ]] UpdateBeat:Add(self.OnUpdate, self) if self._group.isOpenChatRoom == 1 then self.btn_chatRoom.visible = true else self.btn_chatRoom.visible = false end end -- function M:Destroy() -- UpdateBeat:Remove(self.OnUpdate, self) -- BaseView:Destroy() -- end function M:OnUpdate() local fgCtr = ControllerManager.GetController(NewGroupController) local newTime = os.time() -- --12001事件 local func = self._mgr_ctr:PopEvent() if (func ~= nil) then local success, result = pcall(func) if success then else print("witness error") print(result) -- self._gamectr = ControllerManager.GetController(GameController) -- if self._gamectr then -- self._gamectr:ResetConnect() -- end end --func() end if self._group.update_room then -- if self._roomNum == self._group.room_num then -- for i = 1, self._group.room_num do -- if self._group.rooms[i] and #self._group.rooms[i].plist == 0 then -- self._group.update_room = false -- fgCtr:FG_RemoveRoom( -- self._group.id, -- self._group.rooms[i].id, -- function(res) -- if res.ReturnCode ~= 0 then -- ViewUtil.ErrorTip(res.ReturnCode, string.format('删除房间-%s失败!', self._group.rooms[i].id)) -- else -- self._roomNum = #self._group.rooms -- end -- end -- ) -- end -- end -- else -- self._group.update_room = false -- -- self._group.update_room = false -- end -- if self._fristRoom then self._group.update_room = false -- self._fristRoom = true -- end -- -- print("====================================UpdateFamilyRoom", fgCtr, self._group.id) self:UpdateFamilyRoom(fgCtr, self._group.id) end local HeartbeatTime = 10 if newTime - self.lastTime > HeartbeatTime then fgCtr:FG_SetFamilyHeartbeat(self._group.id, DataManager.SelfUser.account_id, function(res) print(res) end) self.lastTime = newTime if self._view:GetChild('list_familyNumber').itemRenderer then self.members = SortMembers(self._group.members) --local members = self._group.members self._view:GetChild('list_familyNumber').numItems = #self.members end end end local IDENTITY_LIST = { { level = 0, --圈主 }, { level = 1, --副圈主 otherList = { { name = "邀请朋友", Fct = M.ShareWx }, { name = "游戏记录", Fct = M.FamilyRecord }, { name = "玩法管理", Fct = M.PlayEdit }, { name = "充值房卡", Fct = M.ShowShop }, { name = "申请消息", Fct = M.AuditNumber, redPointFct = M.UpdataRedPointAuditNumber --开启红点 }, { name = "查看成员", Fct = M.AllNumber }, { name = "创建亲友圈", Fct = M.CreateFamily }, { name = "高级选项", Fct = M.MoreBtn }, { name = "亲友圈排行榜", Fct = M.ShowAllRank } } }, { level = 2, --管理员 otherList = { { name = "邀请朋友", Fct = M.ShareWx }, { name = "游戏记录", Fct = M.FamilyRecord }, { name = "玩法管理", Fct = M.PlayEdit }, { name = "充值房卡", Fct = M.ShowShop }, { name = "申请消息", Fct = M.AuditNumber, redPointFct = M.UpdataRedPointAuditNumber --开启红点 }, { name = "查看成员", Fct = M.AllNumber }, { name = "创建亲友圈", Fct = M.CreateFamily }, { name = "高级选项", Fct = M.MoreBtn }, { name = "亲友圈排行榜", Fct = M.ShowAllRank } } }, { level = 3, --成员 otherList = { { name = "邀请朋友", Fct = M.ShareWx }, { name = "创建亲友圈", Fct = M.CreateFamily }, { name = "加入亲友圈", Fct = M.JoinFamily }, } }, } local MORE_LIST = { { name = "一键打样", Fct = M.BanFamily }, { name = "消息记录", Fct = M.MsgView }, { name = "房卡记录", Fct = M.MsgDiamondView }, { name = "禁止同桌", Fct = M.BanDeskmate }, { name = "关闭聊天室", Fct = M.SetIsOpenChatRoom }, { name = "关闭旁观", Fct = M.SetCanWatch }, } function M:ChangeOther() local i = tonumber(self._group.lev) + 1 local otherList = IDENTITY_LIST[i].otherList local list_other = self._view:GetChild('list_other') self._lev = i list_other:SetVirtual() list_other.itemRenderer = function(index, obj) local cfg = otherList[index + 1] obj:GetChild('title').text = cfg.name obj.onClick:Set(handler(self, cfg.Fct)) --print("cfg.redPointFct", cfg.redPointFct) if cfg.redPointFct then cfg.redPointFct(self, obj) end end list_other.numItems = #otherList end function M:ChangeMore() local moreList = MORE_LIST local list_other = self._view:GetChild('list_more') list_other:SetVirtual() list_other.itemRenderer = function(index, obj) local cfg = moreList[index + 1] obj:GetChild('title').text = cfg.name obj.onClick:Set(handler(self, cfg.Fct)) obj.onClick:Add(function() self._view:GetController('moreBtn').selectedIndex = 0 end) --print("cfg.redPointFct", cfg.redPointFct) if cfg.redPointFct then cfg.redPointFct(self, obj) end end list_other.numItems = #moreList end function M:RefalshMoreBtn() -- 有空优化吧 local tex = "" if self._group.isOpenChatRoom == 1 then tex = "关闭聊天室" elseif self._group.isOpenChatRoom == 0 then tex = "打开聊天室" end MORE_LIST[4].name = tex local tex = "" if self._group.isWatch == 1 then tex = "关闭观战" elseif self._group.isWatch == 0 then tex = "打开观战" end MORE_LIST[5].name = tex local tex = "" if self._group.ban then tex = "一键开启" else tex = "一键打烊" end MORE_LIST[1].name = tex self:ChangeMore() end function M:ReflashChatRoomRedPoint() self.cChatRoomRedPoint.selectedIndex = 0 if self._group.messageCount > 0 then self.cChatRoomRedPoint.selectedIndex = 1 end local tex = self._group.messageCount if self._group.messageCount > 99 then tex = "99+" end local tex_redPoint = self.btn_chatRoom:GetChild("tex_redPoint") tex_redPoint.text = tex end function M:Show() Broadcast.AddListener(BroadcastEvent.OnJoinsChange, ReflashJoinsRedPoint, self) Broadcast.AddListener(BroadcastEvent.OnMemberChange, self.ReflashMember, self) Broadcast.AddListener(BroadcastEvent.OnOutFamily, self.Reflash, self) self._familyEventView:AddListener() self:Reflash() BaseView.Show(self) end function M:Close() Broadcast.RemoveListener(BroadcastEvent.OnJoinsChange, ReflashJoinsRedPoint) Broadcast.RemoveListener(BroadcastEvent.OnMemberChange, self.ReflashMember) Broadcast.RemoveListener(BroadcastEvent.OnOutFamily, self.Reflash) print("家族界面退出") self._familyEventView:RemoveAll() BaseView.Close(self) end function M:ReflashChatRoomBtn() self.btn_chatRoom.visible = true if self._group.lev == 3 and self._group.isOpenChatRoom == 0 then self.btn_chatRoom.visible = false end end return M