From 84b9f60fdeb30a06e56d0b8c329c58fe5de373e5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-7R8JEQQ\\k" <1076390229@qq.com> Date: Thu, 24 Jul 2025 21:41:05 +0800 Subject: [PATCH] =?UTF-8?q?15=E7=A7=92=E5=BF=83=E8=B7=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Game/Controller/GroupMgrController.lua | 32 +++++++++++++++ .../Game/View/Family/FamilyEventView.lua | 40 ++++++++++++++++++- .../base_project/Game/View/FamilyView.lua | 38 ++++++++++++++---- .../Game/View/NewGroup/GroupInfoView.lua | 2 +- 4 files changed, 102 insertions(+), 10 deletions(-) diff --git a/lua_probject/base_project/Game/Controller/GroupMgrController.lua b/lua_probject/base_project/Game/Controller/GroupMgrController.lua index 4c806cde..ee41e2e4 100644 --- a/lua_probject/base_project/Game/Controller/GroupMgrController.lua +++ b/lua_probject/base_project/Game/Controller/GroupMgrController.lua @@ -20,6 +20,7 @@ GroupMgrEvent = { OnMemberState = "OnMemberState", Onpush_assistant = "Onpush_assistant", OnFamilyReflash = "OnFamilyReflash", + OnFamilyRoomReflash = "OnFamilyRoomReflash", } GroupMgrController = { @@ -245,6 +246,7 @@ function M:OnEvtUpdateRoom(evt_data) end end group.update_room = true + DispatchEvent(self._dispatcher, GroupMgrEvent.OnFamilyRoomReflash, self.groupId) end function M:OnEvtUpdatePlayerInfo(evt_data) @@ -430,6 +432,36 @@ end function M:FG_Data_Member_State(evt_data) print("收到成员状态推送") pt(evt_data) + local offlineUserId = evt_data.offlineUserId + local onlineUserId = evt_data.onlineUserId + local playingUserId = evt_data.playingUserId + + local group = DataManager.groups:get(self.groupId) + + for _, uid in pairs(offlineUserId) do + local player = group.memberMap[uid] + if player then + player.online = 0 + end + end + + for _, uid in pairs(onlineUserId) do + local player = group.memberMap[uid] + if player then + player.online = 1 + end + end + + for _, p in pairs(group.memberMap) do + p.playing = "stopPlaying" + end + for _, uid in pairs(playingUserId) do + local player = group.memberMap[uid] + if player then + player.playing = "startPlaying" + end + end + DispatchEvent(self._dispatcher, GroupMgrEvent.OnMemberState, evt_data) end diff --git a/lua_probject/base_project/Game/View/Family/FamilyEventView.lua b/lua_probject/base_project/Game/View/Family/FamilyEventView.lua index 5e313ff0..288cbf44 100644 --- a/lua_probject/base_project/Game/View/Family/FamilyEventView.lua +++ b/lua_probject/base_project/Game/View/Family/FamilyEventView.lua @@ -26,8 +26,9 @@ function FamilyEventView.new(root) mgr_ctr:AddEventListener(GroupMgrEvent.OnNewApply, handler(self, self._evtOnNewApply)) mgr_ctr:AddEventListener(GroupMgrEvent.OnNewRecord, handler(self, self._evtOnNewRecord)) mgr_ctr:AddEventListener(GroupMgrEvent.Onpush_assistant, handler(self, self._evtOnPush_assistant)) - --mgr_ctr:AddEventListener(GroupMgrEvent.OnMemberState, handler(self, self._evtOnMemberState)) + mgr_ctr:AddEventListener(GroupMgrEvent.OnMemberState, handler(self, self._evtOnMemberState)) mgr_ctr:AddEventListener(GroupMgrEvent.OnFamilyReflash, handler(self, self._evtOnPush_assistant)) + mgr_ctr:AddEventListener(GroupMgrEvent.OnFamilyRoomReflash, handler(self, self._evtOnFamilyRoomReflash)) return self end @@ -48,6 +49,9 @@ function M:RemoveAll() mgr_ctr:RemoveEventListener(GroupMgrEvent.ChatRoomData, handler(self, self._evtChatRoomData)) mgr_ctr:RemoveEventListener(GroupMgrEvent.OnNewApply, handler(self, self._evtOnNewApply)) mgr_ctr:RemoveEventListener(GroupMgrEvent.OnNewRecord, handler(self, self._evtOnNewRecord)) + mgr_ctr:RemoveEventListener(GroupMgrEvent.Onpush_assistant, handler(self, self._evtOnPush_assistant)) + mgr_ctr:RemoveEventListener(GroupMgrEvent.OnMemberState, handler(self, self._evtOnMemberState)) + mgr_ctr:RemoveEventListener(GroupMgrEvent.OnFamilyReflash, handler(self, self._evtOnFamilyRoomReflash)) end function M:_evtAddPlay(...) @@ -92,6 +96,11 @@ end function M:_evtUpdateGroup(...) local arg = { ... } + local view = ViewManager.GetCurrenView() + if view.class ~= "FamilyMainView" then + return + end + view:ReflashFamilyList() print("family event _evtUpdateGroup") end @@ -187,6 +196,12 @@ function M:_evtOnNewRecord(...) end function M:_evtOnMemberState(...) + local view = ViewManager.GetCurrenView() + if view.class ~= "FamilyMainView" then + return + end + view:ReflashMember(...) + --[[ local view = ViewManager.GetCurrenView() if view.class ~= "FamilyMainView" then return @@ -201,6 +216,11 @@ function M:_evtOnMemberState(...) for _, player in pairs(arg[1].onlineUserId) do group.memberMap[player].online = 0 end + + for _, player in pairs(arg[1].playingUserId) do + group.memberMap[player].playing = "startPlaying" + end + ]] end function M:_evtOnPush_assistant(...) @@ -237,4 +257,22 @@ function M:_evtOnFamilyReflash(...) end end +function M:_evtOnFamilyRoomReflash(...) + local arg = { ... } + print("_evtOnFamilyRoomReflash") + pt(arg) + local groupId = arg[1] + + local view = ViewManager.GetCurrenView() + if view.class ~= "FamilyMainView" then + return + end + + if groupId ~= view._group.id then + return + end + + view:UpdateFamilyRoom(nil, groupId) +end + return M diff --git a/lua_probject/base_project/Game/View/FamilyView.lua b/lua_probject/base_project/Game/View/FamilyView.lua index 75a15159..6fe99888 100644 --- a/lua_probject/base_project/Game/View/FamilyView.lua +++ b/lua_probject/base_project/Game/View/FamilyView.lua @@ -24,14 +24,12 @@ FamilyView = {} local M = FamilyView local function FamilyOnline(groupId, self) - --localfgCtr = ControllerManager.GetController(GroupMgrController) self._mgr_ctr:FG_Get_Online_Member(groupId, function(res) end) end local function FamilyOffline(groupId, self) - --local fgCtr = ControllerManager.GetController(GroupMgrController) self._mgr_ctr:FG_Get_Offline_Member(groupId, function(res) end) @@ -347,6 +345,19 @@ function M:BanDeskmate() self.FamilyBanDesk = FamilyBanDesk:TryShow(self) end +function M:ReflashMember() + local list_familyNumber = self._view:GetChild('list_familyNumber') + if list_familyNumber.itemRenderer == nil then + + 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() @@ -405,7 +416,6 @@ function M:OnEnterGroupCallBack() group.ApplyRedPoint = ApplyRp. end ]] - end) self._view:GetController('familyBan').selectedIndex = self._group.ban and 1 or 0 @@ -626,8 +636,20 @@ function M:UpdateFamilyRoom(fgCtr, id) ]] local all_num = #playList + #roomList -- print("=================================================list_room", list_room, list_room.numItems, all_num) - pt(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:ReflashFamilyList() + local list_family = self._view:GetChild('list_family') + list_family.numItems = #DataManager.groups.groupList end function M:ConnetFamily(index, groups, isCreate) @@ -749,8 +771,8 @@ function M:OnUpdate() -- -- print("====================================UpdateFamilyRoom", fgCtr, self._group.id) self:UpdateFamilyRoom(fgCtr, self._group.id) end - --[[ - local HeartbeatTime = 3 + + local HeartbeatTime = 15 if newTime - self.lastTime > HeartbeatTime then fgCtr:FG_SetFamilyHeartbeat(self._group.id, DataManager.SelfUser.account_id, function(res) print(res) @@ -760,7 +782,7 @@ function M:OnUpdate() self._view:GetChild('list_familyNumber').numItems = #self._group.members end end - ]] + end local IDENTITY_LIST = { diff --git a/lua_probject/base_project/Game/View/NewGroup/GroupInfoView.lua b/lua_probject/base_project/Game/View/NewGroup/GroupInfoView.lua index 60402ecc..91997c3f 100644 --- a/lua_probject/base_project/Game/View/NewGroup/GroupInfoView.lua +++ b/lua_probject/base_project/Game/View/NewGroup/GroupInfoView.lua @@ -1731,7 +1731,7 @@ function M:__loadGroupData() mgr_ctr:AddEventListener(GroupMgrEvent.UpdatePlayerInfo, handler(self, self._evtUpdatePlayerInfo)) -- mgr_ctr:AddEventListener(GroupMgrEvent.UpdateMessage, handler(self,self._evtUpdateMsg)) mgr_ctr:AddEventListener(GroupMgrEvent.BeInvited, handler(self, self._evtInvited)) - mgr_ctr:AddEventListener(GroupMgrEvent.UpdateGroup, handler(self, self._evtUpdateGroup)) + -- mgr_ctr:AddEventListener(GroupMgrEvent.UpdateGroup, handler(self, self._evtUpdateGroup)) mgr_ctr:AddEventListener(GroupMgrEvent.NewMailTip, handler(self, self._evtNewMailTip)) local ctr_manager = self._view:GetController('manager')